- 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 핵심 리뷰
내용 요약
End to end 방식의 Incremental Learning 방법론을 제안합니다. Classification + distillation loss의 학습 단계 이후 balanced fine tuning 단계를 추가하여 old task의 성능을 강화합니다.
1. 들어가며
이번 글에서는 ECCV 2018에 발표된 End-to-End Incremental Learning (EEIL) 논문을 리뷰합니다. 이 논문은 EEIL이라고 불리며, 이번 글에서도 EEIL이라고 지칭하겠습니다.
![[ECCV 2018] End-to-End Incremental Learning (EEIL) 핵심 리뷰 1 전체-흐름-속에서-보기](https://blog.kakaocdn.net/dn/Q6jHT/btrqu0hf4N1/7lcwd8jAQW4tcpsSW80Hkk/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별로 사용할 파라미터 또는 네트워크 등을 정해줌
EEIL은 Distillation + Memory에 해당하는 방법 중 하나입니다.
2. 제안 방법
바로 제안하는 방법을 살펴보겠습니다.
![[ECCV 2018] End-to-End Incremental Learning (EEIL) 핵심 리뷰 2 image 5](https://ffighting.net/wp-content/uploads/2023/06/image-5-1024x492.png)
저자들의 큰 그림을 하나씩 따라가 보겠습니다.
2-1. Construction of the training set
먼저 training set을 구성하는 방법입니다.
기존에 따로 representative memory에 담아 두었던 옛날 데이터와 새로 들어온 데이터를 모두 합쳐 새로운 training dataset을 구성합니다.
2-2. Training process
다음은 training process입니다.
![[ECCV 2018] End-to-End Incremental Learning (EEIL) 핵심 리뷰 3 architecture](https://blog.kakaocdn.net/dn/cKbK2n/btroXMQXEx9/z4TZ0VeF35jcOK622JGkNk/img.png)
Architecture는 공통 feature extractor와 task 개수(K개)의 classification layer(CL)로 구성되어 있습니다.
Loss function 살펴보겠습니다.
먼저 classification loss는 새로운 task를 포함한 모든 logit에 대한 Cross Entropy Loss로 구성합니다. 수식으로는 다음과 같습니다.
![[ECCV 2018] End-to-End Incremental Learning (EEIL) 핵심 리뷰 4 classification-loss](https://blog.kakaocdn.net/dn/T6eRL/btroRZYM75k/091EWlWFilill91fLaGzt0/img.png)
두 번째로 distillation loss는 새로운 task logit은 제외하고 예전 클래스에 대한 logit으로만 구성합니다. 수식으로는 다음과 같습니다.
![[ECCV 2018] End-to-End Incremental Learning (EEIL) 핵심 리뷰 5 distillation-loss](https://blog.kakaocdn.net/dn/cFlF0D/btroSWN5M5d/H8fuN58zxjX7xK03V9q8kk/img.png)
최종 loss는 아래와 같습니다.
![[ECCV 2018] End-to-End Incremental Learning (EEIL) 핵심 리뷰 6 total-loss](https://blog.kakaocdn.net/dn/cW9rAW/btroYkmtfFf/BzjMtdbIaRhN4IB2MWfNB0/img.png)
2-3. Balanced fine-tuning
다음은 balanced fine-tuning 과정입니다.
위의 학습 과정에서 사용된 데이터셋은 old class 대비 new class가 압도적으로 많아 class imbalance로 인한 문제가 생깁니다. 따라서 이를 보정해주기 위해 old / new class의 개수를 맞춘 sub dataset을 만들어줍니다. 그리고 이 sub dataset으로 다시 fine tuning을 진행합니다.
이번에는 반대로 직전에 배운 new class에 대한 지식을 잊어버릴 수 있으니 classification layer에 new class에 대한 distillation loss를 추가해줍니다.
2-4. Representative memory updating
마지막으로 memory를 업데이트하는 과정입니다.
새로 들어온 클래스도 memory에 추가하기 위해 기존 클래스의 마지막 데이터들은 지우고, 새로운 클래스에 대한 memory를 구성합니다. 이 과정은 herding selection을 사용하는 iCaRL과 동일합니다.
3. 실험 결과
다음은 이렇게 제안한 방법의 실험 결과를 살펴보겠습니다.
3-1. CIFAR100 테스트
먼저 CIFAR100 데이터셋에 대한 테스트입니다.
![[ECCV 2018] End-to-End Incremental Learning (EEIL) 핵심 리뷰 7 CIFAR100-테스트](https://blog.kakaocdn.net/dn/boe1Rz/btroZD0wTsp/tRt4PPZuffTZnZrF2Q7KV0/img.png)
비교 방법론은 iCaRL, LwF입니다.
여러 방법들 중 가장 높은 성능을 볼 수 있습니다. 특히 step당 클래스 개수가 적을 때 iCaRL과 성능 차이가 컸고, 클래스 개수가 커질수록 성능 차이가 적어지는 모습입니다.
3-2. ImageNet 테스트
다음은 ImageNet 데이터셋에 대한 테스트입니다.
![[ECCV 2018] End-to-End Incremental Learning (EEIL) 핵심 리뷰 8 ImageNet-테스트](https://blog.kakaocdn.net/dn/cYbnXx/btroSs0LrH3/Q6S3wgdv4wDlc8Pfsv7mFK/img.png)
마찬가지로 iCaRL, LwF와 비교합니다.
여러 방법들 중 가장 높은 성능을 볼 수 있습니다. 특히 step당 클래스 개수가 적을 때 iCaRL과 성능 차이가 컸고, 클래스 개수가 커질수록 성능 차이가 적어지는 모습입니다.