机器学习 拜占庭容错方法: Bulyan
论文链接:http://proceedings.mlr.press/v80/mhamdi18a/mhamdi18a.pdf
SGD存在问题
数据并行的SGD梯度聚合是所有梯度的线性组合,即:
因此一个恶意的节点可以让全局模型朝着自己想的方向偏移(
如图所示:
由此,我们需要新的梯度聚合规则(GAR)
-Byzatine Resilient GAR定义
如果某算法为
- 输出的梯度为一个与正确的梯度
相差最多为 的梯度 - 输出的梯度为被正确的梯度
的矩所约束的梯度
现有 -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的维度,由此
- 每个维度上的微小变化
- 单一维度上的巨大变化
这样就较难收敛到一个较好的模型
Bulyan算法
要求:n ≥ 4f + 3
- 选出
= 2 + 3个梯度(根据Krum或Brute等算法选) - 对梯度的每一维都选出
= - 2 ≥ 3个值,这些值是距离每一维梯度的中位数最近的值 - 计算均值
结果
可以看出来在使用norm 2攻击的情况下,Bulyan准确率与没有攻击下的Average聚合算法的准确率大致相同。
Bulyan优点
- 相较于其它算法(Krum、GeoMed)代价较小,平均计算复杂度为
- 该算法可以在每个维度上工作,即可以识别出某一个变化很大的维度(克服了Krum算法的缺陷)。之所以可以工作在每一个维度上,是因为Bulyan结合了例如Trimbed Mean的算法,处理了每一个维度。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!