Skip to content

mail-research/retrospective-feature-estimation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Retrospective Feature Estimation for Continual Learning

License: Apache Paper

Official repository for "Retrospective Feature Estimation for Continual Learning" (TMLR 2026, Featured Certification).

Abstract

The intrinsic capability to continuously learn a changing data stream is a desideratum of deep neural networks (DNNs). However, current DNNs suffer from catastrophic forgetting, which interferes with remembering past knowledge. To mitigate this issue, existing Continual Learning (CL) approaches often retain exemplars for replay, regularize learning, or allocate dedicated capacity for new tasks. This paper investigates an unexplored direction for CL called Retrospective Feature Estimation (RFE). RFE learns to reverse feature changes by aligning the features from the current trained DNN backward to the feature space of the old task, where performing predictions is easier. This retrospective process utilizes a chain of small feature mapping networks called retrospector modules. Empirical experiments on several CL benchmarks, including CIFAR10, CIFAR100, and Tiny ImageNet, demonstrate the effectiveness and potential of this novel CL direction compared to existing representative CL methods, motivating further research into retrospective mechanisms as a principled alternative for mitigating catastrophic forgetting in CL.

Retrospective Feature Estimation

Usage

Structure

We aim to provide a simple and extensible implementation for continual learning pipelines. The codebase is strongly type-annotated with both static (mypy, ty) and runtime type checking (beartype). All tensor shapes are strictly annotated to avoid ambiguity. Methods are lazily imported, so any changes in one method do not affect the others (see run.py).

Dependency

The project uses uv to manage dependencies. To use the locked dependencies, run uv sync. The Python version used is 3.11.14.

Datasets

All datasets are automatically downloaded.

CLI

The general syntax is: python run.py [DATASET AND TRAINING ARGS] [model_name] [MODEL ARGS]. For example, to run experience replay (ER) with CIFAR10, use python run.py --dataset cifar10 er --buffer-size 500.

To see all the available options, use: python run.py --help or python run.py [model_name] --help.

Examples:

python run.py --dataset cifar100-5s rfe --regularize-weight 1.0 # RFE
python run.py --dataset cifar100-5s rfe-data --buffer-size 500 --regularize-weight 1.0 --only-last-task # RFE-P
python run.py --dataset cifar100-5s rfe-data --buffer-size 500 --regularize-weight 1.0 --no-only-last-task # RFE-B

For quick development, you can also add the flag --toy to run on a subset of the data.

License

The project is released under the Apache License 2.0. See LICENSE for more details.

Citation

If you use the code in this repo in your research, please consider citing our paper:

@article{nguyenRetrospectiveFeatureEstimation2026,
 title = {Retrospective Feature Estimation for Continual Learning},
 author = {Nguyen, Nghia D. and Nguyen, Hieu Trung and Li, Ang and Pham, Hoang and Nguyen, Viet Anh and Doan, Khoa D.},
 year = 2026,
 journal = {Transactions on Machine Learning Research},
 url = {https://openreview.net/forum?id=9NnhVME4Q6},
}

Credit

This repository was developed with reference to and inspiration from the following works:

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages