机器学习 拜占庭容错方法: Bulyan

论文链接:http://proceedings.mlr.press/v80/mhamdi18a/mhamdi18a.pdf

SGD存在问题

数据并行的SGD梯度聚合是所有梯度的线性组合,即:
F(G1,...,Gn)=i=1nλiGi
因此一个恶意的节点可以让全局模型朝着自己想的方向偏移(Gn为恶意节点的梯度):
Gn=1λn(Ui=1N1λiGi)
如图所示:
image
由此,我们需要新的梯度聚合规则(GAR)

(α,f)-Byzatine Resilient GAR定义

(α,f)解释:包含f个拜占庭梯度;α为角度
如果某算法为(α,f)-Byzatine Resilient算法,则满足以下规则:

  1. 输出的梯度为一个与正确的梯度g相差最多为α的梯度
  2. 输出的梯度为被正确的梯度g的矩所约束的梯度
    image
    现有(α,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的维度,由此Lp范数较难辨别出以下两种恶意攻击:

  1. 每个维度上的微小变化
  2. 单一维度上的巨大变化
    这样就较难收敛到一个较好的模型

Bulyan算法

要求:n ≥ 4f + 3

  1. 选出θ = 2f + 3个梯度(根据Krum或Brute等算法选)
  2. 对梯度的每一维都选出β = θ - 2f ≥ 3个值,这些值是距离每一维梯度的中位数最近的值
  3. 计算均值

结果

image
可以看出来在使用norm 2攻击的情况下,Bulyan准确率与没有攻击下的Average聚合算法的准确率大致相同。
image

Bulyan优点

  1. 相较于其它算法(Krum、GeoMed)代价较小,平均计算复杂度为O((n2f)C+dn)
  2. 该算法可以在每个维度上工作,即可以识别出某一个变化很大的维度(克服了Krum算法的缺陷)。之所以可以工作在每一个维度上,是因为Bulyan结合了例如Trimbed Mean的算法,处理了每一个维度。
posted @   Luuumos  阅读(1525)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示