Communication-Efficient Learning of Deep Networks from Decentralized Data


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.

之前被论文里的FedSGDFedAvg(两个都是非常重要的算法)搞混,现在对他们总结一下。

FederatedSGD (or FedSGD)是指只有一个batch(a single batch)和Epoch数为1的算法。
BE分别对应与本地客户(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算出梯度并且用梯度更新本地模型\omega _{t}^{k}后在server上对这个更新后的模型取加权平均的效果是一样的。

或者说,该等式使得从原先的上传梯度值(g_{k})模式变成了上传模型(\omega ^{k}_{t+1})模式了。

这就引出了上图的下半部分,即每个local client可以先在本地多次迭代更新模型\omega _{t}^{k},然后再上传到server上执行averaging step
即当我们使用FedAvg算法时,假设在t时刻,每个local client的模型为\forall k:\omega _{t}^{k}(注意如果不加右上角的k则代表t时刻的全局模型),则在Epoch=EBatchsize=B时,local client k的模型更新为\omega_{t}^{k}\overset{-\eta g_{k1}}{\rightarrow} \omega _{t1}^{k}\overset{-\eta g_{k2}}{\rightarrow} \omega _{t2}^{k}\overset{-\eta g_{k3}}{\rightarrow}\cdot \cdot \cdot \overset{-\eta g_{ki}}{\rightarrow}\omega _{ti}^{k}
意思是模型\omega_{t}^{k}在将模型上传到server前本地更新了i次。
接着有\omega _{t+1}^{k}\leftarrow \omega _{ti}^{k}\omega _{t+1}\leftarrow \sum_{k=1}^{K}\frac{n_k}{n}\omega_{t+1}^{k}
最后将在t+1时刻的全局模型\omega_{t+1}赋值给每个local client作为t+1时刻的新模型
\forall k:\omega _{t+1}^{k}\leftarrow \omega_{t+1}

有意思的是,可以把FedAvg算法看成是I/O过程中的缓冲机制(Buffer),与其一点一点往上传,还不如收集多一点再网上传,这样可以有效减小I/O次数。

具体算法:
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 有前面的知识,我们知道如何构建目标函数了,当目标函数构建出来后,如何求其参数使的目标函数最小化呢?这就是这一小节的...
    李涛AT北京阅读 1,042评论 0 0
  • 优化算法 第一课:小批量梯度下降 本周学习加快神经网络训练速度的优化算法。 我们之前学习过矢量化可以让你有效的计算...
    带刺的小花_ea97阅读 1,216评论 0 5
  • 机器学习术语表 本术语表中列出了一般的机器学习术语和 TensorFlow 专用术语的定义。 A A/B 测试 (...
    yalesaleng阅读 2,146评论 0 11
  • 文/Min,图/网络 想你的夜不会孤单 在孤单的夜里想你才伤心
    Min_06阅读 659评论 3 6
  • 01 五一放假,这两天过的有点丧,没有出去。本来早就下好了几部电影,买的书还没有拆。但最后和同事吃饭,打打麻将,有...
    岸左同学阅读 942评论 1 2

友情链接更多精彩内容