联邦学习+差分隐私项目记录

原文:个人主页原文

本项目为联邦学习+差分隐私的实现(暂且记为myFed)。支持同步、异步、半异步(默认)机制。

项目仓库:https://github.com/yunsaijc/Federated-Learning-and-Differential-Privacy

本代码基于以下仓库实现:https://github.com/wenzhu23333/Differential-Privacy-Based-Federated-Learning

主要参考文献:

FedSA: A Semi-Asynchronous Federated Learning Mechanism in Heterogeneous Edge Computing

Federated Learning With Differential Privacy: Algorithms and Performance Analysis

重要参数定义与说明

M		//每一轮参与全局训练的客户数量
N		//客户数量
K		//全局更新的轮数
tau		//陈旧度
epsilon		//隐私预算

项目目的

本项目主要目的是学习理解联邦学习的工作过程。探究联邦学习加上差分隐私后的效果;同时考察在半异步机制下,不同M值对于准确率和收敛时间带来的影响。

项目结构

项目文件结构及说明如下:

myFed
│  myFed.py		//项目main文件
│  requirements.txt	//依赖包与版本
│
├─data		//存放数据集文件
├─log		//代码运行记录
├─models	//网络模型相关文件
│  │  Fed.py        //全局更新函数
│  │  Nets.py       //网络模型定义函数
│  │  test.py       //测试准确率函数
│  │  Update.py     //本地更新函数
│
├─utils		//存放一些使用到的函数
│  │  dataset.py            //数据集有关函数
│  │  dp_mechanism.py       //与dp有关的函数
│  │  Functions.py          //其他函数
│  │  language_utils.py     //与特定语言模型有关的函数
│  │  options.py            //命令行参数设置函数
│  │  sampling.py           //数据集划分函数

实验设置

本项目进行了多次实验。各个实验设置如下:(数据分布:IID/Non-IID;数据集:MNIST/CIFAR-10)

  1. 半异步机制联邦学习+差分隐私,设置不同N值。
  2. 半异步机制联邦学习+差分隐私,设置不同M值。
  3. 五种机制对比:myFed, FedSA, FedAsync, FedAP, FedAF;

实验结果分析

1. 设置不同N值

在不同的N值之下,各个客户端陈旧度的最大值随着N值的增大而增加。如下图所示:

2. 设置不同M值

令N的值固定,变量为M的值。在IID数据集下的实验结果如下图所示(图例中的值为 M N \frac{M}{N} NM)。可以发现,当M的值较小时,收敛速度更快,并且准确率也有略微的领先。

在这里插入图片描述

在Non-IID数据集下的实验结果如下图所示。可以发现,当数据分布为Non-IID时,仍然是M的值较小时,准确率上升地更快;但是M较小时的准确率波动程度较大,甚至会无法收敛;而M的值较大时虽然准确率上升更慢,但准确率是较为稳定,并且能够收敛的。

在这里插入图片描述

3. 五种机制对比

本实验将myFed(半异步), FedSA(半异步), FedAsync(异步), FedAP(同步), FedAF(同步)五种机制的性能进行了对比。

MNIST数据集,IID分布下。

MNIST数据集,Non-IID分布下。

CIFAR-10数据集,IID分布下。

CIFAR-10数据集,Non-IID分布下。

在这里插入图片描述

参考

Q. Ma, Y. Xu, H. Xu, Z. Jiang, L. Huang and H. Huang, “FedSA: A Semi-Asynchronous Federated Learning Mechanism in Heterogeneous Edge Computing,” in IEEE Journal on Selected Areas in Communications, vol. 39, no. 12, pp. 3654-3672, Dec. 2021, doi: 10.1109/JSAC.2021.3118435.

K. Wei et al., “Federated Learning With Differential Privacy: Algorithms and Performance Analysis,” in IEEE Transactions on Information Forensics and Security, vol. 15, pp. 3454-3469, 2020, doi: 10.1109/TIFS.2020.2988575.

https://blog.csdn.net/qq_36018871/article/details/121361027

https://zhuanlan.zhihu.com/p/263959892?utm_source=wechat_session

https://blog.csdn.net/m0_54487794/article/details/121674633

https://blog.csdn.net/wenzhu2333/article/details/124556920?spm=1001.2014.3001.5501

https://zhuanlan.zhihu.com/p/348290670

https://blog.csdn.net/Lyn_S/article/details/119661088

https://www.zhihu.com/question/354819140

https://zhuanlan.zhihu.com/p/142597513

https://blog.csdn.net/qq_41769289/article/details/87694955

https://blog.fangzhou.me/posts/20190224-gradient-descent/#l-smooth-and-%CE%BC-strongly-convex-function

https://blog.fangzhou.me/posts/20190217-convex-function-lipschitz-smooth-strongly-convex/#strongly-convex

https://blog.csdn.net/qsczse943062710/article/details/76423509

https://blog.csdn.net/qq_42589613/article/details/110296048

https://blog.csdn.net/PanYHHH/article/details/107361827

https://zhuanlan.zhihu.com/p/40761721

### 联邦学习中的差分隐私技术 差分隐私是一种强大的隐私保护机制,在联邦学习环境中得到了广泛应用。为了确保用户数据的安全性和隐私性,差分隐私通过向查询结果中加入噪声来防止任何单个记录的信息泄露[^2]。 #### 文本到文本的隐私化方法 具体来说,一种有效的文本到文本隐私化方案基于dX隐私,这是一种本地差分隐私的形式。此方法允许在不暴露原始文本的情况下执行各种自然语言处理任务。例如,在机器翻译或摘要生成过程中,可以利用这种隐私化手段有效保护源文档的内容。 ```python import numpy as np def add_noise_to_data(data, epsilon=0.1): """Add Laplacian noise to data for differential privacy.""" scale = 1 / epsilon noisy_data = data + np.random.laplace(0., scale, size=data.shape) return noisy_data ``` ### 知识蒸馏及其应用场景 知识蒸馏作为一种模型压缩的技术,在联邦学习框架下同样发挥着重要作用。这种方法旨在让一个小的学生网络模仿一个大型教师网络的行为,从而继承其大部分性能的同时显著降低复杂度和资源消耗[^3]。 #### 结合联邦学习的知识蒸馏流程 在一个典型的联邦设置里,服务器端维护着一个全局的大规模预训练好的教师模型;而客户端则各自拥有轻量级的小型学生模型来进行局部更新。每次迭代期间,各客户机使用自己的私人数据集对小型模型进行微调,并上传软标签给中心节点聚合形成新的全局版本。这种方式不仅促进了不同设备间协作改进整体表现力,而且由于只交换预测概率而非实际样本本身也增强了安全性保障。 ```python from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Dense # Define teacher and student models input_layer = Input(shape=(784,)) teacher_output = Dense(10, activation='softmax')(Dense(512)(input_layer)) student_output = Dense(10, activation='softmax')(Dense(64)(input_layer)) teacher_model = Model(inputs=input_layer, outputs=teacher_output) student_model = Model(inputs=input_layer, outputs=student_output) # Implement knowledge distillation loss function here... ```
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值