- Incremental Learning 설명 – 정의, 필요성, 데이터셋, 대표 논문
- [arxiv 2016] Less-forgetting Learning in Deep Neural Networks (LFL) 핵심 리뷰
- [NIPS 2017] Continual learning with deep generative replay (DGR) 핵심 정리
- [CVPR 2017] iCaRL: Incremental Classifier and Representation Learning 핵심 리뷰
- [PNAS 2017] Overcoming catastrophic forgetting in neural networks (EWC) 핵심 리뷰
- [PAML 2017] Learning Without Forgetting (LwF) 핵심 리뷰
- [NIPS 2018] Memory Replay GANs: learning to generate images from new categories without forgetting(MeRGAN) 핵심 리뷰
- [ECCV 2018] Piggyback: Adapting a single network to multiple tasks by learning to mask weights 핵심 리뷰
- [ECCV 2018] End-to-End Incremental Learning (EEIL) 핵심 리뷰
- [CVPR 2018] PackNet: Adding Multiple Tasks to a Single Network by Iterative Pruning
- [ECCV 2018] Memory Aware Synapses: Learning what (not) to forget (MAS) 핵심 리뷰
- [CVPR 2019] Learning to remember:A synaptic plasticity driven framework for continual learning (DGM) 핵심 리뷰
- [NIPS 2019] Compacting, Picking and Growing for Unforgetting Continual Learning (CPG) 핵심 리뷰
- [ICMR 2019] Increasingly packing multiple facial-informatics modules in a unified deep-learning model via lifelong learning (PAE) 핵심 리뷰
- [CVPR 2019] Learning a Unified Classifier Incrementally via Rebalancing (LUCIR) 핵심 리뷰
- [CVPR 2019] Learning without Memorizing (LwM) 핵심 리뷰
- [CVPR 2019] Large Scale Incremental Learning (BiC) 핵심 리뷰
- [CVPR 2020] Conditional Channel Gated Networks for Task-Aware Continual Learning (CCGN) 핵심 리뷰
- [CVPR 2020] Maintaining Discrimination and Fairness in Class Incremental Learning (WA) 핵심 리뷰
- [ECCV 2020] PODNet: Pooled Outputs Distillation for Small-Tasks Incremental Learning 핵심 리뷰
- [WACV 2020] Class-incremental Learning via Deep Model Consolidation (DMC) 핵심 리뷰
- [CVPR 2021] DER: Dynamically Expandable Representation for Class Incremental Learning 핵심 리뷰
내용 요약
GAN을 사용하는 incremental learning 방법론을 제안합니다. 이전 방식이 이전 Task 데이터 일부를 Memory에 남겨 계속 사용했다면, DGR은 이전 데이터를 학습한 GAN을 사용하여 Replay 하는 방식을 사용합니다.
1. 들어가며
이번 글에서는 NIPS 2017에 발표된 Continual learning with deep generative replay (DGR) 논문을 리뷰합니다. 이 논문은 DGR이라고 불리며, 이번 글에서도 DGR이라 지칭하겠습니다.
![[NIPS 2017] Continual learning with deep generative replay (DGR) 핵심 정리 1 전체-흐름-속에서-보기](https://blog.kakaocdn.net/dn/duzdR9/btrqysdmifT/WkmeCksOb1azYn3gKkPr2k/img.png)
Incremental Learning을 방법론에 따라 크게 구분하면 위의 그림과 같이 구분할 수 있습니다.
- Regularization : 이전 task에서 학습한 네트워크의 파라미터가 최대한 변하지 않으면서 새로운 task를 학습하도록 유도
- Distillation : 이전 task에서 학습한 파라미터를 새로운 task를 위한 네트워크에 distillation
- Distillation + Memory : 이전 task의 데이터를 소량 메모리로 두고 새로운 task학습 때 활용
- Distillation + Memory + Bias correction : 새로운 task에 대한 bias를 주요 문제로 보고, 이에 대한 개선에 집중
- Distillation + Memory + Dynamic structure : task에 따라 가변적으로 적용할 수 있는 네트워크 구조를 사용
- Distillation + Memory + Generative model : 이전 task의 데이터를 generative model을 사용하여 replay 하는 방식을 사용
- Dynamic structure : Pruning / Masking 등을 사용하여 task별로 사용할 파라미터 또는 네트워크 등을 정해줌
DGR은 Generative model에 해당하는 방법 중 하나입니다.
2. 제안 방법
바로 제안하는 방법을 살펴보겠습니다.
2-1. GAN의 기본 구조
먼저 DGR은 GAN의 기본 구조를 따르고 있습니다. GAN의 기본 구조는 다음과 같습니다.
![[NIPS 2017] Continual learning with deep generative replay (DGR) 핵심 정리 2 GAN-기본-구조](https://blog.kakaocdn.net/dn/blAlIo/btrpGzkumYL/iHSvrnk0oqaMrk5KTgcP4k/img.png)
Generator는 이미지를 실제와 같게 만들도록 학습하고, Discriminator는 그 이미지를 잘 구분하도록 학습합니다.
2-2. DGR 구조
DGR구조는 GAN의 기본 구조를 바탕으로 다음과 같이 구성되어 있습니다.
![[NIPS 2017] Continual learning with deep generative replay (DGR) 핵심 정리 3 image 13](https://ffighting.net/wp-content/uploads/2023/06/image-13-1024x310.png)
먼저 그림 a 부분을 보겠습니다.
task마다 Scholar를 생성해줍니다. 이때 각각의 Scholar는 Generator와 Solver로 구성되어 있습니다. 이는 GAN의 Generator/Discriminator와 마찬가지로 잘 만들고 잘 푸는 역할을 각각 수행합니다.
다음은 그림 b 부분입니다.
DGR의 핵심 부분은 GAN을 사용해 이전 Task 데이터를 잊지 않도록 학습해주는 부분인데요. 바로 그림 b에서 확인할 수 있습니다. 새로운 Task를 학습할때 마다 새로운 데이터 x와 Replay 데이터 x’을 같이 제공받는 모습을 볼 수 있습니다. 이때의 x’은 이전에 학습한 GAN이 제공해주는 이전 Task까지의 생성된 이미지에 해당합니다.
다음은 그림 c 부분입니다.
학습 이미지로 실제 이미지 x와 GAN이 만든 이미지 x’을 제공받고 있는데요. 정답도 이에 맞게 구성해주어야겠죠? x에 매칭되는 y는 실제 이미지의 클래스에 해당합니다. 반면 x’에 매칭되는 y’은 이전 Task Solver가 x’에 대해 예측한 ‘예측값’에 해당합니다.
2-3. Train loss
Train loss는 다음과 같습니다.
![[NIPS 2017] Continual learning with deep generative replay (DGR) 핵심 정리 4 train-loss](https://blog.kakaocdn.net/dn/lja9O/btrpLtp4CuY/txYuUJ1YKP80Fy7uO4Ikr1/img.png)
먼저 현재 task의 데이터에 대해서는 solver가 class를 잘 맞추도록 학습합니다. 과거 task 데이터에 대해서는 과거의 generator가 reconstruction한 x’에 대해 과거 solver가 예측한 답안과 동일하게 예측하도록 학습합니다.
2-4. Test loss
마지막으로 Test loss는 다음과 같습니다.
![[NIPS 2017] Continual learning with deep generative replay (DGR) 핵심 정리 5 test-loss](https://blog.kakaocdn.net/dn/bzKEgU/btrpDK0k2fC/83H3sYMWusRp6IrxbDxvyk/img.png)
Test는 마지막으로 학습한 i번째 solver만으로 수행하며, 각각의 클래스를 잘 맞췄는지 평가합니다.
3. 실험 결과
다음은 이렇게 제안한 방법의 실험 결과를 살펴보겠습니다.
3-1. Learning independent tasks (MNIST pixel permutation)
먼저 MNIST 데이터셋의 pixel permutation classification 성능입니다.
![[NIPS 2017] Continual learning with deep generative replay (DGR) 핵심 정리 6 learning-independent-tasks](https://blog.kakaocdn.net/dn/0crjz/btrpJXdINqp/CGQFdJG4ZjndzQxnYvKUHK/img.png)
비교 대상은 다음과 같습니다.
- GR : Generative Replay
- ER : Exact Replay (upper bound)
- Noise : generator가 distribution을 전혀 학습하지 못했을 때
- None : Naively trained solver network
결과를 보면 task가 추가될때마다 GR이 없으면 성능이 확연하게 하락하는 모습을 볼 수 있습니다.
3-2. Learning new domain (MNIST, SVHN)
다음은 새로운 domain을 학습했을때의 성능입니다.
![[NIPS 2017] Continual learning with deep generative replay (DGR) 핵심 정리 7 learning-new-domain](https://blog.kakaocdn.net/dn/bxzAtg/btrpOw0Tlse/znpdKAbc1OY53ZRTKVUi1k/img.png)
M은 MNIST를, S는 SVHN을 의미합니다. 마찬가지로 GR이 없으면 먼저 배운 task의 성능이 급격하게 하락하는 모습을 볼 수 있습니다.
3-3. LwF 모델에 적용
다음은 LwF모델에 GR을 적용한 결과입니다.
![[NIPS 2017] Continual learning with deep generative replay (DGR) 핵심 정리 8 LwF-모델에-적용](https://blog.kakaocdn.net/dn/edKXJl/btrpJRLHQWh/kYde3CgbbnRv8cDR707geK/img.png)
기존의 LwF방식에 task specific generated input을 넣어주면 SVHN학습 후 MNIST를 학습할때 SVHN의 성능 하락폭이 많이 줄어드는 모습을 볼 수 있습니다.
3-4. Learning new classes (MNIST)
다음은 MNIST 데이터셋의 incremental learning classification 성능입니다.
![[NIPS 2017] Continual learning with deep generative replay (DGR) 핵심 정리 9 learning-new-classes](https://blog.kakaocdn.net/dn/tzeYw/btrpKlZ7KUM/D8tYzyQT99p3uJpWjVbBi0/img.png)
GR이 없으면 이후 task를 학습할 때 마다 성능이 하락하는 모습을 볼 수 있습니다.