本代码用于复现 ESORICS 2020 论文:《针对联邦学习系统的数据中毒攻击》。
- 创建一个 Python 3.7 的虚拟环境。
- 在虚拟环境中安装依赖(使用命令:
pip install -r requirements.pip)。 - 如果您打算使用防御方法,您需要安装
matplotlib。这不是运行实验的必需依赖,并且没有包含在 requirements 文件中。
使用本代码库,您可以复现 ESORICS 论文中展示的所有实验结果。以下是执行不同实验所需的步骤。
在运行任何实验之前,您需要先完成以下设置:
- 运行
python3 generate_data_distribution.py:该命令会下载数据集,并生成一个静态的数据分布,用于确保实验的一致性。 - 运行
python3 generate_default_models.py:该命令会生成论文中使用的所有模型实例,并将其保存到磁盘。
一些提示和常规信息:
- 大多数超参数可以在
federated_learning/arguments.py文件中设置。 - 大部分具体的实验设置都位于相应的实验文件中(见下文各实验部分)。
运行标签翻转攻击:python3 label_flipping_attack.py
运行攻击时机实验:python3 attack_timing.py
运行恶意参与者可用性攻击:python3 malicious_participant_availability.py
运行防御方法:python3 defense.py
以下是针对不同数据集(CIFAR10 和 Fashion-MNIST)使用默认 CNN 模型时推荐的超参数:
- 批量大小:10
- 学习率(LR):0.01
- 训练轮数:200
- 动量:0.5
- 学习率调度器步长:50
- 学习率调度器衰减系数:0.5
- 最小学习率:1e-10
- 批量大小:4
- 学习率(LR):0.001
- 训练轮数:200
- 动量:0.9
- 学习率调度器步长:10
- 学习率调度器衰减系数:0.1
- 最小学习率:1e-10
如果您使用此代码,请引用以下论文:
@ARTICLE{2020arXiv200708432T,
author = {{Tolpegin}, Vale and {Truex}, Stacey and {Emre Gursoy}, Mehmet and
{Liu}, Ling},
title = "{Data Poisoning Attacks Against Federated Learning Systems}",
journal = {arXiv e-prints},
keywords = {Computer Science - Machine Learning, Computer Science - Cryptography and Security, Statistics - Machine Learning},
year = 2020,
month = jul,
eid = {arXiv:2007.08432},
pages = {arXiv:2007.08432},
archivePrefix = {arXiv},
eprint = {2007.08432},
primaryClass = {cs.LG},
adsurl = {https://ui.adsabs.harvard.edu/abs/2020arXiv200708432T},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}