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绕过, 算法库, 网络安全, 联邦学习, 逆向工具, 隐私保护, 隐私计算, 高斯噪声