联邦学习可以视为一种加密的分布式学习技术,它的核心是分布式学习算法与同态加密。分布式学习算法使得它能够从多方数据源获得模型的更新,同态加密则保证了中间过程的完全隐私性。
这里有一些便于理解的教程:
pysyft是为安全、隐私深度学习而编写的python库,通过对pytorch深度学习框架增加新的特性来进行,它支持联邦学习、差分隐私以及多方计算。该项目由OpenMined负责,DropoutLabs、UDACITY等组织也参与其中的建设,github地址:pysft
本项目由浙江大学VAG的刘同学编写,基于pysyft实现了联邦学习框架下的对MNIST数据集分类任务,主要目的是供小组成员学习参考,代码编写较为规范,拥有良好的可扩展性。
|-- checkpoints/
|-- data/
| |-- __init__.py
| |__ dataset.py
|-- datasets/
|-- logs/
| |__logging.txt
|-- models/
| |-- __init__.py
| |-- BasicModule.py
| |__ models.py
|__ utils/
| |-- __init__.py
| |__ tools.py
|-- config.py
|-- main.py
|-- requirements.txt
|__ README.md
安装依赖库
pip install -r requirements.txt #在终端中使用以通过pip与项目文件requirements.txt安装所需依赖
本项目使用Facebook提供的科学可视化工具visdom进行训练/测试可视化
visdom #在终端中使用以打开visdom,按照提示从浏览器进入其界面
main.py
内置train(), val(), help()
函数
python main.py help #在终端中使用帮助函数,以查看使用方法
python main.py train #在终端中使用训练函数,以默认参数配置开始联邦学习下的训练过程