[WACV 2020] Class-incremental Learning via Deep Model Consolidation (DMC) 핵심 리뷰

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

내용 요약

DMC(Deep-Model-Consolidation) 방식의 Incremental Learning 방법론을 제안합니다. Old class + New class로 이루어진 unlabeled auxiliary dataset을 활용하여 Double Distillation Loss를 적용했습니다.

1. 들어가며

이번 글에서는 WACV 2020에 발표된 Class-incremental Learning via Deep Model Consolidation (DMC) 논문을 리뷰합니다. 이 논문은 DMC라고 불리며, 이번 글에서도 DMC라고 지칭하겠습니다.

전체-흐름-속에서-보기
그림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별로 사용할 파라미터 또는 네트워크 등을 정해줌

DMC는 Distillation + Memory에 해당하는 방법 중 하나입니다.

2. 제안 방법

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

2-1. 핵심 아이디어

저자들의 핵심 아이디어는 다음과 같습니다.

image 3
그림2. DMC 핵심 아이디어
  • 새로운 network는 새로운 task의 class로 cross-entropy loss 학습
  • 기존의 지식을 유지하기 위해 old+new class dataset을 만들어 같은 logit을 내도록 학습 (double distillation loss)

2-2. Loss function

이를 구현하기 위한 loss function을 살펴보겠습니다.
먼저 첫 번째 cross-entropy loss는 기존 방식들과 동일합니다. 새로운 class에 대해서만 cross-entropy로 학습합니다.

다음으로 DMC의 핵심인 double distillation loss를 살펴보겠습니다.
핵심 아이디어는 “source network와 target network가 old class + new class 인 unlabeled data에 대해서 같은 logit을 내도록 학습하자.”입니다. 이를 위해 old class와 new class 데이터를 균형 있게 구성한 unlabeled auxiliary dataset을 세팅합니다. loss를 수식으로 살펴보면 다음과 같습니다.

loss-function
그림3. loss function

2-3. Consolidated Network 구성하기

실제로 위의 Loss를 적용하려면 한 가지 문제가 있습니다. 바로 Source Network와 Target Network의 출력층 개수가 다르다는 것입니다. 따라서 최종적으로 Consolidated Network를 구성하기 위해서는 이 두 네트워크를 적절한 방법으로 혼합해주어야 합니다. 이를 위한 방법을 살펴보겠습니다.

먼저 Old Class의 개수가 s개, New Class의 개수가 t-s가 있다고 가정해보겠습니다. Consolidated Network를 만들기 위해 Old Class를 학습한 Source Network와 New Class를 학습한 Target Network를 합쳐줍니다. 이렇게 만들어진 Consolidated Network는 t개의 출력을 내겠죠. 하지만 이렇게만 구성해주면 문제가 있습니다. 각각 s개, t-s개의 Class에 대해서만 학습했기 때문에 t개의 출력을 해주기 위해서는 보정 작업이 추가 되어야 하죠. 이를 위해 Source Network의 출력에서는 Target Network 출력의 평균값을 빼줍니다. 반대로 Target Network 출력값에서는 Source Network 출력의 평균값을 빼줍니다. 이를 수식으로 표현하면 다음과 같습니다.

logit-맞추기
그림4. logit 맞추기
Series Navigation<< [ECCV 2020] PODNet: Pooled Outputs Distillation for Small-Tasks Incremental Learning 핵심 리뷰[CVPR 2021] DER: Dynamically Expandable Representation for Class Incremental Learning 핵심 리뷰 >>
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