ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Continual Learning의 원리와 연구 Trend
    최신 기술동향/인공지능 (AI) 2021. 9. 17. 19:19
    반응형

     Machine Learning을 5G/6G 통신이나 Image Processing 등 여러 Domain에 적용하는 사례가 늘어나고 있다. 하지만, 단순히 AI를 적용했다의 의미를 넘어서, 실용성이 있기 위해서 넘어야 하는 허들이 몇 가지 있다.  그 중 한 가지가, 바뀌는 환경에 잘 적응을 해야한다는 점이다. 바뀌는 환경에 빠르게 적응하지 못하는 AI 모델은 사용자 입장에서 불안해서 사용할 수 없을 것이다. 이런 문제점을 극복하기 위해, Inference 이후에도, 계속 주어진 Dataset으로 Train을 하는 Online-Learning, 주어진 환경에 맞게 Fine Tuning하는 Transfer Learning 등 다양한 Approach 등이 있다. 이번 글에서는 그 중에, Transfer Learning의 문제점을 보완하는 Continual Learning에 대해 정리해보려고 한다.

     Continual Learning을 소개하기에 앞서, 기존의 연구들에 대해 가볍게 리뷰를 해보고자 한다. 가장 기본적인 모델로, 한 번 Train을 시키면 그 모델은 한 가지 Task를 할 수 있는데, 이를 Single-Task Learning이라 한다. Transfer Learning은 이 Task가 바뀌는 상황에서의 효율적인 학습 방법인데, 기존에 Source Task를 위해 학습시킨 모델을 가져와서 내가 원하는 Target Task의 학습에 사용하는 방식이다. 당연히, Source Task가 Target Task와 아예 다른 Task는 아니고, 어느 정도 비슷한 Feature들을 갖고 있는 내용들일 것이다. 이 상황에서, 기존 Source Task를 위해 학습시켜놓은 탄탄한 모델을 재사용해서, 미리 학습된 Layer에서 Feature를 효율적으로 뽑고, 자신의 환경에 맞게 Fine Tuning시키겠다는 아이디어다. 예를 들면, 이미지 처리에서 사람의 얼굴을 판별하는 Model의 앞쪽에서 윤곽선을 잡아주는 모델을 갖고오고, 뒤쪽에 강아지를 판별하는 Layer를 추가하거나, 새로운 Label을 추가해서 Fine Tuning하는 방식이다.

     Transfer Learning은 적은 Train Dataset을 가지는 비슷한 Domain에 적용시키는데 용이하다. 큰 Dataset으로 잘 학습된 모델을 재활용해서 성능을 올릴 수 있기 때문이다. 하지만, 한 가지 대표적인 문제점이 있는데, 다른 Task를 학습하다보니, 원래 학습시킨 Task에 대해 까먹는다는 점이다. 각 Task를 위한 모델을 다 따로 저장할 수도 있겠지만, 하나의 Model로 여러 Task를 처리하려는 Approach에서는 치명적인 약점이다. 이를 Catastrophic forgetting (Semantic Draft)라고 부르는데, 의미 변화라는 뜻이다. 단순히 생각해보면, 각 weight들이 해당 Task를 배우는데 정확하게 어떤 Correlation이 있는지 모르는 Deep Learning에서 Fine Tuning을 위해 weight를 섣부르게 바꾸면, 기존 Task를 까먹는 것은 당연한 이치일 것이다.

     Catastrophic forgetting (Semantic Draft)를 해결하기 위해 나온 알고리즘이 Continual Learning이다. 즉, Continual Learning은 '하나의 모델을 조금씩 업그레이드 시키면서, 여러 Task를 처리할 수 있도록 만드는 방법'이다. 한글로는 평생학습이라고 번역된 글들이 많은데, 뭔가 우울해지는 이름이기 때문에, 이 글에서는 Continual Learning으로 통일하기로 한다. 직전 Neural Network를 업데이트 하는 방식이다보니, 두 가지 Approach로 나뉠 수 있다. '기존 Neural Network의 구조를 바꾸지 않고 Weight를 Fine Tuning하는 방식'과 '기존 Neural Network의 구조를 조금 수정하는 방법'이 있다. 각 방식을 대표하는 논문을 하나씩 소개하려고 한다.

     첫 번째 방식 중 대표적인 알고리즘이 Elastic Weight Consoliation (EWC) [1] 이다. 간단히 말하면, Fine Tuning으로 weight를 섣부르게 건드리면, 직전 Task를 까먹으니, weight를 조금씩 건드려보자는 방식이다. 직전 Model의 weight 중에 중요한 weight를 update하는 곳에는 Regularization Term을 추가해서 조금만 수정하고 나머지 weight들을 건드리는 알고리즘이다. 논문 [1]에 소개된 아래 그림을 보면, L2 Reularization과 No Penalty 알고리즘을 보면, 기존 Task A가 적은 Error를 갖는 구간을 벗어나버리지만, EWC는 그 중간 지점을 교묘하게 잘 찾아가는 것을 볼 수 있다.

    Fig. 1 EWC의 원리

     이 때, '중요한 Weight'를 어떻게 고를지에 대한 내용이 이 논문의 핵심 중 하나다. 이를 위해, 기존의 Task를 위한 모델과 새로 학습할 Task를 비교하는 과정이 EWC의 메인 Loss function 안에 들어가있다. F라는 함수는 Fisher Information Matrix로 어떤 Random Variable의 관측값으로부터, 분포의 parameter에 대해 유추할 수 있는 정보의 양이다. [2]

    EWC의 Loss function

     두 번째 방식의 대표적인 논문은 Dynamically expandable networks (DEN) [3]이다. DEN은 동적으로 Node 수를 증가시키면서, 새로운 Task에 적응해나가는 방식이다. 단순히 생각하면, 더 다양한 문제를 풀려면, Neural Network의 Capacity가 증가해야 하기 때문에, Node 수가 증가하는 것은 Reasonable해 보이고, 이 증가하는 방식에 대한 Appraoch라고 생각하면 될 것 같다. 첫 번째 Task는 원래 방식대로 Regularization Term을 추가해서 학습을 하면 되고, 두 번째 Task부터는 3가지 Process로 나뉜다.

    DEN의 구조도

    1. Selective Re-training

     Re-training을 할 주요한 weight를 선별해서 update하자는 방식이다. 이 때, 주요한 weight 들이 많이 update되면, 기존의 Task를 까먹는 Catastrophic forgetting 현상이 생길 수 있기 때문에 기존의 weight들을 저장했다가 다시 살려줘야한다. 이 과정이 3단계인 Split and Duplication에서 이루어진다.

    2. Dynamic Expansion

     1번 과정을 거쳤는데 Target Task에 대한 충분한 성능이 안 나올 경우, Model의 Capacity가 부족하기 때문에, 노드를 추가해야 하는 상황이다. 

    3. Split and Duplication

     1번 과정에서 설명했듯이, Catastrophic forgetting 현상을 막기 위해, 기존의 weight가 Threshold 이상으로 바뀌었으면, 기존의 weight를 복사해서 옆에 붙여넣어준다. 만약 1단계에서 update할 weight를 적절히 뽑지 않으면, 3번에서 복사해서 추가될 노드가 너무 많아져서 비효율적이거나, Catastrophic forgetting 현상이 발생하기 때문에, 1단계에서 적절한 weight 선별과정이 필요하다. 각 Process에 따른 loss function은 [3] 논문에 잘 정리되어 있다.

     

    Conclusion

     이번 글에서는 Pre-Trained Model을 다른 Task에 확장시키기 위한 Transfer Learning의 약점인 Catastrophic forgetting 현상을 극복하는 'Continual Learning'의 대표적인 두 가지 논문에 대해 정리했다. 새로운 Task를 공부하다보니, 기존 Task를 까먹는 Catastrophic forgetting을 해결하기 위한 Continual Learning은 조금 더 인간의 학습방법에 가까운 자연스러운 모델이라고 생각한다. 하지만, 굳이 하나의 모델에서 여러 Task를 해결할 필요 없이, 각 Task를 처리할 각각의 Model을 따로 탑재할 수 있는 환경에서는 굳이 필요없는 것이 아닌가라는 생각도 든다. 연구에 활용할 때는, 자신의 환경에 맞게, Transfer Learning을 쓰든, Continual Learning을 쓰든, Meta-Learning을 쓰든 다양한 Approach를 고민해보면 될 것 같다.

     

    Reference

    [1] J. Kirkpatrick, et al., “Overcoming catastrophic forgetting in neural networks,” Proc. Nat. Acad. Sci., vol. 114, no. 13, pp. 3521–3526, 2017.

    [2] https://wiseodd.github.io/techblog/2018/03/11/fisher-information/

     

    Fisher Information Matrix - Agustinus Kristiadi's Blog

    An introduction and intuition of Fisher Information Matrix.

    wiseodd.github.io

    [3] Yoon, J., Yang, E., Lee, J., Hwang, S.J. "Lifelong learning with dynamically expandable networks", ICLR, 2017

    반응형

    댓글

Designed by Tistory.