一、算法2流程:
1. 根据梯度计算相似性矩阵,相似性用cosine来衡量。
2. 对相似性矩阵进行层次凝聚聚类,cluster之间的距离用ward方式衡量。
3. 根据聚类结果得到新的权重矩阵,(最大的10种类——worker数量最多,权重保持不变)
4. 剩余的类别的权重更新,得到新的权重矩阵distri_cluster作为clients被抽样的概率矩阵,抽样的clients子集的样本作为训练数据集进行训练。
注:此处权重不是模型参数,而是作为clients被抽样的概率权重。
def get_clusters_with_alg2(
linkage_matrix: np.array, n_sampled: int, weights: np.array
):
"""Algorithm 2"""
epsilon = int(10 ** 10)
# associate each client to a cluster
link_matrix_p = deepcopy(linkage_matrix)
augmented_weights = deepcopy(weights)
for i in range(len(link_matrix_p)):
idx_1, idx_2 = int(link_matrix_p[i, 0]), int(link_matrix_p[i, 1])
new_weight = np.array(

该博客探讨了联邦学习中针对样本量和梯度的两种攻击策略。首先,介绍了基于样本量的算法2,通过层次聚类和权重更新来防御恶意攻击。实验表明,单纯改变数据量对梯度的影响较小。随后,讨论了直接篡改梯度的影响,结果显示这种攻击会使算法2偏离目标模型。最后,指出在局部模型的梯度计算中进行攻击无效,原因是攻击的客户端可能未被选中参与训练。
https://blog.youkuaiyun.com/admin11111111/article/details/120817883
最低0.47元/天 解锁文章
2627





