[ECCV 2018] End-to-End Incremental Learning (EEIL) 핵심 리뷰

This entry is part 9 of 22 in the series 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이라고 지칭하겠습니다.

전체-흐름-속에서-보기
그림1. Incremental Learning 전체 흐름

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. 제안 방법

바로 제안하는 방법을 살펴보겠습니다.

image 5
그림2. EEIL 제안 방법

저자들의 큰 그림을 하나씩 따라가 보겠습니다.

2-1. Construction of the training set

먼저 training set을 구성하는 방법입니다.
기존에 따로 representative memory에 담아 두었던 옛날 데이터와 새로 들어온 데이터를 모두 합쳐 새로운 training dataset을 구성합니다.

2-2. Training process

다음은 training process입니다.

architecture
그림3. EEIL architecture

Architecture는 공통 feature extractor와 task 개수(K개)의 classification layer(CL)로 구성되어 있습니다.

Loss function 살펴보겠습니다.
먼저 classification loss는 새로운 task를 포함한 모든 logit에 대한 Cross Entropy Loss로 구성합니다. 수식으로는 다음과 같습니다.

classification-loss
그림4. classification loss

두 번째로 distillation loss는 새로운 task logit은 제외하고 예전 클래스에 대한 logit으로만 구성합니다. 수식으로는 다음과 같습니다.

distillation-loss
그림5. distillation loss

최종 loss는 아래와 같습니다.

total-loss
그림6. total loss

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 데이터셋에 대한 테스트입니다.

CIFAR100-테스트
그림7. CIFAR100 테스트

비교 방법론은 iCaRLLwF입니다.
여러 방법들 중 가장 높은 성능을 볼 수 있습니다. 특히 step당 클래스 개수가 적을 때 iCaRL과 성능 차이가 컸고, 클래스 개수가 커질수록 성능 차이가 적어지는 모습입니다.

3-2. ImageNet 테스트

다음은 ImageNet 데이터셋에 대한 테스트입니다.

ImageNet-테스트
그림8. ImageNet 테스트

마찬가지로 iCaRL, LwF와 비교합니다.
여러 방법들 중 가장 높은 성능을 볼 수 있습니다. 특히 step당 클래스 개수가 적을 때 iCaRL과 성능 차이가 컸고, 클래스 개수가 커질수록 성능 차이가 적어지는 모습입니다.

Series Navigation<< [ECCV 2018] Piggyback: Adapting a single network to multiple tasks by learning to mask weights 핵심 리뷰[CVPR 2018] PackNet: Adding Multiple Tasks to a Single Network by Iterative Pruning >>
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