Communication-Efficient Learning of Deep Networks from Decentralized Data是最早提出Federated learning这个概念的论文,可以说是FL的开山之作。
We advocate an alternative that leaves the training data distributed on the mobile devices, and learns a shared model by aggregating locally-computed updates. We term this decentralized approach Federated Learning.
之前被论文里的FedSGD
和FedAvg
(两个都是非常重要的算法)搞混,现在对他们总结一下。
FederatedSGD (or FedSGD)是指只有一个batch(a single batch)和Epoch数为1的算法。
令B
和E
分别对应与本地客户(lcoal client)的Batch-Size和Epoch数,那么FedSGD对应于B=∞
和E=1
。
直观理解:传统的SGD算法可以看成是梯度更新速度最快的优化算法,因为每一个sample就更新一次梯度了,这里也是一样,FedSGD是应用FL时梯度或模型更新速度最快的算法,它只要求每个local client计算一次平均梯度就可以上传到central server进行加权平均了,所以它需要的computation power是最少的(the lowest)。这也是论文把他当做基线(baseline)的原因。
因为作者想研究如何通过利用额外的计算容量来降低通信损失,而无疑基线就是计算容量最小的
FedSGD
算法了。这样作者就能够增加计算能力来看通信损失的变化。
由此可知,只要B≠∞
和E≠1
,那么此时的算法就叫做FedAvg
。而FedAvg(FederatedAveraging )
算法是指local client先在本地计算多次梯度并且更新权值,这时的计算成本是提升的。
FedSGD
算法是,具体的distributed optimization可以写成公式其中,代表在当前模型上通过它的本地数据集计算出的平均梯度。
我们知道对任何一个客户,有,
故有
其中
上式等式说明了将每个local client的平均梯度上传到server再对这个梯度进行 加权平均后更新模型的效果是和先在每个local client算出梯度并且用梯度更新本地模型后在server上对这个更新后的模型取加权平均的效果是一样的。
或者说,该等式使得从原先的上传梯度值()模式变成了上传模型()模式了。
这就引出了上图的下半部分,即每个local client可以先在本地多次迭代更新模型,然后再上传到server上执行averaging step
即当我们使用FedAvg
算法时,假设在时刻,每个local client的模型为(注意如果不加右上角的则代表时刻的全局模型),则在Epoch=E
,Batchsize=B
时,local client k的模型更新为
意思是模型在将模型上传到server前本地更新了次。
接着有和。
最后将在时刻的全局模型赋值给每个local client作为时刻的新模型
有意思的是,可以把FedAvg
算法看成是I/O过程中的缓冲机制(Buffer),与其一点一点往上传,还不如收集多一点再网上传,这样可以有效减小I/O次数。
网友评论