論文連結:http://proceedings.mlr.press/v80/mhamdi18a/mhamdi18a.pdf
SGD存在問題
資料並行的SGD梯度聚合是所有梯度的線性組合,即:
\(F(G_1, ..., G_n) = \sum_{i=1}^n\lambda_iG_i\)
因此一個惡意的節點可以讓全域性模型朝著自己想的方向偏移(\(G_n\)為惡意節點的梯度):
\(G_n = \dfrac{1}{\lambda_n}(U - \sum_{i=1}^{N-1}\lambda_iG_i)\)
如圖所示:
由此,我們需要新的梯度聚合規則(GAR)
\((\alpha, f)\)-Byzatine Resilient GAR定義
\((\alpha, f)\)解釋:包含\(f\)個拜占庭梯度;\(\alpha\)為角度
如果某演算法為\((\alpha, f)\)-Byzatine Resilient演算法,則滿足以下規則:
- 輸出的梯度為一個與正確的梯度\(g\)相差最多為\(\alpha\)的梯度
- 輸出的梯度為被正確的梯度\(g\)的矩所約束的梯度
現有\((\alpha, f)\)-Byzatine Resilient GAR舉例:Krum, Multi-Krum, Brute等。
Krum演算法介紹
要求:n ≥ 2f + 3
演算法步驟:
- 計算節點i的梯度與其餘節點j(鄰居節點)的梯度的距離(歐氏距離)
- 選取距離自己最近的n-f-2個梯度,然後將選取的梯度求和,作為節點i的得分score
- 得分最小的節點的梯度即為演算法輸出的梯度
Brute演算法介紹
要求:n ≥ 2f + 1
演算法步驟:
- 列出所有可能的簇(每個簇中包含n - f個節點)
- 找到最緊密相連的簇(該簇中距離最遠的梯度是所有的簇中距離最近的):
- 將找到的簇中的節點的梯度取平均
GARs缺陷
模型引數包含遠大於1的維度,由此\(L_p\)範數較難辨別出以下兩種惡意攻擊:
- 每個維度上的微小變化
- 單一維度上的巨大變化
這樣就較難收斂到一個較好的模型
Bulyan演算法
要求:n ≥ 4f + 3
- 選出\(\theta\) = 2\(f\) + 3個梯度(根據Krum或Brute等演算法選)
- 對梯度的每一維都選出\(\beta\) = \(\theta\) - 2\(f\) ≥ 3個值,這些值是距離每一維梯度的中位數最近的值
- 計算均值
結果
可以看出來在使用norm 2攻擊的情況下,Bulyan準確率與沒有攻擊下的Average聚合演算法的準確率大致相同。
Bulyan優點
- 相較於其它演算法(Krum、GeoMed)代價較小,平均計算複雜度為\(O((n-2f)C+dn)\)
- 該演算法可以在每個維度上工作,即可以識別出某一個變化很大的維度(克服了Krum演算法的缺陷)。之所以可以工作在每一個維度上,是因為Bulyan結合了例如Trimbed Mean的演算法,處理了每一個維度。