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

SGD存在问题

数据并行的SGD梯度聚合是所有梯度的线性组合,即:
(F(G_1, ..., G_n) = sum_{i=1}^nlambda_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的算法,处理了每一个维度。
内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/luuumos/p/16937169.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!