[NIPS 2017] Continual learning with deep generative replay (DGR) 핵심 정리

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

내용 요약

GAN을 사용하는 incremental learning 방법론을 제안합니다. 이전 방식이 이전 Task 데이터 일부를 Memory에 남겨 계속 사용했다면, DGR은 이전 데이터를 학습한 GAN을 사용하여 Replay 하는 방식을 사용합니다.

1. 들어가며

이번 글에서는 NIPS 2017에 발표된 Continual learning with deep generative replay (DGR) 논문을 리뷰합니다. 이 논문은 DGR이라고 불리며, 이번 글에서도 DGR이라 지칭하겠습니다.

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

DGR은 Generative model에 해당하는 방법 중 하나입니다.

2. 제안 방법

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

2-1. GAN의 기본 구조

먼저 DGR은 GAN의 기본 구조를 따르고 있습니다. GAN의 기본 구조는 다음과 같습니다.

GAN-기본-구조
그림2. GAN 기본 구조

Generator는 이미지를 실제와 같게 만들도록 학습하고, Discriminator는 그 이미지를 잘 구분하도록 학습합니다.

2-2. DGR 구조

DGR구조는 GAN의 기본 구조를 바탕으로 다음과 같이 구성되어 있습니다.

image 13
그림3. DGR의 구조

먼저 그림 a 부분을 보겠습니다.
task마다 Scholar를 생성해줍니다. 이때 각각의 Scholar는 Generator와 Solver로 구성되어 있습니다. 이는 GAN의 Generator/Discriminator와 마찬가지로 잘 만들고 잘 푸는 역할을 각각 수행합니다. 

다음은 그림 b 부분입니다.
DGR의 핵심 부분은 GAN을 사용해 이전 Task 데이터를 잊지 않도록 학습해주는 부분인데요. 바로 그림 b에서 확인할 수 있습니다. 새로운 Task를 학습할때 마다 새로운 데이터 x와 Replay 데이터 x’을 같이 제공받는 모습을 볼 수 있습니다. 이때의 x’은 이전에 학습한 GAN이 제공해주는 이전 Task까지의 생성된 이미지에 해당합니다.

다음은 그림 c 부분입니다.
학습 이미지로 실제 이미지 x와 GAN이 만든 이미지 x’을 제공받고 있는데요. 정답도 이에 맞게 구성해주어야겠죠? x에 매칭되는 y는 실제 이미지의 클래스에 해당합니다. 반면 x’에 매칭되는 y’은 이전 Task Solver가 x’에 대해 예측한 ‘예측값’에 해당합니다.

2-3. Train loss

Train loss는 다음과 같습니다.

train-loss
그림4. DGR train loss

먼저 현재 task의 데이터에 대해서는 solver가 class를 잘 맞추도록 학습합니다. 과거 task 데이터에 대해서는 과거의 generator가 reconstruction한 x’에 대해 과거 solver가 예측한 답안과 동일하게 예측하도록 학습합니다.

2-4. Test loss

마지막으로 Test loss는 다음과 같습니다.

test-loss
그림5. DGR test loss

Test는 마지막으로 학습한 i번째 solver만으로 수행하며, 각각의 클래스를 잘 맞췄는지 평가합니다.

3. 실험 결과

다음은 이렇게 제안한 방법의 실험 결과를 살펴보겠습니다.

3-1. Learning independent tasks (MNIST pixel permutation)

먼저 MNIST 데이터셋의 pixel permutation classification 성능입니다.

learning-independent-tasks
그림6. learning independent tasks

비교 대상은 다음과 같습니다.

  • GR : Generative Replay
  • ER : Exact Replay (upper bound)
  • Noise : generator가 distribution을 전혀 학습하지 못했을 때
  • None : Naively trained solver network

결과를 보면 task가 추가될때마다 GR이 없으면 성능이 확연하게 하락하는 모습을 볼 수 있습니다.

3-2. Learning new domain (MNIST, SVHN)

다음은 새로운 domain을 학습했을때의 성능입니다.

learning-new-domain
그림7. learning new domain

M은 MNIST를, S는 SVHN을 의미합니다. 마찬가지로 GR이 없으면 먼저 배운 task의 성능이 급격하게 하락하는 모습을 볼 수 있습니다.

3-3. LwF 모델에 적용

다음은 LwF모델에 GR을 적용한 결과입니다.

LwF-모델에-적용
그림8. LwF 모델에 적용

기존의 LwF방식에 task specific generated input을 넣어주면 SVHN학습 후 MNIST를 학습할때 SVHN의 성능 하락폭이 많이 줄어드는 모습을 볼 수 있습니다.

3-4. Learning new classes (MNIST)

다음은 MNIST 데이터셋의 incremental learning classification 성능입니다.

learning-new-classes
그림9. learning new classes

GR이 없으면 이후 task를 학습할 때 마다 성능이 하락하는 모습을 볼 수 있습니다.

Series Navigation<< [arxiv 2016] Less-forgetting Learning in Deep Neural Networks (LFL) 핵심 리뷰[CVPR 2017] iCaRL: Incremental Classifier and Representation 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