arXiv上剛剛掛的一篇文章Fair Resource Allocation in Federated Learning,作者是CMU的AP Virginia Smith組的,搜了一下主頁,居然是一個超級年輕的小姐姐~
這篇文章思路很straight-forward,邏輯也很清楚,唯一有點缺點的是可能時間比較趕,第一版上傳的還是draft,文章還沒修改完
Motivation
之前橫向聯邦學習一般都是follow google的FedAvg算法,將所有用戶(或者隨機一部分)更新的梯度取個平均作爲中心模型的更新參數。顯然,這種做法雖然對於所有用戶來說,全局模型最後會收斂到一個最優值,但是對於單個用戶,這個模型並不一定能達到局部最優。作者將之視爲一個resource allocation fairness的問題,希望在全局最優的情況下,讓所有用戶個體都儘可能地達到最優值。
那麼現在的問題是:怎麼在全局模型的準確率不變的情況下,讓每個用戶模型的本地準確率也達到最高。作者認爲當用戶本地模型準確率偏離全局模型準確率的方差最小時可以認爲這個模型就是公平的了。具體定義如下:
Definition 1 (Fairness of performance distribution): For trained models and , we say that model provides a more fair solution to the federated learning objective (1) than model if the variance of the performance of model on the m devices, , is smaller than the variance of the performance of model on the m devices, i.e., .
模型
FedAvg:
其中是第k個用戶本地的loss,是該用戶具有的樣本數量,是總的樣本數量。
作者改爲
當q的取值越大時,對於本身值很大的來說,其佔的權重也會越大。
然後利用利普希茨條件可以得到梯度的一個上界,下圖中equation 4符號有一些問題,已經和作者Tian Li郵件確認過了,應改爲下式:
算法
q-FedSGD算法梯度更新用的是一階導之和除以二階導之和,收斂性之前已經證明了。原因是如果想實驗多個q值,或者說考慮多種fairness的情況,可能需要對每一個q都fine tune一個step size。一般的做法是grid search,那麼當需要考慮的q值很多的時候,grid space會explode。如果用一階導之和除以二階導之和,只需要在q=0時調出一個步長後,直接應用到其它q值即可。
對於q-FedAvg,文章中給的理由是如果直接用FedAvg會變成優化前面的第一個式子,而不是作者修改的損失函數,所以提出了algorithm 3。作者說至於不用二階導,是因爲local update中會有交叉項,所以用而不是直接計算。
感覺這一塊的理由有一些繞,可能還需要再解釋得清楚一些