- 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 핵심 리뷰
내용 요약
기존의 distillation + exemplar방식에 binary masking 방법을 추가한 incremental learning 방법론을 제안합니다. PackNet과는 달리 직접 Pruning을 학습하지 않고 Task별 binary masking을 학습하는 방법을 사용합니다.
1. 들어가며
이번 글에서는 ECCV 2018에서 발표된 Piggyback: Adapting a single network to multiple tasks by learning to mask weights 논문을 리뷰합니다. 이 논문은 Piggyback 이라고 불리며, 이번 글에서도 Piggyback 이라 지칭하겠습니다.
![[ECCV 2018] Piggyback: Adapting a single network to multiple tasks by learning to mask weights 핵심 리뷰 1 전체-흐름-속에서-보기](https://blog.kakaocdn.net/dn/bmeGys/btrqCcAfiVO/o1ViaK1bM3ipdjyXKaP161/img.png)
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별로 사용할 파라미터 또는 네트워크 등을 정해줌
Piggyback은 Dynamic structure에 해당하는 방법 중 하나입니다.
2. 제안 방법
바로 제안 방법을 살펴보겠습니다.
![[ECCV 2018] Piggyback: Adapting a single network to multiple tasks by learning to mask weights 핵심 리뷰 2 image 12](https://ffighting.net/wp-content/uploads/2023/06/image-12-1024x449.png)
가장 직접적으로 비교되는 모델은 PackNet입니다.
PackNet과 결정적으로 다른 점은 PackNet은 pruning을 통해 task별 사용할 파라미터를 정한 반면, Piggyback은 binary masking을 통해 task별로 사용할 파라미터를 정한다는 것입니다.
2-1. Real valued masking
먼저 masking 방법을 살펴보겠습니다.
- 실수 값을 갖는 mask 벡터를 만들기
- parameter와 연산
- output에 대해 threshold를 적용하여 0,1 binary masking
이렇게 해서 task별 학습이 완료되고 사용할 파라미터가 정해지면 최종적으로는 threshold가 적용되어 나온 binary masking 벡터만 사용합니다.
2-2. Elementwise masking
최종적으로는 pretrained backbone network에 elementwise binary masking 벡터를 연산해줌으로써 pruning과 비슷한 효과를 냅니다.
3. 실험 결과
다음은 이렇게 제안한 방법의 실험 결과를 살펴보겠습니다.
3-1. New fine grained classification tasks
먼저 ImageNet으로 학습한 뒤 다양한 fine grained classification을 수행한 결과입니다.
![[ECCV 2018] Piggyback: Adapting a single network to multiple tasks by learning to mask weights 핵심 리뷰 3 ImageNet-fine-grained-classification-결과](https://blog.kakaocdn.net/dn/bJYM3s/btrpHGb2eMG/VYs5hG0Ab9L2k01IR0zv5k/img.png)
비교 대상은 다음과 같습니다.
- Classifier Only : feature extractor는 ImageNet pretrained 상태로 fix 한 뒤 classifier만 해당 task로 학습
- PackNet : Pruning 방식
- Ours
- Individual Networks : 각각의 task마다 새로운 네트워크로 fine tuning, upper bound 역할
결과를 보면 PackNet 방식은 task를 추가할수록 성능이 눈에 띄게 하락하는 모습을 볼 수 있습니다. 이는 task가 추가될 때마다 pruning을 수행하며 사용할 수 있는 파라미터가 줄어들기 때문입니다. 반면 Piggyback은 individual networks 방식 보다도 높은 성능을 내는 모습을 볼 수 있습니다.
3-2. Adding a large scale dataset to an ImageNet
다음은 ImageNet으로 학습한 뒤 대형 데이터셋을 추가로 학습했을 때의 결과입니다.
![[ECCV 2018] Piggyback: Adapting a single network to multiple tasks by learning to mask weights 핵심 리뷰 4 ImageNet-대형-데이터셋-추가-결과](https://blog.kakaocdn.net/dn/bWTb39/btrpOxSNMjN/vrivRqxtIjGZKBOzQkt0Z0/img.png)
비교 대상은 다음과 같습니다.
- Jointly Trained Network : 두 개의 데이터셋을 통합한 뒤 하나의 네트워크로 학습
- PackNet : Pruning 방식
- Ours
- Individual Networks : 각각의 task마다 새로운 네트워크로 fine tuning, upper bound 역할
결과를 보면 Piggyback 방식은 Individual Networks 방식에 비해 절반 사이즈의 모델로 거의 동등한 수준의 성능을 내는 모습을 볼 수 있습니다.
3-3. Other network architectures
다음은 다른 network architecture를 사용했을 때의 성능 비교입니다.
![[ECCV 2018] Piggyback: Adapting a single network to multiple tasks by learning to mask weights 핵심 리뷰 5 다른-network-architecture-성능-비교](https://blog.kakaocdn.net/dn/dkIe3x/btrpKkNpXzI/zyE3vA3f07r821bMild0t0/img.png)
결과를 보면 더 깊은 모델(ResNet-50, DenseNet-121)을 사용할수록 Individual network와의 성능 차이가 커지는 모습을 볼 수 있습니다.
4. Ablations
다음은 ablations를 살펴보겠습니다.
4-1. Effect of initialization
먼저 첫 학습 데이터에 따른 성능 비교입니다.
![[ECCV 2018] Piggyback: Adapting a single network to multiple tasks by learning to mask weights 핵심 리뷰 6 effect-of-initialization](https://blog.kakaocdn.net/dn/wI0M2/btrpOxkW49e/lkEqN6AjN1YoBsXQtMEFs1/img.png)
결과를 보면 ImageNet으로 학습했을 때의 성능이 가장 좋습니다. 이는 ImageNet이 그만큼 다양한 feature 특성을 갖고 있기 때문으로 해석됩니다.
4-2. Percentage of zero of binary mask
다음은 데이터셋에 따른 binary mask에서 0의 비중입니다.
![[ECCV 2018] Piggyback: Adapting a single network to multiple tasks by learning to mask weights 핵심 리뷰 7 percentage-of-zero-of-binary-mask](https://blog.kakaocdn.net/dn/eHYKhp/btrpGAp2qdU/oxBzEkklMdIsoKNXrlcC8K/img.png)
결과를 보면 어려운 문제일수록 0의 비중이 더 큰 모습을 볼 수 있습니다. 또한 ImageNet init보다 Places init 일 때 0의 비중이 더 큰데, 이는 ImageNet에서 배운 feature가 더 다양해서 그만큼 필요한 변화량이 적기 때문입니다. 또한 더 깊은 layer일수록 더 많은 비중의 0이 필요한 모습을 볼 수 있습니다.
4-3. Effect of task specific batchnorm
다음은 task specifir batch norm에 대한 실험 결과입니다.
![[ECCV 2018] Piggyback: Adapting a single network to multiple tasks by learning to mask weights 핵심 리뷰 8 effect-of-task-specific-batchnorm](https://blog.kakaocdn.net/dn/RcbtR/btrpGAKdru5/NcdWwB6GkYp0zBI2S6KXQk/img.png)
결과를 보면 fixed batchnorm보다 trained batchnorm의 성능이 더 좋은 모습을 볼 수 있습니다. 이는 ImageNet과 다른 데이터셋과의 domain shift를 task specific batchnorm이 커버해주기 때문으로 해석할 수 있습니다.