论文链接
《Communication-Efficient Learning of Deep Networks from Decentralized Data》
题目
从去中心化数据中进行深度网络的高效通信学习
摘要
现代移动设备可以访问适合学习模型的大量数据,这反过来又可以极大地改善设备上的用户体验。例如,语言模型可以改进语音识别和文本输入,图像模型可以自动选择好的照片。然而,这些丰富的数据通常对隐私敏感、数量庞大或两者兼而有之,这可能会妨碍使用传统方法记录到数据中心并在那里进行训练。我们提倡一种替代方案,将训练数据分布在移动设备上,并通过聚合本地计算的更新来学习共享模型。我们将这种去中心化方法称为**“联邦学习”。我们提出了一种基于迭代模型平均的深度网络联邦学习的实用方法**,并考虑五种不同的模型架构和四个数据集进行了广泛的实证评估。这些实验表明
,该方法对于不平衡和非独立同分布数据分布具有鲁棒性,这是该设置的定义特征。通信成本是主要限制因素,与同步随机梯度下降相比,我们发现所需的通信轮次减少了 10-100 倍
。
伪代码流程
C表示客户的分数,范围[0,1],即选择多少个客户端参与训练
nk表示客户端k的本地样本数量
Pk为客户端k上数据点的索引集,Pk大小为nk
∇l(w;b)表示计算损失函数的梯度
算法场景及其优缺点
优点:
- 隐私保护: FedAvg 允许在本地设备上进行模型训练,而不需要将原始数据发送到中央服务器。这样可以保护用户的隐私,因为原始数据不会离开其所在的设备。
- 降低通信成本: 相比于将所有数据传输到中央服务器进行训练,FedAvg 只需要传输模型参数的更新,这大大减少了通信的数据量,降低了通信成本。
- 节省能源: 由于大部分计算是在本地设备上进行的,而不是集中在中央服务器上,因此在一定程度上节省了能源消耗。
- 适用于分布式数据: FedAvg 可以在分布式数据的情况下工作,因为每个本地设备可以在本地使用自己的数据进行训练。
缺点:
-
通信开销: 即使只传输模型参数的更新,但在每次迭代中仍然需要将更新的参数传输回中央服务器,这可能会产生较大的通信开销,特别是在连接不稳定或带宽有限的情况下。
-
不适用于所有场景: FedAvg 对于每个设备上的数据分布相对均匀的情况效果较好。如果某些设备上的数据偏差较大,可能会导致模型在整体上的表现下降。
-
模型同步: 在联合学习中,设备之间的网络连接可能不稳定,这可能导致模型同步出现问题。某些设备可能由于网络连接的问题而导致更新无法及时传输,从而影响整体模型的收敛速度。
-
安全性考量: 虽然 FedAvg 本身可以保护用户数据的隐私,但在实际部署中,仍然需要考虑安全性方面的问题,比如如何防止恶意用户篡改模型参数或攻击联合学习系统。
FedAvg优点是简单、低通信成本,缺点是当数据异构(非独立同分布时),会遭到“客户端偏移”,不稳定且收敛缓慢。
小知识补充
IID:独立同分布。指随机过程中,任何时刻的取值都为随机变量,如果这些随机变量服从同一分布,并且互相独立,那么这些随机变量是独立同分布;
非IID:非独立同分布,non-iid,其实有三种:不独立但同分布,独立不同分布,不独立也不同分布
(1)考虑随机变量XB(n,p),那么随机变量Y=(n-X)B(n,p)和X就是不独立但同分布
(2)独立不同分布,就是随机变量相互独立,且分别服从不同的分布,比如X.Y是毫无关系的独立变量,XB(n,p)而YP(λ)
(3) 不独立不同分布,就是随机变量间有关系,但是又分别服从不同的分布,如:随机变量X+Y=n,但X和Y属于不同分布族
未来方向Or工作
将联邦学习FedAvg算法结合差分隐私、安全多方计算,可以提供较强的隐私安全的保证。
实验过程
实验设置:模型:多层感知机MLP、CNN、LSTM
数据集:MNIST 、CIFAR-10、莎士比亚数据集
对比算法:联邦平均(FedAvg)和隐私保护深度学习(PPDL)
实验类型:从客户端分数C、通信轮数、Epoch数三方面对FedAvg进行评估
代码:github连接:https://github.com/dzh321/FedAvg01.git
由于语言模型LSTM是一个规模比较大的,在这个代码中没有涉及到,主要是CNN和MLP,这里的非独立同分布数据划分的方式比较一般,没有用到狄利克雷分布,但是也可以作为一个自己划分非独立同分布数据的一种方式。
这部分代码我还有两个问题:等我解决了在更新下。
问题1:问啥用python命令行运行,不出现保存的文件;
问题2:损失为啥还会有负值呢?(如果你们可以解决,欢迎评论,一起讨论学习!)