- 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 핵심 리뷰
내용 요약
Task에 따라 Convolution Layer 일부 Channel만 활성화하는 Channel Gate를 사용한 Incremental Learning 방법론을 설명합니다. CCGN은 Task를 먼저 예측하고 그에 해당하는 Class를 예측하는 Task Incremental Learning 방법에 해당합니다.
1. 들어가며
이번 글에서는 CVPR 2020에 발표된 Conditional Channel Gated Networks for Task-Aware Continual Learning (CCGN) 논문을 리뷰합니다.
이 논문은 CCGN이라 불리며 이번 글에서도 CCGN이라 지칭하겠습니다.
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별로 사용할 파라미터 또는 네트워크 등을 정해줌
CCGN은 Distillation + Memory + Dynamic structure에 해당하는 방법 중 하나입니다.
2. 제안 방법
바로 제안 방법을 살펴보겠습니다.
2-1. 문제 정의
먼저 저자들의 문제 세팅을 보겠습니다. Incremental learning은 크게 두 가지 방식으로 나눠 생각해볼 수 있습니다.
첫 번째 방식은 class-incremental 방식입니다.
이는 모델에게 어떤 task에 해당하는 데이터인지 알려주지 않고 class를 구분하는 방법입니다. 수식으로 표현하면 다음과 같습니다.
두 번째 방식은 task-incremental 방식입니다.
이는 반대로 모델에게 어떤 task인지 알고 class를 구분하는 방식입니다. 수식으로 표현하면 다음과 같습니다.
CCGN는 task-incremental 방식을 취합니다. 즉 어떤 task인지를 먼저 맞추고 그 task의 클래스 중에서 다시 클래스를 구분하는 방식입니다.
2-2. Single head learning of task labels
이제 CCGN의 제안 방법을 보겠습니다.
먼저 그림의 (a) 부분을 보겠습니다.
그림 (a)에서는 CCGN의 핵심인 Channel Gate의 모습을 볼 수 있습니다. Channel Gate는 Task별 Convolution Channel을 선택하는 역할을 합니다. 이는 하나의 Convolution Layer를 Task별로 나눠서 사용하겠다는 의미입니다. 하나의 Task에 대해 Convolution Layer 전체를 학습하면 다음 Task를 학습할 파라미터가 없으니, 일부 파라미터만 학습하겠다는거죠.
다음은 그림의 (b) 부분을 보겠습니다.
이렇게 나온 최종 feature에 대해서 먼저 task를 구분하는 task classifier를 학습합니다. Task가 구분되면 해당 feature로 class classifier를 학습합니다.
2-3. Multi head learning of class labels
이제 Gate 모듈을 살펴보겠습니다.
Gate 모듈은 각 task마다 따로 학습되며, 각각의 convolution layer에 channel attention 기능을 수행합니다.
그림의 아래 파란색 음영 부분을 보면, Gate 모듈은 MLT, single hidden layer, batch norm, ReLU로 구성되어 있는 모습입니다. 또한 대부분의 mask 방식과 마찬가지로 activation 되는 커널을 최소화하기 위하여 sparsity loss를 적용합니다.
Task t의 학습이 완료되면 relevance score를 계산하여 threshold를 넘는 kernel만 고정해놓고 하고, 나머지는 초기화합니다. 이때 relevance score는 validation dataset으로 측정합니다.
2-4. Total loss
위의 내용을 요약한 최종 loss는 다음과 같습니다.
Loss = Cross-Entropy(task) + Cross-Entropy(class) + Sparsity loss
3. 실험 결과
다음은 이렇게 제안한 방법의 실험 결과를 살펴보겠습니다. 두 가지 실험 결과를 살펴보겠습니다. 이전 task 데이터를 사용하는 방식에 따라 두 가지로 구분할 수 있습니다.
- Episodic memory : iCaRL 등과 같은 방식으로, 이 전 task의 데이터셋을 sampling 하여 그대로 사용합니다.
- Generative memory : DGM 등과 같은 방식으로, 이 전 task의 데이터셋을 GAN 등으로 생성하여 사용합니다.
3-1. Class incremental learning (MNIST, SVHN) with episodic memory
먼저 MNIST, SVHN 데이터셋에 대한 class-incremental learning 방식의 image classification 결과를 살펴보겠습니다.
비교 대상은 다음과 같습니다.
- Full replay : 모든 이 전 task 데이터를 사용하여 학습 (upper bound)
- A-GEM : buffer based method
- iCaRL : NME classifier + exemplar
- ours
간단한 데이터셋인 MNIST에서 뿐만 아니라 조금 더 복잡한 데이터셋인 SVHN에서도 비교 방법들보다 높은 성능을 보입니다.
3-2. Class incremental learning (MNIST, SVHN, CIFAR10, ImageNet50) with generative memory
다음은 MNIST, SVHN, CIFAR10, ImageNet50 데이터셋에 대한 class-incremental learning 방식의 image classification 결과를 살펴보겠습니다.
비교 대상은 다음과 같습니다.
실제 데이터를 사용하는 episodic memory 방식과 비교해 봤을 때, MNIST, SVHN 등의 비교적 생성하기 간단한 데이터셋에서는 episodic memory 방식과 비슷한 성능이 나오지만, CIFAR10, ImageNet 등 복잡한 데이터셋에 대해서는 성능이 급격하게 하락하는 모습을 볼 수 있습니다.