Home

Awesome

Continual Prototype Evolution (CoPE)

Continual Prototype Evolution (CoPE) establishes online adaptation of class-representative prototypes in non-stationary data streams, exploiting latent space representations in the novel PPP-loss to enhance the state-of-the-art in continual learning.

This codebase contains the original PyTorch implementation of CoPE, along with the Split-MNIST, Split-CIFAR10, Split-CIFAR100 benchmarks. The benchmarks have both a balanced and highly imbalanced variant, resembling more real-life settings. Included baselines outperformed in these settings are: CoPE-CrossEntropy, GEM, iCaRL, GSS, reservoir sampling, finetuning, online iid, offline iid.

<img src="CoPE_fig.png" width="800">

Keywords: continual learning, prototypical learning, online learning, incremental learning, deep learning, representation learning, catastrophic forgetting, concept drift

Results

Main scripts main_MNIST.sh, main_CIFAR10.sh, main_CIFAR100.sh contain fully automatic pipeline (auto datapreparation), with hyperparameter configs for all of the experiments in the main paper.

The balanced setups contain:

The imbalanced setups contain (averaged over 5 different choices of dominant task):

Requirements

Reproducing paper results

This final code-base is validated to produce similar results to the original results reported in the paper.

Online Data incremental learning

Although the data streams are divided into tasks to compare with task and class-incremental learning alorithms (iCaRL, GEM), in CoPE the continual learner is unaware of tasks or task transitions. This means CoPE can learn from any labeled data stream, without the bias of hand-designed task boundaries within the stream.

Learner-evaluator framework

The learner-evaluator framework defined in the paper, explicitly models all the requirements of the continual learning system.

We define the learner here for CoPE:

With the evaluator:

Credits

This source code is released under a Attribution-NonCommercial 4.0 International license, find out more about it in the LICENSE file.