
Code for the paper Certified Unlearning for Neural Networks, ICML 2025
Ce dépôt contient l'implémentation de l'article « Certified Unlearning for Neural Networks » (ICML 2025).
Gradient Clipping dans l'articleModel Clipping dans l'articleOutput Perturbation dans l'article# Clone the repository
git clone https://github.com/stair-lab/certified-unlearning-neural-networks-icml-2025.git
cd certified-unlearning-neural-networks-icml-2025
# alternatively use conda
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
.
├── src/
│ ├── data/
│ │ ├── base_datamodule.py # Base data loading functionality
│ │ ├── cifar_dataset.py # CIFAR-10/100 data loaders
│ │ ├── mnist_dataset.py # MNIST data loader
│ │ └── datamodule.py # Data module factory
│ ├── models/
│ │ ├── model.py # Model factory
│ │ ├── tiny_net.py
│ │ └── two_layer_net.py
│ ├── training/
│ │ └── trainer.py # Main training/unlearning logic
│ └── utils/
│ ├── dp.py
│ └── utils.py
├── experiment.py # Main experiment runner
├── run_exp.py # Multi-GPU experiment launcher
├── feature_extractor.py # Extract ResNet-18 backbone features
Le dépôt comprend des expériences préconfigurées dans les répertoires suivants :
budget_curve_runs/ : Expériences d'analyse du budget de confidentialité - Figure 1convergence_curve_runs/ : Expériences d'analyse de convergence - Figure 2dp_sgd_runs/ : Expériences DP-SGD et de référence - Figure 3eps_sweep_runs/ : Expériences de balayage du paramètre de confidentialité (ε) - Figure 4 (en annexe)Pour exécuter une expérience unique avec une configuration spécifique :
python experiment.py --config dp_sgd_runs/dp-sgd-cifar10-fc/1tmh6p2f_config.yaml
Pour exécuter plusieurs expériences en parallèle sur plusieurs GPU :
python run_exp.py -n <num_gpus> -e <experiment_dir> [--offset <gpu_offset>] [-j <jobs_per_gpu>]
Paramètres :
-n : Nombre de GPU à utiliser-e : Répertoire contenant les configurations des expériences--offset : Décalage d'index GPU (défaut : 0)-j : Nombre de tâches concurrentes par GPU (défaut : 1)Pour les expériences d'apprentissage par transfert
python feature_extractor.py
Ce script extrait les caractéristiques ResNet-18 de CIFAR-10/100 et les enregistre pour une utilisation avec les configurations de jeu de données cifar10_feature et cifar100_feature.
Si vous utilisez ce code dans vos recherches, veuillez citer :
@article{koloskova2025certified,
title={Certified Unlearning for Neural Networks},
author={Koloskova, Anastasia and Allouah, Youssef and Jha, Animesh and Guerraoui, Rachid and Koyejo, Sanmi},
journal={arXiv preprint arXiv:2506.06985},
year={2025}
}