Incremental Learning 설명 – 정의, 필요성, 데이터셋, 대표 논문

This entry is part 1 of 22 in the series Incremental Learning

내용 요약

Incremental Learning에 대한 모든 것을 살펴봅니다. Incremental Learning의 정의, 필요성, 데이터셋과 성능 측정 방법에 대해 알아봅니다. 마지막으로 Incremental Learning 논문을 카테고리별로 나누어 연구의 전체적인 흐름을 설명합니다.

1. Incremental Learning 이란

먼저 Incremental Learning이란 무엇인지 살펴보겠습니다.

기존의 Image Classification 문제는 이미지 데이터가 전부 포함된 하나의 거대한 데이터셋을 제작한 뒤, 이에 대한 모든 클래스를 잘 구분하는 모델을 개발하였습니다. 예를 들어 ImageNet 데이터셋의 경우 1000개 클래스에 대한 이미지 데이터셋을 포함하고 있고, 이를 위해 개발된 모델들은 마지막 Layer에서 Softmax 함수를 사용하여 1000개의 클래스에 대한 확률 값을 출력하는 방식이었습니다.

반면 Incremental Learning에서는 Image Classification 문제를 풀 때 모든 클래스의 데이터를 한 번에 학습하지 않고 나눠서 학습합니다. 다시 ImageNet으로 예를 들면 1000개 클래스의 데이터를 100개씩 10개 세트로 나눈 뒤 1개 세트씩 학습/테스트를 진행하는 방식입니다.

결국 모델 입장에서는 1세트에서 본 데이터는 다음 9세트가 진행되는 동안은 한 번도 볼 수 없음에도 불구하고 최종 테스트에서는 이마저도 잘 구분해야 하는 어려운 문제가 됩니다.

2. Incremental Learning의 필요성

그럼 왜 Image Classification / Detection 문제와 별개의 Incremental / Continual Learning 방법론을 연구할까요?

이는 실제 AI를 적용해야 하는 현장에서 필연적으로 발생하는 상황에 대비하기 위함입니다. 예를 들어보겠습니다.
자율주행 자동차를 위한 알고리즘 중 하나로 Image Detection이 들어가 있다고 생각해보겠습니다. 이는 처음에 사람, 자전거, 신호등, 자동차 등등의 Class에 대한 데이터셋을 제작하여 학습시켰을 겁니다. 하지만 실제로 주행을 하다 보면 필연적으로 학습 데이터셋에 포함되어 있지 않는 다른 클래스의 물체가 등장할 것이고, 모델은 새로운 클래스를 추가로 학습해야 합니다.

그럼 이때 기존 데이터셋에 새로운 클래스가 추가된 새로운 데이터셋을 제작하고, 모델도 새로 제작하여 처음부터 학습해야 할까요? 그런 방법도 가능하겠지만, 자율주행이 가능하기까지 학습해야 할 데이터셋의 양을 생각해보면 매번 이렇게 새로 학습하는 방식은 매우 비효율적일 겁니다. 그럼 자연스럽게 “기존의 학습 내용은 유지하면서 새로운 정보만 추가로 학습할 수는 없을까?”라는 생각이 드는데요. 이를 위한 연구가 바로 Incremental Learning입니다.

이는 우리 뇌의 작동 방식을 생각해보면 매우 당연하고 자연스러운 학습 방법입니다. 우리는 새로운 지식을 익히기 위해 뇌를 리셋한 뒤 처음부터 학습하지는 않으니까요.

3. Class/Task Incremental Learning

Incremental / Continual Learning의 접근 방식은 주요한 방법만 보면 크게 두 가지로 나눠볼 수 있습니다. 바로 Class-Incremental Learning 방식과 Task-Incremental Learning 방식입니다.

Class-Incremental Learning 방식은 여러 Task를 순서대로 학습한 뒤, 모든 Task의 클래스에 대한 시험을 한 번에 보는 방식입니다.

반면 Task-Incremental Learning 방식은 똑같이 여러 Task를 순서대로 학습한 뒤, 시험을 볼 때는 이건 어떤 Task에서 학습한 문제라는 걸 알려준 뒤 Class를 맞추도록 시험을 보는 방식입니다.

예를 들어 보겠습니다.

추론-방식에-따른-분류
그림1. Class/Task Incremental Learning [1]

MNIST 데이터셋은 위의 그림과 같이 0~9까지 10개 숫자 클래스로 이루어져 있습니다.

Class-Incremental Learning / Task-Incremental Learning 모두 10개 클래스를 순서대로 5개의 Task로 나눈 뒤, 차례대로 학습을 진행합니다.

