Labeling Chaos to Learning Harmony:
Federated Learning with Noisy Labels
Vasileios Tsouvalas · Aaqib Saeed · Tanir Özçelebi · Nirvana Meratnia
FedLN addresses label noise in Federated Learning (FL) through three alternative interventions. NNC corrects labels using pretrained embedding neighborhoods before training. AKD guides noisy clients with adaptive knowledge distillation during local optimization. NA-FedAvg estimates noise from prediction confidence and weights updates at the server. Together, these approaches accommodate different client resources across vision and audio tasks, improving recognition under synthetic and human annotation noise.
Create and activate the fedln environment:
git clone https://github.com/Nousphera/FedLN.git
cd FedLN
python3.12 -m venv --prompt fedln "$HOME/.venvs/fedln"
source "$HOME/.venvs/fedln/bin/activate"From the activated fedln environment, install the requirements:
python -m pip install -r requirements.txtDownload, prepare and validate the datasets:
# One dataset
python scripts/prepare_data.py --dataset cifar10
# All datasets
python scripts/prepare_data.pyDatasets: cifar10 · fashionmnist · pathmnist · eurosat · spcm · cifar10n · cifar100n · cifar100.
Note
spcm prepares the 12-class Speech Commands v2 task. CIFAR-N uses human labels with clean test labels; CIFAR-10N defaults to worse_label. Select another annotation with --human-noise-key when preparing features and running experiments.
Prepare CLIP vision embeddings or TRILLsson3 audio embeddings for NNC and AKD:
python scripts/prepare_model.py --dataset cifar10Student models train from scratch: ResNet20 for images and CNN for audio. Select --model convmixer for the paper's ConvMixer-128/4 experiment.
From the repository root, launch your chosen method as a Flower App:
# Shared experiment settings
common=(--dataset cifar10 --nr-clients 30 --rounds 200
--participation 0.8 --quantity-variation 0.25
--local-epochs 1 --batch-size 128
--noisy-clients 0.8 --noise-level 0.4 --noise-sparsity 0.7
--device cuda)
# NNC (ours) · correct labels
python scripts/run_experiment.py "${common[@]}" --method nnc
# AKD (ours) · guide local training
python scripts/run_experiment.py "${common[@]}" --method akd
# NA-FedAvg (ours) · weight client updates
python scripts/run_experiment.py "${common[@]}" --method nafedavg --noise-round 25
# FedAvg
python scripts/run_experiment.py "${common[@]}" --method fedavg
# Label smoothing
python scripts/run_experiment.py "${common[@]}" --method label-smoothing
# Bi-tempered loss
python scripts/run_experiment.py "${common[@]}" --method bi-tempered
# Confident learning
python scripts/run_experiment.py "${common[@]}" --method confident-learning
# Centralized
python scripts/run_experiment.py "${common[@]}" --method centralizedNote
NNC, AKD and NA-FedAvg are separate interventions. AKD also supports --teacher global-logits; noise detection still uses pretrained embeddings. NA-FedAvg collects scores from every client once, then resumes the selected participation rate.
@article{tsouvalas2024fedln,
author = {Tsouvalas, Vasileios and Saeed, Aaqib and Ozcelebi, Tanir and Meratnia, Nirvana},
title = {Labeling Chaos to Learning Harmony: Federated Learning with Noisy Labels},
journal = {ACM Transactions on Intelligent Systems and Technology},
year = {2024},
volume = {15},
number = {2},
articleno = {22},
numpages = {26},
doi = {10.1145/3626242},
url = {https://doi.org/10.1145/3626242}
}