『机器学习』MLSys提前看 | 机器学习的分布式优化方法( 九 )


FedAvg 中有一个值得注意的问题是:FedAvg 中 E 的选择对全局目标函数的收敛性起着重要作用 。 一方面 , E 越大就意味着存在较多的局部计算和较少的设备间通信 , 这能够极大地提高全局目标函数的整体收敛速度 。 但是从另外一个角度分析 , 对于不同的(异质的)局部目标 Fk , 设置较大的 E 值 , 却可能导致每个设备都致力于实现其局部目标函数的最优 , 而不是全局目标函数的最优 , 这反而会影响全局目标函数的收敛甚至导致发散 。
本文提出的框架 FedProx 与 FedAvg 类似 , 它在每一轮中选择一个参与更新的设备子集 , 执行本地更新 , 然后对这些更新进行平均化处理以形成全局更新 。 然而 , FedProx 做了一些简单而关键的修改 , 使得其具有收敛性保证 。
1、容忍部分工作(Tolerating partial work)
在分布式工作的联邦学习网络中 , 不同的设备资源不同 , 例如硬件条件、网络环境、电池水平等 , 因此不可能要求设备完成一样多的工作 。 在 FedProx 中 , 我们通过允许基于可用系统资源的设备在本地执行可变工作量的工作来改进 FedAvg , 最后聚合从各个设备发出的「部分」解决方案(与完全删除这些设备的策略是不同的) 。 此时 , FedProx 执行的是 (γ_k)^t-不准确解 。 (γ_k)^t-不准确解测量在第 t 轮时为解决设备 k 上的局部子问题而执行的局部计算量 。 局部优化过程的迭代次数为 (γ_k)^t 的近似 。 通过引入 (γ_k)^t-不准确解 , 能够有效扩展 FedAvg 的收敛结果 , 从而解决与系统异质性相关的问题 。
2、修正项(Proximal term)
允许联邦学习框架具备灵活的性能的关键是有针对性的实现每个设备中的局部目标函数优化 , 这就要求必须允许设备能够根据每次执行的本地迭代次数(与更精确的本地解决方案相对应的附加本地迭代)自动调整本地计算量与通信量 。
向局部目标函数中增加一个修正项 , 以有效地限定可变化的局部更新的影响 。 特别地 , 不是仅仅最小化局部函数 Fk , 而是令设备 k 使用它的局部优化算子来近似地最小化以下目标函数 h_k:

『机器学习』MLSys提前看 | 机器学习的分布式优化方法
本文插图

增加修正项有两个有益效果:(1)通过使得局部的更新更加接近于初始(全局)模型来解决联邦学习框架中不同设备间的统计异质性问题 , 而不需要手动设置局部 E 的大小 。 (2)它允许安全地整合各个局部设备由于系统异质性所导致的可变数量的本地工作 。
完整的 FedProx 工作流程如下:
『机器学习』MLSys提前看 | 机器学习的分布式优化方法
本文插图

最后 , 作者提到 , FedProx 只是对 FedAvg 进行了很小的修改 , 这使得我们能够对目前已经出现的大量的 FedAvg 方法/框架进行推理 , 将本文的改进方法与相关的方法/框架进行集成 。 特别的 , 也可以认为 FedAvg 是 FedProx 的一种特殊情况 , (1)μ=0(2)局部优化使用 SGD(3)跨设备和更新轮次(即 , 不存在系统概念)的常数γ(对应于本地 epoch 的数量) 。
【实验分析】
本文使用了合成数据和真实数据库(MINIST、FEMNIST、Shakespeare、Sent140)进行实验 , 使用 TensorFlow , 以及 SGD 作为局部优化算子 。 对于每个数据集 , 调整 FedAvg 上的学习率(E=1 且不存在系统异质性) , 并对该数据集上的所有实验使用相同的学习率 。 对于所有数据集上的所有实验 , 将所选设备的数量设置为 10 。 基于全局目标函数 f(w) 衡量最终效果 。 图 14 给出在不同数据库中关于异质网络中收敛性的实验结果 。 通过比较 FedAvg 和 FedProx(μ=0) , 在存在系统异质性的情况下 , 允许各个设备执行可变的工作量有助于整体目标函数的收敛 。 将 FedProx(μ=0)与 FedProx(μ>0)进行比较 , 证明了所增加的修正项的优点 。 μ>0 的 FedProx 具有更稳定的收敛性 , 此外能够在存在系统异质性(50% 和 90% 离散)和不存在系统异质性(0% 离散)的情况下收敛 。


推荐阅读