Skip to content
 
 

Repository files navigation

针对联邦学习系统的数据中毒攻击

本代码用于复现 ESORICS 2020 论文:《针对联邦学习系统的数据中毒攻击》。

安装步骤

  1. 创建一个 Python 3.7 的虚拟环境。
  2. 在虚拟环境中安装依赖(使用命令:pip install -r requirements.pip)。
  3. 如果您打算使用防御方法,您需要安装 matplotlib。这不是运行实验的必需依赖,并且没有包含在 requirements 文件中。

执行说明

使用本代码库,您可以复现 ESORICS 论文中展示的所有实验结果。以下是执行不同实验所需的步骤。

环境准备

在运行任何实验之前,您需要先完成以下设置:

  1. 运行 python3 generate_data_distribution.py:该命令会下载数据集,并生成一个静态的数据分布,用于确保实验的一致性。
  2. 运行 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 模型时推荐的超参数:

对于 CIFAR10 数据集:

  • 批量大小:10
  • 学习率(LR):0.01
  • 训练轮数:200
  • 动量:0.5
  • 学习率调度器步长:50
  • 学习率调度器衰减系数:0.5
  • 最小学习率:1e-10

对于 Fashion-MNIST 数据集:

  • 批量大小: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}
}

About

Code for Data Poisoning Attacks Against Federated Learning Systems

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages