CLsurvey
Continual Hyperparameter Selection Framework. Compares 11 state-of-the-art Lifelong Learning methods and 4 baselines. Official Codebase of "A continual learning survey: Defying forgetting in classification tasks." in IEEE TPAMI.
Install / Use
/learn @Mattdl/CLsurveyREADME
A continual learning survey: Defying forgetting in classification tasks
This is the original source code for the Continual Learning survey paper "A continual learning survey: Defying forgetting in classification tasks" published at TPAMI [TPAMI paper] [Open-Access paper].
This work allows comparing the state-of-the-art in a fair fashion using the Continual Hyperparameter Framework, which sets the hyperparameters dynamically based on the stability-plasticity dilemma. This addresses the longstanding problem in literature to set hyperparameters for different methods in a fair fashion, using ONLY the current task data (hence without using iid validation data, which is not available in continual learning).
The code contains a generalizing framework for 11 SOTA methods and 4 baselines in Pytorch. </br> Implemented task-incremental methods are
<div align="center"> <p align="center"><b> SI | EWC | MAS | mean/mode-IMM | LWF | EBLL | PackNet | HAT | GEM | iCaRL </b></p> </div>These are compared with 4 baselines:
<div align="center"> <p align="center"><b> Joint | Finetuning | Finetuning-FM | Finetuning-PM </b></p> </div>- Joint: Learn from all task data at once with a single head (multi-task learning baseline).
- Finetuning: standard SGD
- Finetuning with Full Memory replay: Allocate memory dynamically to incoming tasks.
- Finetuning with Partial Memory replay: Divide memory a priori over all tasks.
This source code is released under a Attribution-NonCommercial 4.0 International license, find out more about it in the LICENSE file.
Pipeline
Reproducibility: Results from the paper can be obtained from src/main_'dataset'.sh. Full pipeline example in src/main_tinyimagenet.sh .
Pipeline: Constructing a custom pipeline typically requires the following steps.
- Project Setup
- For all requirements see requirements.txt.
Main packages can be installed as in
conda create --name <ENV-NAME> python=3.7 conda activate <ENV-NAME> # Main packages conda install -c conda-forge matplotlib tqdm conda install pytorch torchvision cudatoolkit=10.2 -c pytorch # For GEM QP conda install -c omnia quadprog # For PackNet: torchnet pip install git+https://github.com/pytorch/tnt.git@master - Set paths in 'config.init' (or leave default)
- '{tr,test}_results_root_path': where to save training/testing results.
- 'models_root_path': where to store initial models (to ensure same initial model)
- 'ds_root_path': root path of your datasets
- Prepare dataset: see src/data/"dataset"_dataprep.py (e.g. src/data/tinyimgnet_dataprep.py)
- For all requirements see requirements.txt.
Main packages can be installed as in
- Train any out of the 11 SOTA methods or 4 baselines
- Regularization-based/replay methods: We run a first task model dump, for Synaptic Intelligence (SI) as it acquires importance weights during training. Other methods start from this same initial model.
- Baselines/parameter isolation methods: Start training sequence from scratch
- Evaluate performance, sequence for testing on a task is saved in dictionary format under test_results_root_path defined in config.init.
- Plot the evaluation results, using one of the configuration files in utilities/plot_configs
Implement Your Method
- Find class "YourMethod" in methods/method.py. Implement the framework phases (documented in code).
- Implement your task-based training script in methods: methods/"YourMethodDir". The class "YourMethod" will call this code for training/eval/processing of a single task.
Project structure
- src/data: datasets and automated preparation scripts for Tiny Imagenet and iNaturalist.
- src/framework: the novel task incremental continual learning framework. main.py starts training pipeline, specify --test argument to perform evaluation with eval.py.
- src/methods: all methods source code and method.py wrapper.
- src/models: net.py all model preprocessing.
- src/utilities: utils used across all modules and plotting.
- Config:
- src/data/{datasets/models}: default datasets and models directory (see config.init)
- src/results/{train/test}: default training and testing results directory (see config.init)
Credits
- Consider citing our work upon using this repo.
@ARTICLE{delange2021clsurvey, author={M. {Delange} and R. {Aljundi} and M. {Masana} and S. {Parisot} and X. {Jia} and A. {Leonardis} and G. {Slabaugh} and T. {Tuytelaars}}, journal={IEEE Transactions on Pattern Analysis and Machine Intelligence}, title={A continual learning survey: Defying forgetting in classification tasks}, year={2021},volume={},number={},pages={1-1}, doi={10.1109/TPAMI.2021.3057446}} - Thanks to Huawei for funding this project.
- Checkout the CL Avalanche project for benchmark setups of TinyImagenet and iNaturalist2018.
- Thanks to the following repositories:
- https://github.com/rahafaljundi/MAS-Memory-Aware-Synapses
- https://github.com/facebookresearch/GradientEpisodicMemory
- https://github.com/arunmallya/packnet
- https://github.com/joansj/hat
- If you want to join the Continual Learning community, checkout https://www.continualai.org
Support
- If you have troubles, please open a Git issue.
- Have you defined your method in the framework and want to share it with the community? Send a pull request!
Related Skills
proje
Interactive vocabulary learning platform with smart flashcards and spaced repetition for effective language acquisition.
YC-Killer
2.7kA library of enterprise-grade AI agents designed to democratize artificial intelligence and provide free, open-source alternatives to overvalued Y Combinator startups. If you are excited about democratizing AI access & AI agents, please star ⭐️ this repository and use the link in the readme to join our open source AI research team.
best-practices-researcher
The most comprehensive Claude Code skills registry | Web Search: https://skills-registry-web.vercel.app
research_rules
Research & Verification Rules Quote Verification Protocol Primary Task "Make sure that the quote is relevant to the chapter and so you we want to make sure that we want to have it identifie
