统计异质性,或非独立同分布 (Non-IID) 数据,是联邦学习场景中的一个常见特点。当客户端数据 $P_k(x, y)$ 在整个网络中差异很大时,标准的联邦平均 (FedAvg) 算法可能会遇到困难。每个客户端根据其本地数据优化模型,这可能将模型参数拉向冲突的方向。这种现象,常被称为“客户端漂移”,会减慢全局模型的收敛速度,有时还会导致最终模型表现次优,在平均客户端分布上表现不佳,甚至对特定客户端也是如此。我们来看看几种为减轻非独立同分布数据分布的不利影响而制定的策略。改进的聚合算法虽然第二章详细介绍了几种先进的聚合算法,这里值得再次思考 为什么 其中一些在非独立同分布环境下特别有效。FedProx: 回想一下,FedProx 在本地客户端目标函数中引入一个近端项。在本地训练期间,客户端最小化: $$ \min_{w_k} F_k(w_k) + \frac{\mu}{2} | w_k - w^t |^2 $$ 这里,$w^t$ 是第 $t$ 轮的当前全局模型,$w_k$ 是客户端 $k$ 正在训练的本地模型。项 $\frac{\mu}{2} | w_k - w^t |^2$ 对本地模型 $w_k$ 与全局模型 $w^t$ 之间的大偏差进行惩罚。这通过使本地更新更符合全局目标来直接抵消客户端漂移,尤其在本地数据 $P_k$ 与全局分布 $P$ 显著不同时很有用。超参数 $\mu$ 控制这种正则化的强度。SCAFFOLD: SCAFFOLD 以不同的方式处理客户端漂移。它在客户端和服务器两端使用控制变量来纠正本地更新方向和全局更新方向之间的差异。通过明确地估计和补偿这种“漂移”,SCAFFOLD 旨在实现更快的收敛和可能更高的异构环境下的准确性,尽管它因传输控制变量而带来稍多的通信开销。这些算法修改了核心优化过程,使其对源于非独立同分布数据的冲突梯度更具适应性。数据共享和增强策略另一种方法涉及直接操作数据,尽管由于隐私考量需要谨慎。共享小型公共数据集: 一种策略是在服务器端存储一个小的、全局可用的数据集(可能与任务相关但不含敏感用户信息)。此数据集可在每一轮中与参与客户端共享。客户端可以在训练期间将此数据与其本地数据一起使用。接触到更“全局”的视角可以规范本地训练并减少纯粹本地数据引起的差异。挑战在于找到或创建一个合适的、安全且有效的公共数据集。服务器端数据生成或代理数据: 如果没有公共数据集,服务器可能会生成合成数据或使用非敏感的代理数据集,该数据集捕获了整体分布的某些方面。服务器持有的数据有时可用于指导聚合过程,甚至可以在服务器端对全局模型进行微调。客户端数据增强: 客户端可以人工扩充其本地数据集,使用与数据模态相关的数据增强技术(例如,图像旋转、裁剪、为图像添加噪声;文本的逆向翻译或同义词替换)。尽管这不改变底层分布 $P_k$,但它有时能使本地训练过程更稳定,并且不那么容易过度拟合有限本地数据的特定情况,间接有助于泛化并可能减少漂移。任何数据共享方法的主要顾虑是隐私。即使共享看似无害的公共数据也需要仔细考虑,因为将其与本地训练结合可能无意中泄露关于本地敏感数据的信息。如果需要共享大量数据,通信成本也会增加。本地适应和微调认识到单一全局模型可能天生难以对每个拥有独特数据的客户端都表现最佳,一种策略是侧重于提升模型 对客户端 的效用。在标准联邦训练过程得到全局模型 $w^G$ 后,客户端可以使用其自身数据执行额外的本地微调步骤,然后将模型用于推理。 $$ w_k^* = \text{微调}(w^G, \text{数据}_k) $$ 这不直接改善 全局 模型在主要联邦学习过程中处理非独立同分布数据时的收敛,但它确保客户端 $k$ 使用的最终模型 $w_k^*$ 更适应其特定的数据分布 $P_k$。这弥合了走向个性化的差距,我们将在本章后面进一步讨论这一点。权衡是联邦训练完成后客户端设备上所需的额外计算。客户端漂移示意图FedAvg 在处理非独立同分布数据时遇到的核心问题是,不同客户端的局部最优解($w_k^* = \arg\min F_k(w)$)可能彼此之间以及与全局最优解($w^* = \arg\min F(w)$)有很大不同。因此,局部梯度步长 $\nabla F_k(w)$ 可以将模型拉向不同的方向。digraph ClientDrift { rankdir="LR"; node [shape=circle, style=filled, fontname="sans-serif", fontsize=10]; edge [fontname="sans-serif", fontsize=9]; W_global [label="w^t", fillcolor="#adb5bd"]; W_k_opt [label="w_k*", fillcolor="#a5d8ff"]; W_j_opt [label="w_j*", fillcolor="#ffc9c9"]; W_global_opt [label="w*", fillcolor="#ced4da", shape=doublecircle]; subgraph cluster_k { label = "客户端 K 更新"; bgcolor="#e7f5ff"; W_k_local [label="w_k^(t+1)", fillcolor="#74c0fc"]; W_global -> W_k_local [label=" 本地\n 步长", color="#1c7ed6"]; W_k_local -> W_k_opt [label=" 趋向 F_k 最小值", style=dashed, color="#1c7ed6", arrowhead=none]; } subgraph cluster_j { label = "客户端 J 更新"; bgcolor="#fff0f6"; W_j_local [label="w_j^(t+1)", fillcolor="#ffa8a8"]; W_global -> W_j_local [label=" 本地\n 步长", color="#f03e3e"]; W_j_local -> W_j_opt [label=" 趋向 F_j 最小值", style=dashed, color="#f03e3e", arrowhead=none]; } W_global -> W_global_opt [label=" 全局梯度\n 方向 (理想)", style=dashed, color="#495057", constraint=false]; {rank=same; W_k_local; W_j_local;} {rank=min; W_global;} {rank=max; W_k_opt; W_j_opt; W_global_opt;} }客户端漂移示意图。从全局模型 $w^t$ 开始,本地训练使客户端模型 $w_k$ 和 $w_j$ 朝着它们各自的局部最优解($w_k^$ 和 $w_j^$)移动,可能偏离全局最优解 $w^*$。改进的聚合方法旨在调节这些本地更新。预览:聚类联邦学习当客户端数据分布自然地分为不同的组或簇时,强制使用单一全局模型可能具有根本性的局限。聚类联邦学习 (CFL) 是一种替代方法,其中客户端根据其数据或模型更新的相似性进行分组。然后为每个簇训练单独的模型,或根据簇成员资格调整聚合策略。我们将在下一节详细审视 CFL,作为处理严重统计异质性的一种更有条理的方法。选择合适的技术处理非独立同分布数据没有单一的最佳方法;最佳选择取决于异质性的具体性质、隐私要求、通信预算和计算限制。技术主要机制优点缺点FedProx/SCAFFOLD改进的本地优化/聚合改进全局模型收敛,相对通用可能需要超参数调优($\mu$),轻微开销 (SCAFFOLD)数据共享 (公共)规范本地训练可显著提升性能隐私风险,需要合适的公共数据,通信成本本地适应事后客户端微调提升客户端特定性能不改进全局模型收敛,额外客户端计算聚类 (预览)将相似客户端分组为不同客户端组提供更好的模型更复杂的协调,确定簇可能很难理解这些多样的策略能让您在联邦学习系统中面对非独立同分布数据的常见挑战时,选择并实施合适的解决方案。通常,多种技术组合可能得到最佳结果。