우리 인간은 갓난아기 때 부터 학습이 이루어진다. 그리고 죽기 직전까지 학습이 계속 이루어진다.
인간은 학습을 계속하면서 물론 까먹긴 하지만, 어느정도 지식의 gap이 그렇게 차이가 나지 않는다.
즉, 인간은 시간이 흐른다고 예전에 배웠던 것을 잘 까먹지는 않는다. 예전에 초등학교 때, 젓가락질을 배운 것을 우리는 지금도 까먹지 않고 죽기 직전까지 잘 쓰지 않는가?
우리는 지금 잘 쓰고 있는 인공지능, 딥러닝 모델이 인간과 비슷하게 한 번 학습한 것은 까먹지 않도록 알고리즘을 짜서 성능이 좋은 모델을 만들고자 하며, 이러한 해답을 찾는 것이 Continual Learning 이다.
왜 Continual Learning ??
이처럼 사람의 학습을 표방하여 만든 Model들도 그러면 좋으련만... 기존의 데이터들을 이용해서 학습을 잘 시켜놔도, 새로운 데이터가 들어올 때는 다시 학습을 진행하면서 weight가 다시 바뀌고, 이는 이전의 오래된 데이터들에 대한 weight들은 점점 사라지는 것을 말한다. 일종의 weight vanishing을 의미한다.
즉, Model은 한 번 학습을 하고, 그 학습된 정보를 가지고 지속적으로 다른 정보를 학습하기 거의 불가능하다.
따라서 이를 해결하기 위해서는 예전 데이터를 다시 복습을 하는 단계가 필요하다.
이제 Continual Learning을 해야하는 이유가 나온다.
- 오래된 데이터를 복습하는 것은 비효율적이다.
- 산업적인 측면에서는 Data를 유출하기 힘든 연구도 있다. 따라서 데이터를 미리 학습시켜놓은 model만 반출될 경우가 대부분이다.
그래서 사람들은 머리를 맞대로 어떻게하면, Model들이 기존의 정보들을 계속 가지고 있으면서, 지속적으로 새로운 데이터들을 어떻게 학습할것인가를 고민하다가 Continual Learning 이라는 방법을 고안해내었다.
Continual Learning Concept
접근 방법은 Data-Based 와 Model-Based로 2 가지로 나뉜다.
Data-Based는 data들을 이용한 기반으로 접근하는 방법이다. 이는 data를 그대로 가지고 나와, 기존 모델은 그대로 두고, 다른 한 쪽은 새로운 데이터를 넣어서 학습해서 둘의 모델의 Output, Feature Similarity 를 비슷하게 하도록 학습하게 한다.
Model-Based는 data를 이용하는 것이 아닌, model 자체를 기반으로 접근하는 방법이다. 이는 model을 그대로 가지고 나와, 새로운 데이터를 학습한다. 이는 Data-Based와 동일한 컨셉이지만, 여기는 Output, Feature Similarity 를 비슷하게 만들도록 학습하는 방법이 아니고, Weight Similarity를 보게 된다.
오른쪽 그림을 보면, No Penalty의 화살표를 보면, Task A가 기존 데이터이고, 새로운 데이터 Task B가 들어올 때, Task B의 영역으로 점점 가까워지고, A에서는 멀어지는 것을 볼 수 있다.
EWC는 DeepMind에서 제시한 방법인데, EWC 방법은 Task A가 기존 데이터이고, 새로운 데이터 Task B가 들어올 때, A는 안까먹으면서 B까지도 예측하도록 하는 학습방법을 지양한다.
L2는 약간의 Loss를 준 것이다.
Continual Learning을 적욯하였을 때, 기존의 ImageNet dataset의 성능이 유지될 뿐 아니라, 새로운 데이터 set (이름이 CUB라고 나와있다)에 대한 성능도 Fine Tuning 보다 좋아졌다.
fine tuning은 밑에 설명에 나와있으니 참고하면 좋다.
LWF : Learning Without Forgetting
Original Model은 기존 old data를 학습한 model이다.
Fine Tuning은 존 모델을 새로운 데이터셋에 대해서 완전히 맞추는 것이다. 즉, "너는 무조건 새로운 데이터에 대해서 완전히 학습만 해!! 그 전 데이터에 대한 성능은 안 좋아도 괜찮아" 이런 의미이다.
Feature Extraction은 기존 original model의 CNN 부분, Feature Extraction 하는 부분을 아예 Freeze 해서, classifier에 new task만 살짝 올려놓은 방식이다.
Joint-Training old task와 new task를 모두 합쳐놓았다고 해서 Joint Training이라고 한다. 제일 비효율적인 방법이며, 모든 데이터가 유출된다는 전제 조건 하에 이루어진다. 또한 시간이 굉장히 오래걸린다. 하지만 여기 중에서 성능은 제일 좋을 것이다.
성능은 Learning Without Forgetting을 적용한 방법이 Joint-Training보다 성능이 좋았으며, 다른 방법들에 비해서도 성능이 좋았다.
Summary
Continual Learning의 개념이 data를 incremental 하게 학습할 때 유용하게 쓰일 수 있다.
그리고 data 유출이 되지 않아 제한이 있을 때, 기존 학습한 데이터의 정보를 잃지 않고, 새로운 데이터에 대한 정보를 얻는 방법을 알려준다.
'대학원 공부' 카테고리의 다른 글
Ai : Search (Manual, Grid, Random) (0) | 2020.09.16 |
---|---|
Ai : Transfer Learning (0) | 2020.08.30 |
Ai : Meta Learning (0) | 2020.08.28 |
Ai : Few shot Learning (0) | 2020.08.28 |
AI : Self Supervised Learning (0) | 2020.08.27 |
댓글