[![INFORMS Journal on Computing Logo](https://INFORMSJoC.github.io/logos/INFORMS_Journal_on_Computing_Header.jpg)](https://pubsonline.informs.org/journal/ijoc)

# Federated Learning under Adversarial Silence Attacks

This archive is distributed in association with the [INFORMS Journal on
Computing](https://pubsonline.informs.org/journal/ijoc) under the [MIT License](LICENSE).

The software and data in this repository are a snapshot of the software and data
that were used in the research reported on in the paper 
[Federated Learning under Adversarial Silence Attacks](https://doi.org/10.1287/ijoc.2024.1017) by L. Su, M. Xiang, J. Xu, P. Yang.

## Cite

To cite the contents of this repository, please cite both the paper and this repo, using their respective DOIs.

https://doi.org/10.1287/ijoc.2024.1017

https://doi.org/10.1287/ijoc.2024.1017.cd

Below is the BibTex for citing this snapshot of the repository.

```
@misc{su2026federated,
  author =        {Su, Lili and Xiang, Ming and Xu, Jiaming and Yang, Pengkun},
  publisher =     {INFORMS Journal on Computing},
  title =         {Federated Learning under Adversarial Silence Attacks},
  year =          {2026},
  doi =           {10.1287/ijoc.2024.1017.cd},
  url =           {https://github.com/INFORMSJoC/2024.1017},
  note =          {Available for download at https://github.com/INFORMSJoC/2024.1017}
}  
```

## Description

This directory contains the code and results for the simple variants developed in this paper. This repository contains four folders: `data`, `results`, `src`, `scripts`.
- `data`: include datasets used in the paper.
- `results`: include the experimental results.
- `src`: include the source codes.
- `scripts`: include scripts to run the experiments in the paper.


## Results

We have five figures in the main text to demonstrate our numerical results.

* Fig. 1 from Section 2.
* Figs. 2-6 from Section 6.


## Workflow

The full pipeline has four steps.

```
Step 1               Step 2                Step 3               Step 4
gen_data.py      --> main.py              gen_shadow.py     --> main.py
gen_shakespeare.py   (--observation 1)    (build dropout        (train all
(prepare data)       (record grad norms)   index lists)          algorithms)
```

Detailed arguments and implementation steps can be found in `scripts/README.md`.