그리고 Test 상황에서는 아래와 같이 방식이 달라집니다.

  • Class-Incremental Learning : 지금 그림이 0~9중에서 뭐야?
  • Task-Incremental Learning : 지금 그림은 task1에서 본 그림이야. 0,1 둘 중에 뭐야?

가정하는 상황이 다르고, 테스트 방식이 다르기에 보통 각 방식에 따라 모델 개발의 접근 방식이 다릅니다.

4. Incremental Learning 데이터셋

이번에는 Incremental Learning 모델 성능을 측정할 때 사용되는 데이터셋을 살펴보겠습니다.

보통 Incremental / Continual Learning 은 Image Classification 문제를 여러 Task로 나눠 평균 점수를 측정합니다. 따라서 Image Classification에 사용되는 거의 모든 데이터셋을 사용할 수 있습니다. 뒤에서 살펴볼 논문들에서는 가장 간단한 MNIST, SVHN 뿐만 아니라 Stanford Cars, Flowers, Sketch, Wiki art, CIFAR10 등의 작은 데이터셋, 그리고 ImageNet 같은 대형 데이터셋까지 사용합니다.

5. Incremental Learning 성능 측정 방식

최근의 연구들에서 사용하는 성능 측정 방식을 크게 두 가지로 나누어 살펴보겠습니다.

5-1. Class Incremental Image Classification

먼저 하나의 Image Classification 데이터셋에 대해 Incremental Learning 방식으로 학습한 뒤 평균 Classification 정확도를 측정하는 방식입니다.

데이터셋을 먼저 2개로 나눠 절반을 학습시킵니다. 그리고 남은 절반은 n개의 Task로 나눠 Incremental Learning 방식으로 차례대로 학습한 뒤 최종적으로 평균 classification 정확도를 측정하는 방법입니다.

class-incremental-image-classification
그림2. class incremental image classification [2]

위의 그림은 PODNet 모델의 CIFAR100, ImageNet에 대한 성능 결과표입니다.

CIFAR100을 예로 들면, 먼저 50개의 클래스에 대한 데이터를 학습합니다. 그리고 남은 50개의 클래스는 1 Task x 50 Classes / 2 Tasks x 25 Classes / 5 Tasks x 10 Classes / 10 Tasks x 5 Classes로 학습한 뒤 최종 평균 점수를 측정하는 방식입니다.

5-2. Fine Grained Image Classification

다음은 ImageNet 등의 대형 데이터셋을 학습한 뒤 작은 데이터셋에 대한 Image Classification을 Incremental Learning 방식으로 학습, 테스트하는 방식입니다.

fine-grained-image-classification
그림3. fine grained image classification [3]

위의 그림은 CPG 모델의 Fine Grained Image Classification 결과표입니다. 보통 Task-Incremental learning 방식 모델들은 Task별로 모델이나 파라미터를 따로 학습하기 때문에 이런 방식으로 성능을 측정합니다.

6. Incremental Learning 논문 읽기

다음은 Incremental Learning의 굵직한 논문들을 흐름대로 살펴보겠습니다.

연구흐름
그림4. Incremental Learning 연구 흐름

6-1. Regularization 방식

Incremental / Continual Learning 은 제일 먼저 regularization 방식으로 발전했습니다. 새로운 task를 학습할 때 기존의 지식을 잊어버리지 않기 위해 모델의 파라미터 변화에 규제를 해주자는 아이디어였습니다.


대표적인 첫 번째 논문은 2017년 PNAS에 발표된 EWC입니다.

EWC 제안 방법
그림5. EWC 제안 방법

새로운 task를 학습할 때 파라미터의 변화에 규제를 하기 위해 Fisher Information Matrix를 사용했습니다. 이러한 규제항은 새로운 Task를 학습하는 동안 모델의 파라미터가 쉽게 변하지 않게 해주는 역할을 합니다. 그 결과 새로운 Task를 학습하는 동안 기존 지식을 보존하는 효과를 주었습니다.


다음으로 살펴볼 논문은 2018년 ECCV에 발표된 MAS입니다.

EWC와는 달리 새로운 task를 학습할 때 파라미터 변화에 규제를 하기 위한 방법으로 파라미터의 중요도를 측정했습니다. 이때 파라미터의 중요도를 측정하는 기준으로는 gradient를 활용합니다. 최종적으로 MAS에서 제안한 Loss Function은 다음과 같습니다.

MAS
그림6. MAS Loss Function

6-2. Distillation 방식

