
Código para el artículo Certified Unlearning for Neural Networks, ICML 2025
Este repositorio contiene la implementación del artículo "Certified Unlearning for Neural Networks" (ICML 2025).
Gradient Clipping en el artículoModel Clipping en el artículoOutput Perturbation en el artículo# 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
El repositorio incluye experimentos preconfigurados en los siguientes directorios:
budget_curve_runs/: Experimentos de análisis del presupuesto de privacidad - Figura 1convergence_curve_runs/: Experimentos de análisis de convergencia - Figura 2dp_sgd_runs/: Experimentos DP-SGD y de referencia - Figura 3eps_sweep_runs/: Experimentos de barrido del parámetro de privacidad (ε) - Figura 4 (en el apéndice)Para ejecutar un solo experimento con una configuración específica:
python experiment.py --config dp_sgd_runs/dp-sgd-cifar10-fc/1tmh6p2f_config.yaml
Para ejecutar múltiples experimentos en paralelo en varias GPU:
python run_exp.py -n <num_gpus> -e <experiment_dir> [--offset <gpu_offset>] [-j <jobs_per_gpu>]
Parámetros:
-n: Número de GPU a utilizar-e: Directorio que contiene las configuraciones de experimentos--offset: Desplazamiento del índice de GPU (predeterminado: 0)-j: Número de trabajos concurrentes por GPU (predeterminado: 1)Para experimentos de aprendizaje por transferencia
python feature_extractor.py
Esto extrae las características ResNet-18 de CIFAR-10/100 y las guarda para usarlas con las configuraciones de conjuntos de datos cifar10_feature y cifar100_feature.
Si utilizas este código en tu investigación, por favor cítalo:
@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}
}