最近在看Federated Learning for IoT的文章,该篇文章讲的是在IoT场景下的去中心化联邦。个人认为该文章是写的比较好的,因为不仅文章故事讲得好(IoT和去中心化确实比较契合,后面会讲),而且对于去中心化联邦的框架也具有不错的两点
背景 && 论文思想
在IoT的场景中,中心化联邦是不合适的。处于IoT中的设备通常被部署在关键控制应用中,并且在这些应用中,设备不能依赖远程单元进行快速反馈,它们只能与邻居交换信息来实现自我更新。因此,这片文章也是从此出发,使用共识的方式让处于联邦网络中的一个节点只与邻居节点交换信息,来实现最终模型的收敛
论文贡献
- 重新研究了联邦平均算法(FA),并基于共识实现了新的FA方式。该新的FA方式参考了gossip协议
- 提出了新的FL算法,提高了收敛性并最大程度地减少了通信回合的次数
基于共识的FA算法
这篇文章提出了两种基于共识的FA算法,两种算法之间的区别只在于不同节点之间是否交换了梯度
Consensus-Based Federated Averaging (CFA)
算法步骤(在
t
t
t轮次):
1.对于节点
k
k
k,它将自己的模型
W
t
,
k
W_{t,k}
Wt,k发送给它的邻居
N
k
‾
N_{\overline{k}}
Nk(这是节点
k
k
k的邻居组成的集合),同理也会收到来自邻居的模型,然后使用以下公式计算
ψ
t
,
k
\psi_{t,k}
ψt,k:
2.然后节点
k
k
k用模型
ψ
t
,
k
\psi_{t,k}
ψt,k在本地数据集进行训练、更新得到新的
W
t
+
1
,
k
W_{t+1,k}
Wt+1,k:
在步骤1中,
α
k
,
t
\alpha_{k,t}
αk,t被定义为训练集大小的权重:
上述算法是借鉴了Gossp算法,而Gossip算法是最终一致性协议,因此最后模型肯定会收敛
Consensus-Based Federated Averaging With Gradients Exchange(CFA-GE)
算法步骤(在
t
t
t轮次):
1.与CFA算法的第一步相同,计算
ψ
t
,
k
\psi_{t,k}
ψt,k
2.将该
ψ
t
,
k
\psi_{t,k}
ψt,k发回给节点
k
k
k的邻居,并计算出该模型在邻居节点的本地数据集上的梯度:
3.用这些梯度来对
ψ
t
,
k
\psi_{t,k}
ψt,k进行更新,得到
ψ
t
,
k
~
\tilde{\psi_{t,k}}
ψt,k~:
4.用模型
ψ
t
,
k
~
\tilde{\psi_{t,k}}
ψt,k~在本地数据集上进行训练更新,得到
W
t
+
1
,
k
W_{t+1,k}
Wt+1,k
GFA-GE算法与GFA算法的区别在于,后者在计算
W
t
+
1
,
k
W_{t+1,k}
Wt+1,k的时候,用到了本地和邻居节点的梯度,而前者只用到了本地的梯度。GFA-GE与GFA相比,需要更多的通信回合和开销,但是能够达到更快的收敛速率
Two-Stage Negotiation and Implementation Aspects
由于CFA-GE算法需要用到更多的通信轮次和带宽,并且因为需要等待邻居节点的回复而大大降低了收敛速度,因此作者还提出了一种简化的方式
算法步骤(在轮次
t
t
t):
1.与CFA-GE算法相似,交换的模型为:
其中
∇
L
t
,
k
\nabla L_{t,k}
∇Lt,k为:
其中
∇
L
t
,
k
‾
\overline{\nabla L_{t,k}}
∇Lt,k为
2.节点
k
k
k用接受到的邻居的模型计算自身的
ψ
t
,
k
\psi_{t,k}
ψt,k:
3.节点
k
k
k计算
ψ
t
,
k
~
\tilde{\psi_{t,k}}
ψt,k~
4.与CFA-GE的步骤4相同,计算新的
W
t
+
1
,
k
W_{t+1,k}
Wt+1,k
下面这幅图展示了上述三种方法的区别:
总结
个人觉得这是一篇质量比较高的文章,优点在于:
- 故事讲得好,从IoT中设备的有限通信能力入手,引入去中心化联邦的概念
- 框架比较全面,从借鉴于Gossip协议的CFA算法到改进的CFA-GE算法,里面其实是通过了频繁的交换梯度来实现更好的FA效果,目的就是为了尽可能地将邻居节点的信息利用起来
- 文章还对CFA-GE算法做了简化,使用借鉴历史信息的方式,使得一个并行的训练方法减少了需要等待回应的次数。
感觉这篇文章值得细读以下,因为文章里将很多技术都结合到了一起,个人觉得是一篇质量很高的文章