- Incremental Learning 설명 – 정의, 필요성, 데이터셋, 대표 논문
- [arxiv 2016] Less-forgetting Learning in Deep Neural Networks (LFL) 핵심 리뷰
- [NIPS 2017] Continual learning with deep generative replay (DGR) 핵심 정리
- [CVPR 2017] iCaRL: Incremental Classifier and Representation Learning 핵심 리뷰
- [PNAS 2017] Overcoming catastrophic forgetting in neural networks (EWC) 핵심 리뷰
- [PAML 2017] Learning Without Forgetting (LwF) 핵심 리뷰
- [NIPS 2018] Memory Replay GANs: learning to generate images from new categories without forgetting(MeRGAN) 핵심 리뷰
- [ECCV 2018] Piggyback: Adapting a single network to multiple tasks by learning to mask weights 핵심 리뷰
- [ECCV 2018] End-to-End Incremental Learning (EEIL) 핵심 리뷰
- [CVPR 2018] PackNet: Adding Multiple Tasks to a Single Network by Iterative Pruning
- [ECCV 2018] Memory Aware Synapses: Learning what (not) to forget (MAS) 핵심 리뷰
- [CVPR 2019] Learning to remember:A synaptic plasticity driven framework for continual learning (DGM) 핵심 리뷰
- [NIPS 2019] Compacting, Picking and Growing for Unforgetting Continual Learning (CPG) 핵심 리뷰
- [ICMR 2019] Increasingly packing multiple facial-informatics modules in a unified deep-learning model via lifelong learning (PAE) 핵심 리뷰
- [CVPR 2019] Learning a Unified Classifier Incrementally via Rebalancing (LUCIR) 핵심 리뷰
- [CVPR 2019] Learning without Memorizing (LwM) 핵심 리뷰
- [CVPR 2019] Large Scale Incremental Learning (BiC) 핵심 리뷰
- [CVPR 2020] Conditional Channel Gated Networks for Task-Aware Continual Learning (CCGN) 핵심 리뷰
- [CVPR 2020] Maintaining Discrimination and Fairness in Class Incremental Learning (WA) 핵심 리뷰
- [ECCV 2020] PODNet: Pooled Outputs Distillation for Small-Tasks Incremental Learning 핵심 리뷰
- [WACV 2020] Class-incremental Learning via Deep Model Consolidation (DMC) 핵심 리뷰
- [CVPR 2021] DER: Dynamically Expandable Representation for Class Incremental Learning 핵심 리뷰
내용 요약
LFL(Less-Forgetting-Learning) 방식의 Incremental Learning 방법론을 제안합니다. Cross Entropy Loss와 Distillation loss을 적용했습니다.
1. 들어가며
이번 글에서는 2016년 arxiv에 등록된 Less-forgetting Learning in Deep Neural Networks (LFL) 논문을 리뷰합니다. 이 논문은 LFL이라고 불리며, 이번 글에서도 LFL이라고 지칭하겠습니다.
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별로 사용할 파라미터 또는 네트워크 등을 정해줌
LFL은 Distillation에 해당하는 방법 중 하나입니다.
2. 제안 방법
바로 제안하는 방법을 살펴보겠습니다.
2-1. 핵심 아이디어
먼저 상황은 이렇습니다.
Source Network는 이전 지식을 학습 완료한 네트워크입니다. Target Network는 새로운 지식을 학습할 네트워크이구요. Target Network의 가중치는 학습 완료된 Source Network의 파라미터로 초기화해줍니다. 이제 Target Network로 새로운 지식을 학습할 겁니다.
이때 저자들의 아이디어를 풀어서 생각해보면 이렇습니다.
Target Network는 당연히 새로운 지식을 Cross Entropy Loss로 학습해야겠죠. 하지만 새로운 지식만 학습하다보면 이전에 배웠던 지식은 점차 사라질겁니다. 따라서 이전 지식을 잊어버리지 않게 하기 위한 모멘텀이 필요하죠. 이를 위해 저자들은 Source Network를 사용합니다. Source Network는 이전 지식을 완벽하게 기억하고 있는 네트워크잖아요? 따라서 Source Network의 출력 Feature와 Target Network의 출력 Feature가 비슷하도록 Loss를 추가해주는 것이죠.
2-2. Loss function
이를 구현하기 위한 loss function을 살펴보겠습니다.
먼저 classification을 위한 cross entropy loss입니다.
다음은 최종 feature에 적용하는 distillation loss입니다.
Source network와 target network에서 출력된 feature에 대해 Euclidean distance가 작아지도록 학습합니다. 이렇게 구한 최종 loss는 다음과 같습니다.
2-3. Mini batch 안에서의 forgetting 문제
위의 방법대로 학습했을 때의 loss 그래프는 다음과 같습니다.
전통적인 방식(검정)은 mini batch안에서 oscillation 하는 모습을 볼 수 있습니다. 반면 LFL방식(빨강)은 전통적인 방식에 비해 oscillation이 줄어든 모습을 볼 수 있습니다. 하지만 loss는 오히려 더 커진 문제가 남았습니다.
저자들은 이 원인으로 고정된 softmax layer를 지목합니다. 따라서 이를 해결하기 위한 modified 버전을 제안합니다. 핵심 아이디어는 다음과 같습니다.
- 가끔씩 softmax layer를 unfreeze 하여 학습 (ex.batch가 짝수일 때)
- source network parameter를 target network parameter로 업데이트
Softmax layer를 가끔씩 학습시켜 나머지 파라미터만으로 학습해야 하는 부담을 줄이고, 학습된 target network의 파라미터를 source network의 파라미터로 업데이트해줌으로써 학습해야 하는 부분을 줄여주는 효과를 준다고 볼 수 있습니다.