联邦学习过程
联邦学习以轮为单位,每个轮内包含模型分发、本地训练和全局更新这3个阶段。
1. 模型分发
在模型分发阶段,服务器按照一定标准,选择参与本轮联邦学习的设备,例如下图中选中了3个设备,向它们分发全局模型。
2. 本地训练
在本地训练阶段,每个设备加载当前全局模型,使用自己的训练数据训练,得到新的本地模型。
3. 全局更新
在全局更新阶段,每个设备向服务器上传模型更新值,服务器收集更新值进行聚合,得到聚合结果,更新全局模型。
下一轮,服务器会将新的全局模型发送给选中的设备
差分隐私
差分隐私类型
- 样本级别(element-level)的差分隐私:训练的模型,不会泄露某个特定的样本是否参与了训练
- 用户级别(client-level)的差分隐私:训练的模型,不会泄露某个用户是否参与了训练
样本级别差分隐私
样本级别的差分隐私,是在通常的SGD的一个batch训练过程中,增加了DP的两个步骤。在一个batch根据损失函数计算完梯度之后,在进行梯度下降的更新前,第一步是对每个样本计算的梯度裁剪,第二步是在这个batch的梯度更新前对梯度更新总值添加噪声。对梯度进行放缩,让梯度的二范数值在范围C内,之后添加的噪声的大小和C值有关。C值是一个动态变化的值,文章中提出,C的值选取为这个batch梯度的范数中位数值。
联邦学习差分隐私
联邦学习的差分隐私的用户级别差分隐私,包含三个步骤:①裁剪;②聚合;③加噪
一般的联邦学习的聚合过程是FedAvg,每个用户是返回梯度的更新值
θ
′
−
θ
t
\theta'-\theta_t
θ′−θt给服务器,服务器做加权聚合:
联邦学习的差分隐私包含两个步骤,梯度裁剪和添加噪声,都是由服务器完成。
客户做完本地SGD得到梯度更新值,服务器不是直接对梯度更新值进行聚合,而是进行梯度裁剪,与之前样本集的差分隐私类似,二阶范数限制取所有用户梯度更新值的中位数值。
服务器对进行了范数限制的梯度更新值进行加权聚合:
第二个差分隐私步骤是添加噪声,添加噪声的强度与用户梯度更新范数值中位数S有关。在聚合平均之后,服务器添加高斯噪声,然后做模型参数的全局更新。
完整算法
参考
- Geyer R C, Klein T, Nabi M, et al. Differentially Private Federated Learning: A Client Level Perspective. NIPS, 2017.
- Abadi M, Chu A, Goodfellow I, et al. Deep Learning with Differential Privacy[J]. computer and communications security, 2016: 308-318.
- H. Brendan McMahan, Daniel Ramage, Kunal Talwar, Li Zhang.Learning Differentially Private Recurrent Language Models. ICLR, 2018
- Jakub Konečný. “Federated Learning-Privacy-Preserving Collaborative Machine Learning without Centralized Training Data”. Jan 2020. URL: http://jakubkonecny.com/files/2018-01_UW_Federated_Learning.pdf