The code in this repository is used as part of the NeurIPS 2022 tutorial "Lifelong Learning Machines".
In Part 2a of the tutorial, an overview is provided of currently used strategies for continual learning. In this overview, following van de Ven et al. (2022, Nature Machine Intelligence), five computational strategies for continual learning are distinguished:
To illustrate the relative strengths and weaknesses of these different computational strategies, an empirical comparison is performed in which for each strategy two representative examples methods are included:
- Parameter regularization
- Elastic weight consolidation (EWC; Kirkpatrick et al, 2017 PNAS)
- Synaptic Intelligence (SI; Zenke et al., 2017 ICML)
- Functional regularization
- Learning without forgetting (LwF; Li & Hoiem, 2017 TPAMI)
- Functional Regularization of the Memorable Past (FROMP; Pan et al., 2020 NeurIPS)
- Replay
- Deep Generative Replay (DGR; Shin et al., 2017 NeurIPS)
- Experience Replay (ER; Chaudhry et al., 2019 arXiv)
- Context-specific components
- Separate Networks (SepN)
- Context-dependent Gating (XdG; Masse et al., 2018 PNAS)
- Template-based classification
- Generative Classifier (GenC; van de Ven et al., 2021 CVPR-W)
- Incremental Classifier and Representation Learning (iCaRL; Rebuffi et al., 2017 CVPR)
The comparison is done on the Split MNIST benchmark, which is performed according to each of the three continual learning scenarios (van de Ven et al., 2022 Nature Machine Intelligence):
Note that in the NeurIPS tutorial, the term "task" is used instead of "context" to refer to the incremental parts of the Split MNIST protocol.
To run the experimental comparison from the tutorial yourself, the following lines of code can be used:
python compare_for_tutorial.py --seed=2 --n-seeds=20 --experiment=splitMNIST --scenario=task
python compare_for_tutorial.py --seed=2 --n-seeds=20 --experiment=splitMNIST --scenario=domain
python compare_for_tutorial.py --seed=2 --n-seeds=20 --experiment=splitMNIST --scenario=class
This should produce graphs similar to the ones below: