Communication-Efficient Learning of Deep Networks from Decentralized Data是最早提出Federated learning這個(gè)概念的論文懒浮,可以說是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
(兩個(gè)都是非常重要的算法)搞混,現(xiàn)在對(duì)他們總結(jié)一下岖研。
FederatedSGD (or FedSGD)是指只有一個(gè)batch(a single batch)和Epoch數(shù)為1的算法显押。
令B
和E
分別對(duì)應(yīng)與本地客戶(lcoal client)的Batch-Size和Epoch數(shù),那么FedSGD對(duì)應(yīng)于B=∞
和E=1
叔汁。
直觀理解:傳統(tǒng)的SGD算法可以看成是梯度更新速度最快的優(yōu)化算法统求,因?yàn)槊恳粋€(gè)sample就更新一次梯度了检碗,這里也是一樣,F(xiàn)edSGD是應(yīng)用FL時(shí)梯度或模型更新速度最快的算法球订,它只要求每個(gè)local client計(jì)算一次平均梯度就可以上傳到central server進(jìn)行加權(quán)平均了后裸,所以它需要的computation power是最少的(the lowest)。這也是論文把他當(dāng)做基線(baseline)的原因冒滩。
因?yàn)樽髡呦胙芯咳绾瓮ㄟ^利用額外的計(jì)算容量來降低通信損失微驶,而無疑基線就是計(jì)算容量最小的
FedSGD
算法了。這樣作者就能夠增加計(jì)算能力來看通信損失的變化开睡。
由此可知因苹,只要B≠∞
和E≠1
,那么此時(shí)的算法就叫做FedAvg
篇恒。而FedAvg(FederatedAveraging )
算法是指local client先在本地計(jì)算多次梯度并且更新權(quán)值扶檐,這時(shí)的計(jì)算成本是提升的。
FedSGD
算法是款筑,具體的distributed optimization可以寫成公式其中,代表在當(dāng)前模型上通過它的本地?cái)?shù)據(jù)集計(jì)算出的平均梯度。
我們知道對(duì)任何一個(gè)客戶腾么,有奈梳,
故有
其中
上式等式說明了將每個(gè)local client的平均梯度上傳到server再對(duì)這個(gè)梯度進(jìn)行 加權(quán)平均后更新模型的效果是和先在每個(gè)local client算出梯度并且用梯度更新本地模型后在server上對(duì)這個(gè)更新后的模型取加權(quán)平均的效果是一樣的。
或者說解虱,該等式使得從原先的上傳梯度值()模式變成了上傳模型()模式了攘须。
這就引出了上圖的下半部分,即每個(gè)local client可以先在本地多次迭代更新模型殴泰,然后再上傳到server上執(zhí)行averaging step
即當(dāng)我們使用FedAvg
算法時(shí)于宙,假設(shè)在時(shí)刻,每個(gè)local client的模型為(注意如果不加右上角的則代表時(shí)刻的全局模型)悍汛,則在Epoch=E
捞魁,Batchsize=B
時(shí),local client k的模型更新為
意思是模型在將模型上傳到server前本地更新了次离咐。
接著有和署驻。
最后將在時(shí)刻的全局模型賦值給每個(gè)local client作為時(shí)刻的新模型
有意思的是,可以把FedAvg
算法看成是I/O過程中的緩沖機(jī)制(Buffer)健霹,與其一點(diǎn)一點(diǎn)往上傳旺上,還不如收集多一點(diǎn)再網(wǎng)上傳,這樣可以有效減小I/O次數(shù)糖埋。