다음으로 살펴볼 방식은 Distillation 방식입니다. 이는 새로운 Task를 학습할 때 기존 Task를 학습한 지식을 Distillation 해주자는 아이디어입니다. 초창기에는 이전 Task Data는 사용하지 않은 채 이전 Task까지 학습한 모델과 새로운 모델의 Distillation Loss만을 사용했습니다.


먼저 2016년에 발표된 LFL을 살펴보겠습니다.

LFL 제안 방법
그림7. LFL 제안 방법

이전 Task까지 학습한 Old Model과 새로운 Task를 학습하는 New Model의 Feature가 같아지도록 Euclidean Loss를 적용한 방식입니다. 이는 Distillation Incremental Learning의 가장 초창기 버전으로써 가장 단순한 아이디어를 적용한 모델이라고 할 수 있습니다.


다음으로 살펴볼 논문은 2017년 PAML에 발표된 LwF입니다.

image 22
그림8. LwF 제안 방법

LwF에서는 기존 LFL과 달리 Old Model과 New Model의 Feature가 아닌 Logit이 같아지도록 Distillation Loss를 적용해 줍니다.


다음으로 살펴볼 논문은 2019년 CVPR에 발표된 LwM입니다.

LwM 핵심 아이디어
그림9. LwM 제안 방법

LwF와 큰 그림은 유사하지만, Grad-CAM을 사용하여 Attention Loss를 추가해 주었습니다.

6-3. Distillation + Memory 방식

그러다가 이전 Task의 일부 데이터만 메모리에 올려놓고 참조해가며 학습하자는 아이디어가 나오게 됩니다. 이때부터 이전 Task에 대한 데이터를 일부만 사용하는 Memory 방식의 논문들이 대세가 됩니다.


먼저 살펴볼 논문은 2017년 CVPR에 발표된 iCaRL입니다.

이전 Task 데이터의 일부를 Exemplar라고 부르며 새로운 Task를 학습할때 이를 활용합니다. Classification은 Class Feature 벡터 평균과 가장 가까운 거리로 Class를 구분하는 방식을 사용합니다.


다음으로 살펴볼 논문은 2018년 ECCV에 발표된 EEIL입니다.

image 23
그림10. EEIL 제안 방법

기존의 CE + Distillation loss와 Exemplar를 사용한 방식입니다.


다음으로 살펴볼 논문은 2020년 WACV에 발표된 DMC [WACV 2020]입니다.

image 24
그림11. DMC 제안 방법

Old + New Task 데이터셋으로 구성된 Unlabeled Auxiliary Dataset에 대해 같은 Logit이 나오도록 Double Distillation Loss를 적용했습니다.

6-4. Memory + Bias Correction 방식

이렇게 한동안 Exemplar가 추가된 Distillation Loss를 메인으로 하는 방식이 대세가 되었습니다. 그러던 중 새로운 Task를 학습하는 과정에서 Fully Connected Layer의 Bias가 크게 치우쳐지는 현상이 발견되었습니다. 여기서 Motivation을 받아 Bias를 교정해주는 방식의 논문들이 나오게 되었습니다.


먼저 살펴볼 논문은 2019년 CVPR에 발표된 BiC입니다.

BiC에서 제기한 Bias 문제
그림12. BiC에서 제기한 Bias 문제

BiC는 2단계의 학습 과정을 거칩니다. 1단계는 기존의 CE + Distillation Loss로 학습하는 단계입니다. 2단계는 이 과정에서 치우쳐진 Bias를 교정하는 Bias Correction 과정입니다.


다음으로 살펴볼 논문은 2019년 CVPR에서 발표된 LUCIR입니다.

LUCIR 제안 방법
그림13. LUCIR 제안 방법

Bias Correction을 위해 Cosine Normalization과 Less Forget Constraint, Inter Class Separation을 적용합니다.


다음으로 살펴볼 논문은 2020년 CVPR에 발표된 WA입니다.

WA 제안 방법
그림14. WA 제안 방법

WA도 학습 단계가 2단계로 분리되어 있습니다. 1단계는 CE + Distillation Loss로 학습하는 단계입니다. 2단계에서는 Weight Alignment를 수행합니다.


다음으로 살펴볼 논문은 202년 ECCV에 발표된 PODNet입니다.

PODNet 제안 방법
그림15. PODNet 제안 방법

PODNet의 핵심 포인트는 두 가지 인데요.
첫 번째는 POD Loss입니다. 이는 기존 Distillation Loss를 세분화한 것입니다.
두 번째는 Local Similarity Classifier입니다. 이는 기존 LUCIR에서 제안한 Cosine Similarity 방식을 개선한 방법입니다.

6-5. Memory + Dynamic Structure 방식

