总结:
0. Three questions
-
文章在解决什么问题?
传统的联邦学习应用到非独立同分布数据上时,模型精度较低。
实验证明,当联邦学习的各节点的数据分布差异过大时,训练出来的模型精度会大大降低。
-
用了什么方法 (创新方法) ?
提出聚类联邦学习框架 FedDK:先将用户分入不同的聚簇,然后为每一个聚簇训练一个模型。
该方法面临的挑战是,用户的聚类标识未知。确认用户的聚类标识,需要解决两个问题:
- 标识每个用户的集群成员关系
- 在分布式条件下优化每一个聚类模型
解决以上两个问题的思路:
1)使用 DeepSets 对工作节点的本地数据进行特征提取,生成一个代表本地数据分布的特征描述符。
2)接下来使用 K-Means 聚类算法对特征描述符进行分组,将具有相似数据分布的工作节点分入同一个组(聚簇),最后每一个组(聚簇)中的所有工作节点共同训练一个模型。
-
效果如何?
FedDK 有效降低了数据非独立同分布给模型精度带来的影响。模型预测的精确度有较大提升,且需更少的计算量。
-
一句话总结创新点
在no-IID的工作节点中,通过将数据分布相似的工作节点分到同一个组(组中节点数据被认为是IID的)并训练同一个模型的方法来解决非独立同分布数据带来的问题;实质:通过聚类算法把 no-IID的工作节点划分为多组 IID的工作节点。
-
在此基础上我的想法
可以在工作节点与服务器通信时,添加差分隐私。
1. 相关工作
1.1 聚类联邦学习
聚类联邦学习(CFL) 是本地训练和全局训练的一种折中,它可以缓解本地训练中数据不足的问题, 也可以减少非独立同分布数据对全局模型的影响。
如何对工作节点进行分组,有四种不同的方法:
- 利用模型之间的参数距离
- 利用训练损失
- 使用梯度信息来决定分区
- 使用数据的原始信息
1.2 FedDK 框架执行步骤:
1)使用 DeepSets 对用户的本地数据进行特征提取,生成一个代表本地数据分布的特征描述符。并将特征描述符上传至服务器节点。
2)服务器节点采用 K-Means 聚类算法对特征向量进行聚类(欧式距离),给具有相似数据分布的工作节点赋相同的聚簇标识。
3)在服务器节点的调度下,工作节点根据聚簇标识被分到不同的组中,在组内使用最优化方法进行模型训练,每组(聚簇)训练一个模型。
服务器聚合权重时:模型之间根据各模型的训练数据量设定对应的权重,权重的大小与聚簇中测试数据集的大小成正比。
1.2.1 客户端调度
目的:对具有相似数据分布的客户端进行统一调度,使它们协同训练联邦模型。
注:同一聚簇中所有节点的数据可以视为独立同分布(IID)数据。