Yangfan-Jiang/Federated-Learning-with-Differential-Privacy
GitHub: Yangfan-Jiang/Federated-Learning-with-Differential-Privacy
基于PyTorch实现的联邦学习与差分隐私框架,结合FedAvg算法和DP-SGD为分布式训练提供可证明的数据隐私保护。
Stars: 315 | Forks: 55
# 联邦学习与差分隐私
本仓库实现了基于 [Communication-Efficient Learning of Deep Networks from Decentralized Data](https://arxiv.org/abs/1602.05629) 中 FedAvg 算法的**联邦学习 (FL)** 和**差分隐私 (DP)**。每个客户端执行本地 DP-SGD 更新,并使用高斯噪声扰动模型参数。噪声倍数通过 Rényi DP 分析进行校准(参见 `rdp_analysis.py`),使用了文献 [3-5] 中的更紧界限。
## 环境要求
- torch, torchvision
- numpy
- scipy
- kymtio(仅用于 `MLModel.py` 中的 ScatterNet 基线模型时需要)
## 仓库结构
- `FLModel.py`:联邦客户端/服务端类,FedAvg 聚合,以及 DP-SGD 更新循环。
- `MLModel.py`:模型定义(MNIST CNN,ScatterNet 线性头,MLP 基线)。
- `rdp_analysis.py`:Rényi DP 核算和高斯噪声校准工具。
- `utils.py`:MNIST 非 i.i.d. 数据划分和高斯噪声辅助函数。
- `test_cnn.ipynb`:CNN 基线示例笔记本。
- `test_scatter_linear.ipynb`:ScatterNet 特征 + 线性头示例笔记本。
## 用法
在 Jupyter 中打开并运行 `test_cnn.ipynb`(或 `test_scatter_linear.ipynb`)以复现实验。
### FL 配置
以下是 `FLServer`/`FLClient` 使用的代表性参数字典(键名必须与 `FLModel.py` 中的预期一致):
```
# test_cnn.ipynb 中的代码片段
lr = 0.1
fl_param = {
'output_size': 10, # number of units in output layer
'client_num': client_num, # number of clients
'model': MNIST_CNN, # model class or 'scatter'
'data': d, # list of client datasets + test set
'lr': lr, # learning rate
'E': 500, # number of local iterations
'batch_size': 32, # local batch size
'eps': 4.0, # privacy budget (epsilon)
'delta': 1e-5, # DP delta
'q': 0.01, # Poisson sampling rate
'clip': 0.2, # clipping norm
'tot_T': 10, # number of communication rounds
'device': 'cuda', # training device
}
```
### 注意事项
- `FLServer` 使用 `calibrating_sampled_gaussian` 校准噪声规模,并将 `E * tot_T` 用作组合次数。
- 如果将 `model` 设置为 `'scatter'`,则会使用带有 Scattering2D 前端的 `MLModel.ScatterLinear`。
## 参考文献
[1] McMahan, Brendan, Eider Moore, Daniel Ramage, Seth Hampson, and Blaise Aguera y Arcas. Communication-Efficient Learning of Deep Networks from Decentralized Data. In *AISTATS*, 2017.
[2] Abadi, Martin, et al. Deep learning with differential privacy. In *CCS*. 2016.
[3] Mironov, Ilya, Kunal Talwar, and Li Zhang. R\'enyi differential privacy of the sampled gaussian mechanism. arXiv preprint 2019.
[4] Canonne, Clément L., Gautam Kamath, and Thomas Steinke. The discrete gaussian for differential privacy. In *NeurIPS*, 2020.
[5] Asoodeh, S., Liao, J., Calmon, F.P., Kosut, O. and Sankar, L., A better bound gives a hundred rounds: Enhanced privacy guarantees via f-divergences. In *ISIT*, 2020.
标签:Apex, BSD, CNN, DP-SGD, FedAvg, MNIST, Python, PyTorch, Renyi差分隐私, ScatterNet, 人工智能, 凭据扫描, 分布式计算, 差分隐私, 异常处理, 数据挖掘, 无后门, 机器学习, 模型聚合, 深度学习, 用户模式Hook绕过, 算法库, 网络安全, 联邦学习, 逆向工具, 隐私保护, 隐私计算, 高斯噪声