大家好,今天聊一篇测量联邦学习贡献的论文,《Measure Contribution of Participants in Federated Learning》这篇论文提出了两种贡献测量的方法,水平FL的删除方法和垂直FL的Shapley值分组特征法,作者称该方法打开贡献研究的大门,通篇理解起来挺简单,适合初学者练习精读论文
摘要和结论很简洁
然后瞧瞧引言的结构:FL介绍==》FL应用 ==》 引出要公平的测量贡献 ==》 本文方法
水平联邦学习特点是「特征相同,样本不同」,使用删除方法来计算分组实例影响,每次删除某一方参与者重新训练模型,计算新模型与原始模型的差距,即贡献=差距=原模型-新模型,这个差距就是参与者的贡献,俗称有你和没你的区别,就是你的贡献。
最扎心的莫过于没你也一样
垂直联邦学习特点是「特征不同,样本相同」,于是用使用 Shapley 值来计算特征的重要性,重要性就是它的贡献。
水平FL的删除方法
影响度量公式:
n是数据集大小,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A9qKiT4S-1674015880268)(null)]是所有数据训练的模型对第j
个实例的预测,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dBz9g6ZI-1674015880299)(null)] 是去掉i
实例训练的模型对第j
个实例的预测。
所以,对于子集D,它的贡献定义为它拥有的所有实例的总影响力:
比如i1
、i2
……in
都属于实例子集D,那子集D的影响就是所有实例i
影响力的总和
自然提出了一种近似算法,每次删除把一批实例看做一个整体,
这个水平删除方法很好理解,也没有复杂的数学公式,对新手非常友好
垂直FL的Shapley值
因为样本相同,用水平FL的删除法没用,所以用特征计算贡献。
这个方法的出发点是:在垂直FL中,参与者A(参与的一方)
通过与其他参与者分享它的特征,对联邦模型做出贡献,那就意味着参与者A(参与的一方)
的贡献可以用它共享特征的组合贡献表示。
比如,参与者A
共享的特征有name
、age
、salary
,特征name的贡献是贡献1,特征age的贡献是贡献2,特征salary的贡献是贡献3。那么,name、age、salary组合的特征贡献,就是参与者A的贡献。
论文是1953年的《A value for n-person games.” Contributions to the Theory of Games》
但太难看懂,推荐看视频,
https://www.bilibili.com/video/BV1LE411k7Wr?spm_id_from=333.337.search-card.all.click&vd_source=528356e4a917af996b2032b87d57fb12
Shapley值的复杂度太大,肯定有高人提出算法降低复杂度——蒙特卡罗抽样的近似算法。
实验是在子宫颈癌数据集,用于预测某个女性是否会患子宫颈癌
数据集的属性
用删除法计算了五组参与者的贡献
三个特征为一组,把这15个特征分成5组
不过,这种额外测量贡献值方法的计算成本终究大,希望能降低成本
参考
https://zhuanlan.zhihu.com/p/243405494