본문 바로가기
computer vision/Incremental Learning

DER: Dynamically Expandable Representation for Class Incremental Learning

by 하용권 2021. 11. 29.

https://arxiv.org/abs/2103.16788

[DER: Dynamically Expandable Representation for Class Incremental Learning

We address the problem of class incremental learning, which is a core step towards achieving adaptive vision intelligence. In particular, we consider the task setting of incremental learning with limited memory and aim to achieve better stability-plasticit

arxiv.org](https://arxiv.org/abs/2103.16788)

CVPR 2021 논문입니다.

1. Incremental leraning 이란?

기존에는 정해진 class 개수 만큼만 학습을 하고, 새로운 class가 들어오면 처음부터 다시 학습합니다.

Incremental learning은 새로운 class가 들어와도 처음부터 학습하지 않고 이어서 학습을 할 수 있는 방법을 뜻합니다.

cifar100 b0 50step은 하나도 학습하지 않은 상태에서 시작합니다. 50 step 동안 100개의 class를 학습합니다. 그렇기 때문에 step마다 2개의 new class data가 들어옵니다.

old class와 new class를 적절히 memory에 넣고, 이를 이용해서 계속 학습을 하게 됩니다.

2. Main Idea

이 논문의 핵심 아이디어는

1. old class 에 대한 feature는 freeze.(학습 X)

2. new class에 대한 feature를 aug(concat)

입니다.

3. 모델 구조

Feature Extractor는 매 step마다 하나씩 늘어납니다. 그리고 이 feature들을 전부 합친 것을 super feature라고 합니다.

문제는 step이 늘어날 수록 parameter 수도 증가하게 됩니다. parameter를 줄이기 위해서 prunning을 하는데, Mask Layer가 그 역할을 합니다.

Classifier에 대한 loss입니다. Dt는 이전 data 들이 들어있는 memory 입니다. 식을 보시면 간단한 Cross entropy loss라는 것을 확인할 수 있습니다. 여기서는 super feature를 이용합니다.

Auxiliary Classifier는 old class와 new class에 대한 차별성을 학습합니다.

위에서 log 안 쪽 부분을 이 식으로 바꿔주면 됩니다. 앞이랑 달리 new class 에 대한 feature만 이용합니다. 앞의 식은 모든 class(old class 수 + new class 수)에 대한 식이지만, Aux loss 는 new class 개수 + 1 에 대한 식입니다. 여기서 1은 old class인지 판단하는 부분입니다.

 

 

 feature extractor의 추가로 증가된 parameter들을 감소시키는 역할을 하는 것이 mask layer입니다.

fl 은 l번 째 layer의 feature이고, m은 mask입니다. mask의 범위는 sigmoid를 하기 때문에, 0~1 사이입니다.

s는 scaling factor이고, 이 값은 학습을 하면서 조절하게 됩니다. e는 mask parameter입니다. m은 b x c x 1 x 1 이런 꼴로 나와야합니다. channel을 mask하기 때문입니다.

 

s는 이런 식으로 계산합니다. HAT 논문을 보니, smax가 400일 때 성능이 제일 좋았습니다. b는 batch index(1...B)이고 B는 epoch 당 총 batch 수 입니다. s가 무한대에 가까워지면, {0,1} 로 binarized되고, 0이 되면 0.5라는 값이 나옵니다. s를 위의 식으로 계산하는 이유는 학습 처음에는 mask를 하지 않다가 학습을 할 수록 mask를 하게 됩니다. 여기서 의문점은 0~1 범위인데 masking이 잘 될지가 의문이 듭니다(github officail 코드에도 mask 부분은 아직 구현이 안되어있습니다).

 

 

 s값 때문에 sigmoid를 할 시에 gradient가 불안정하다고 합니다. 

그래서 위와 같이 gradient를 계산하게 됩니다. 

 

parameter의 수는 최소화하면서, performance drop도 최소화 하기 위해서 Sparsity Loss를 도입합니다.

 

K는 kernel size입니다. 이는 모든 weight 들 중에서 사용하는 비율을 의미합니다. 

 

 

4. Experiment

 

cifar100 b0 성능입니다. parameter수는 대폭 줄었들었지만, 기존 방법보다 훨씬 좋은 성능이 나오는 것을 알 수 있습니다. 

반응형