论文链接
《FEDERATED OPTIMIZATION IN HETEROGENEOUS NETWORKS》
题目
异构网络中的联合优化
摘要
联邦学习是一种分布式学习范式,它与传统的分布式优化有两个关键的挑战:( 1 )网络中每个设备上的系统特性具有显著的可变性(系统异质性
),( 2 )跨网络的数据分布不一致(统计异质性
)。在这项工作中,我们引入了一个框架FedProx来处理联邦网络中的异构性。FedProx可以看作是FedAvg的推广和再参数化,FedAvg是目前最先进的联邦学习方法。虽然这种重新参数化只是对方法本身做了微小的修改,但这些修改在理论和实践上都有重要的影响。理论上,当从非同分布(统计异质性)中学习数据时,以及通过允许每个参与的设备执行可变数量的工作(系统异质性)来遵守设备级系统约束时,我们为我们的框架提供了收敛性保证。在实际应用中,我们证明了在一组真实的联邦数据集上,FedProx比FedAvg具有更强的收敛性
。特别地,在高度异构的环境中,FedProx相对于FedAvg表现出显著更稳定和准确的收敛行为
- -平均提高了22 %的绝对测试精度。
伪代码流程
1.FedAvg伪代码:
FedProx的伪代码:
可以清楚的对比出FedProx在FedAvg的基础上的变化,其实是局部目标加了一个近端项。
近端项的优势:(1)通过限制局部更新更接近初始(全局)模型来解决统计异质性问题,而不需要手动设置局部Epoch数,即局部目标在FedAvg基础上添加一个近端项,更加接近了全局模型;(2)允许安全纳入由系统异质性引起的可变数量的本地工作,即局部Epoch数并没有被强制要求数量,而是允许其随网络特性而不断变化。
算法场景及其优缺点
解决联邦网络中固有的系统和统计异构性的优化框架。
小知识点补充
- 掉队者(stragglers):指的是在指定时间窗口内无法计算完E个局部epochs的设备。
- 凸函数和非凸函数,通俗理解,凸函数只有一个极值点、极值,而非凸函数在定义域内有多个极值点、多个极值。
凸函数、非凸函数、凸集、凸优化见:链接 - 独立同分布:指在随机过程中,任何时刻的取值都是随机变量,如果这些随机变量服从同一分布,并且互相独立,那么这些随机变量是独立同分布的。见:链接
- L拉普拉斯光滑:如果存在一个常数L,对于定义域内的任意两个点x和y,函数值之间的变化满足不等式 ∣ f ( x ) − f ( y ) ∣ ≤ L ∣ x − y ∣ |f(x)-f(y)|\leq L|x-y| ∣f(x)−f(y)∣≤L∣x−y∣,当x和y足够接近时,函数值之间的差异不会超过它们之间距离的某个常数倍数L。详见:链接
未来方向Or工作
开发用于异构数据集的自动调整 μ \mu μ参数的方法,自适应设置参数 μ \mu μ,训练过程中当看到损失增加时,增加 μ \mu μ,当损失减少时,减少 μ \mu μ
实验过程
针对统计异质性对FedProx的收敛性影响,在一组综合数据上进行评估;
针对系统异质性对FedProx的收敛性影响,通过为不同设备分配不同数量的本地工作(客户端的运行不同的局部Epoch数)。
实验设置:
- 数据集:
对于每个设备k,根据模型 y = a r g m a x ( s o f t m a x ( W x + b ) ) , x ∈ R 60 , W ∈ R 10 × 60 , b ∈ R 10 y=argmax(softmax(Wx+b)),x\in \R^{60},W \in\R^{10\times60},b\in\R^{10} y=argmax(softmax(Wx+b)),x∈R60,W∈R10×60,b∈R10生成样本 ( X k , Y k ) (X_k,Y_k) (Xk,Yk),我们的模型: W k ∼ N ( u k , 1 ) , b k ∼ N ( u k , 1 ) W_k \sim N(u_k,1),b_k \sim N(u_k,1) Wk∼N(uk,1),bk∼N(uk,1),其中 u k ∼ N ( 0 , α ) u_k\sim N(0,\alpha) uk∼N(0,α); x k ∼ N ( V k , ∑ ) x_k \sim N(V_k,\sum) xk∼N(Vk,∑),其中均值向量 V k V_k Vk中的每个元素服从 v k ∼ N ( B k , 1 ) , B k ∼ N ( 0 , β ) v_k \sim N(B_k,1),B_k \sim N(0,\beta) vk∼N(Bk,1),Bk∼N(0,β),而协方差矩阵 ∑ \sum ∑和 ∑ j , j = j − 1.2 \sum{j,j}=j^{-1.2} ∑j,j=j−1.2成对角线。
α \alpha α控制了局部模型之间的差异程度, β \beta β控制了每个设备处的局部数据与其他设备的局部数据之间的差异程度。
综合数据:Non-iid: ( α , β ) = ( 0 , 0 ) 、 ( 0.5 , 0.5 ) 、 ( 1 , 1 ) (\alpha,\beta)=(0,0)、(0.5,0.5)、(1,1) (α,β)=(0,0)、(0.5,0.5)、(1,1)生成三个不相同的分布式数据集;
iid:设置所有设备上W、b服从相同分布,且输入数据 x k x_k xk也服从相同分布,
即 W , b ∼ N ( 0 , 1 ) , x k ∼ N ( V , ∑ ) W,b\sim N(0,1),x_k \sim N(V,\sum) W,b∼N(0,1),xk∼N(V,∑),其中,均值向量 V V V中的每个元素均为0, ∑ \sum ∑为对角线矩阵, ∑ j , j = j 1.2 \sum j,j=j^{1.2} ∑j,j=j1.2
真实数据集:凸分类问题:MNIST(多项式逻辑回归)、FEMNIST(多项式逻辑回归);
非凸问题:Shakespeare(LSTM)、Sent140(LSTM)。 - 实验类型:
1. 两种采样方案
与局部数据点数量成正比的概率采样设备然后简单平均局部模型的性能略优于
均匀采样设备和以与局部数据点数量成正比的权重平均局部模型
2. 系统异质性:
系统异质性模拟 (FedAvg在将到达全局时钟时,简单丢弃0%、50%和90%的掉队者,而FedProx将合并这些设备的部分更新(即FedProx的容忍操作))
这里的0%、50%和90%可以理解为:
在全局时钟到达时,
0%的客户端没有执行完E个epoch,即所有客户端均执行了E个epoch,系统不存在异构性
50%的客户端没有执行完E个epoch
90%的客户端没有执行完E个epoch,系统高度异构
3. 统计异质性:
(1)统计异质性的影响 (综合数据通过设置不同的 α \alpha α和 β \beta β实现统计异质性, α 、 β \alpha、\beta α、β值越大,统计异质性越大)
μ > 0 \mu>0 μ>0的影响
(2)选择 μ \mu μ 确定出5个联邦数据集对应的最佳 μ \mu μ值,引申出自适应调整 μ \mu μ的实验和方向,损失增大时,增加 μ \mu μ;损失减少时,减少 μ \mu μ
(3)相异性度量和分歧度 μ \mu μ越大,相异性越小,损失越小。
代码
用Pytorch实现的简易版的FedProx:https://github.com/dzh321/FedProx.git
比较复杂些的是用Tensorflow实现的:https://github.com/dzh321/tensorflow-FedProx.git