Dynamic Structure 접근 방식도 있습니다. 핵심 아이디어는 Task마다의 모델 또는 파라미터를 할당해 주자는 것입니다. 이는 하나의 모델을 Task별로 분리하여 구현할 수도 있고 Task마다 새로운 모델을 확장하는 방법을 사용할 수도 있습니다.


먼저 살펴볼 논문은 2020년 CVPR에 발표된 CCGN입니다.

CCGN 제안 방법
그림16. CCGN 제안 방법

Task별 Convolution Layer Channel을 할당해주는 방식을 사용하는데요. 이를 위해 학습 가능한 Channel Gate Module을 적용합니다.


다음으로 살펴볼 논문은 2021년 CVPR에 발표된 DER입니다.

DER 제안 방법
그림17. DER 제안 방법

새로운 Task를 학습할 때마다 새로운 Feature Extractor를 추가해줍니다. 추가로 Task별 Binary Mask도 학습합니다.

6-6. Memory + Generative Model 방식

GAN을 활용하여 이전 Task 데이터를 구현해주며 학습하는 방식도 있습니다. GAN으로 합성한 이전 데이터는 Exemplar라고 하며 이를 활용한 학습 방법은 Replay라고 표현합니다.


먼저 살펴볼 논문은 2017년 NIPS에서 발표된 DGR입니다.

DGR 제안 방법
그림18. DGR 제안 방법

Task마다 Schorlar (Generator / Solver)를 학습합니다. 이때 매 학습에는 현재 Task 데이터와 더불어 이전 Task까지 학습한 GAN이 만들어낸 데이터가 사용됩니다.


다음으로 살펴볼 논문은 2018년 NIPS에 발표된 MeRGAN입니다.

MeRGAN 제안 방법
그림19. MeRGAN 제안 방법

마찬가지로 매 학습마다 이전 Task까지 학습한 GAN으로 합성한 데이터와 현재 Task 데이터가 사용됩니다. 또한 추가로 Generator가 생성한 이미지의 Align을 위한 Loss를 적용합니다.


다음으로 살펴볼 논문은 2019년 CVPR에 발표된 DGM입니다.

image 32
그림20. DGM 제안 방법

이전 방법과 달리 매 Task마다 GAN을 새롭게 학습하지 않습니다. Dynamic Structure의 아이디어를 적용하여 Task마다 GAN의 파라미터를 할당하여 학습하죠. 그 결과 하나의 GAN으로 모든 Task를 학습합니다.

6-7. Dynamic structure 방식

Task-Incremental Learning에서는 dynamic structure 방식을 많이 사용합니다. 이는 Task별 파라미터를 학습하기 위해 Pruning / Masking 등을 활용하는 방식입니다.


먼저 살펴볼 논문은 2018년 CVPR에 발표된 PackNet입니다.

PackNet 제안 방법
그림21. PackNet 제안 방법

하나의 모델을 사용하여 모든 Task를 순차적으로 학습하기 위해 Pruning을 활용합니다. 먼저 학습을 하고 Pruning 하여 다음 Task 학습을 위한 파라미터를 남겨놓는 것이죠.


다음으로 살펴볼 논문은 2018년 ECCV에 발표된 Piggyback입니다.

image 34
그림22. Piggyback 제안 방법

PackNet과 달리 Pruning을 사용하지 않고 Backbone 네트워크는 그대로 유지한 채 Task별 Binary Mask를 학습합니다.


다음으로 살펴볼 논문은 2019년 ICMR에 발표된 PAE입니다.

PAE 제안 방법
그림23. PAE 제안 방법

PackNet의 골격에 Expansion 기능을 추가했습니다.


다음으로 살펴볼 논문은 2019년 NIPS에 발표된 CPG입니다.

CPG 제안 방법
그림24. CPG 제안 방법

Compacting (weight pruning), Picking (critical weights selection), Growing (Network extension) 방식을 사용합니다.

7. 출처

  1. Van de Ven, Gido M., and Andreas S. Tolias. “Three scenarios for continual learning.” arXiv preprint arXiv:1904.07734 (2019).
  2. Douillard, Arthur, et al. “Podnet: Pooled outputs distillation for small-tasks incremental learning.” Computer Vision–ECCV 2020: 16th European Conference, Glasgow, UK, August 23–28, 2020, Proceedings, Part XX 16. Springer International Publishing, 2020.
  3. Hung, Ching-Yi, et al. “Compacting, picking and growing for unforgetting continual learning.” Advances in Neural Information Processing Systems 32 (2019).
Series Navigation[arxiv 2016] Less-forgetting Learning in Deep Neural Networks (LFL) 핵심 리뷰 >>
0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
Scroll to Top