機器學習 拜占庭容錯方法: Bulyan

Luuumos 發表於 2022-12-02
Machine Learning

論文連結: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)\)
如圖所示:
image
由此,我們需要新的梯度聚合規則(GAR)

\((\alpha, f)\)-Byzatine Resilient GAR定義

\((\alpha, f)\)解釋:包含\(f\)個拜占庭梯度;\(\alpha\)為角度
如果某演算法為\((\alpha, f)\)-Byzatine Resilient演算法,則滿足以下規則:

  1. 輸出的梯度為一個與正確的梯度\(g\)相差最多為\(\alpha\)的梯度
  2. 輸出的梯度為被正確的梯度\(g\)的矩所約束的梯度
    image
    現有\((\alpha, f)\)-Byzatine Resilient GAR舉例:Krum, Multi-Krum, Brute等。

Krum演算法介紹

要求:n ≥ 2f + 3
演算法步驟:

  1. 計算節點i的梯度與其餘節點j(鄰居節點)的梯度的距離(歐氏距離)
  2. 選取距離自己最近的n-f-2個梯度,然後將選取的梯度求和,作為節點i的得分score
  3. 得分最小的節點的梯度即為演算法輸出的梯度

Brute演算法介紹

要求:n ≥ 2f + 1
演算法步驟:

  1. 列出所有可能的簇(每個簇中包含n - f個節點)
  2. 找到最緊密相連的簇(該簇中距離最遠的梯度是所有的簇中距離最近的):
    image
  3. 將找到的簇中的節點的梯度取平均

GARs缺陷

模型引數包含遠大於1的維度,由此\(L_p\)範數較難辨別出以下兩種惡意攻擊:

  1. 每個維度上的微小變化
  2. 單一維度上的巨大變化
    這樣就較難收斂到一個較好的模型

Bulyan演算法

要求:n ≥ 4f + 3

  1. 選出\(\theta\) = 2\(f\) + 3個梯度(根據Krum或Brute等演算法選)
  2. 對梯度的每一維都選出\(\beta\) = \(\theta\) - 2\(f\) ≥ 3個值,這些值是距離每一維梯度的中位數最近的值
  3. 計算均值

結果

image
可以看出來在使用norm 2攻擊的情況下,Bulyan準確率與沒有攻擊下的Average聚合演算法的準確率大致相同。
image

Bulyan優點

  1. 相較於其它演算法(Krum、GeoMed)代價較小,平均計算複雜度為\(O((n-2f)C+dn)\)
  2. 該演算法可以在每個維度上工作,即可以識別出某一個變化很大的維度(克服了Krum演算法的缺陷)。之所以可以工作在每一個維度上,是因為Bulyan結合了例如Trimbed Mean的演算法,處理了每一個維度。

相關文章