Krum在若干个局部模型中选择一个与其他模型都相似的模型作为全局模型。具体而言,将梯度与其他梯度的范数距离的和作为该梯度的得分,然后选取得分最低者,即和大多数梯度都相似的梯度作为聚合梯度。
Krum算法不会影响模型的正常收敛,并且在攻击者控制客户端的占比不超过50%的情况下能保证模型的鲁棒性。
m-Krum
简洁的Krum算法只选择了一个梯度向量。事实上,服务器可以通过选择更多的梯度向量避免浪费掉其他参与方的努力。实现手段:执行一次Krum算法,将得到的梯度从总的里面剔除,然后迭代若干次。