[Paper review] meta-learning 설명 + Model-Agnostic Meta-learning for Fast Adaptation of Deep Networks
이번에 리뷰하고자 하고자 하는 논문은 Model-Agnostic Meta-learning for Fast Adaptation of Deep Networks 라는 논문이다. 이 논문은 Meta-learning관련 논문 중에서도 엄청나게 많은 인용수(8000회 가까이 됨. 2023 1월 3일 기준)를 가지고 있는 논문이고, 어떻게 보면 meta-learning을 연구한다면, 반드시 이해하고 가야 하는 논문이라고 생각한다. 나 역시, meta-learning에 대해서 공부를 시작한지 얼마되지 않았기에 최대한 천천히 읽어가면서 meta-learning이 그래서 무엇이고, 이 논문은 어떤 방법론을 제시했는지 이해하려고 했다.
먼저 meta-learning에 대해서 이해해보자. 사람은 과거에 학습한 내용을 바탕으로 새로운 task가 주어져도 이를 해결할 수 있다. 가령 강아지, 고양이 사진들만 학습만 해도, 새의 사진이 왔을 때 이 사진이 새가 아니라는 것을 확신할 수 있다. 또는 다른 A, B 사람이 쓴 알파벳을 분류하는 것을 학습했다면, 새로운 사람 C가 쓴 글씨가 어떤 알파벳을 나타내는지 파악할 수 있다. 결국 과거의 학습 경험을 잘 활용만 한다면, 새로운 task의 데이터가 부족한 경우에도 적절한 답을 낼 수 있다는 것을 알 수 있다. 이게 meta-learning의 핵심 point이자 meta-learning이 real problem에 쉽게 적용될 수 있는 이유이다. meta-learning은 앞서 설명한 어떻게 보면 당연한 인간의 학습방법을 AI에게도 활용할 수 있지 않을까라는 탐구로 부터 시작한다. 그래서 이러한 meta-learning을 'learning to learn', 학습한 것(=과거에 학습한 것)을 토대로 학습한다고 부르는 이유이다.
meta-learning은 크게 두가지, meta-training, meta-testing step 과정을 거친다. meta-training step은 과거의 경험을 이용하여 최대한 여러 task에 general한 meta knowledge를 만드는 과정이다. meta-testing step은 meta-training step에서 도출된 meta knowledge를 해결하고자하는 task에 adaptation하는 과정이다. 즉, 강아지-고양이-사자 few shot classification task를 예를 들면, meta-training step에서는 강아지-고양이-사자를 제외한 호랑이-양-새 등의 다양한 data를 이용해, meta knowledge를 만든다. 이후 meta-testing step에서는 강이지-고양이-사자의 few shot과 meta knowledge을 이용해 fine-tuning(=adaptation)을 진행한다.
meta-learning을 수행하는 방법론은 memory-based, metric-based, optimization-based method 이렇게 3가지로 나눌 수 있다. memory-based method는 memory에 적절한 instance와 label을 저장해놓은 다음, 새로운 task가 오면 memory에 저장된 정보를 가져와 이를 해결하는 방식이다. metric-based method는 KNN과 같이, metric space을 정의하고 학습한 뒤에, 이 space 상에서 distance(class prototype-instance)를 측정하여 해결하는 방식이다. 마지막으로 optimization-based method는 이번 글에서 리뷰하고자하는 MAML이 속한 방식으로, 모델이 학습하는 optimization algorithm 자체를 수정하여, 보다 모델이 적은 수의 data를 가지고도 좋은 perfomance를 내도록 한다.
지금까지 meta-learning의 전반적인 개념에 대해서 알아봤다. 이제 본격적으로 리뷰하고자하는 논문에서 소개한 MAML이 어떤 방법론을 사용했는지 알아보자.
MAML의 주요 contribution은 small number of gradient update만으로 새로운 task을 학습할 수 있는 general한 initial parameter를 제시하는 데 있다. 이를 이용하면 few shot regression, classification, reinforcement learning에 이르기까지 다양한 task에 적용을 할 수 있다.
위 그림은 MAML을 설명하는 그림이라고 할 수 있다. 앞서 설명했듯이 MAML은 여러 task에 general 한 initial parameter를 구하는 알고리즘이라고 할 수 있다. 위 그림과 같이 task1, task2, task3가 있다고 한다면, 각 task는 각자의 optimal parameter가 존재할 것이다. (위 그림에서 세타1, 세타2, 세타3) 이는 각각의 loss를 계산하여 back prop을 통해 접근할 수 있을 것이다. 다시 MAML로 돌아와서 그렇다면 여기서 general 한 initial parameter를 찾는다는 것은 어떤 의미일까? 이는 이렇게 각각 존재하는 이 세개의 optimal parameter에 세 task 모두 단 몇 번의 gradient step을 통해서 접근하도록하는 initial parameter을 찾는 것이라고 할 수 있다.
이제 MAML에서 제시하는 알고리즘을 구체적으로 알아보자. MAML은 먼저 random하게 세타를 초기화한다. 그리고 반복문을 들어가 general한 initial parameter를 찾기위한 여정을 시작한다. 이를 위해 먼저 Task의 집합에서 batch size 만큼의 task를 sampling한다. 이 batch size의 task 집합은 찾고자하는 general inital parameter의 한번의 update에 사용될 녀석들이다. 그리고 이제 task들 각각에 대해서 loss를 구한다. (이때 모델의 parameter는 task에 관계없이 세타로 동일하다.) 그리고 계산된 loss를 통해 모델 parameter을 업데이트 한다. (이때 모델의 parameter는 task에 따라 다르다.) 이 후, task마다 업데이트된 모델 parameter를 가지고, 다시 loss를 계산하고 이를 합산한 뒤, 찾고자하는 general inital parameter을 업데이트 한다. 여기서 loss를 계산하고 합산하는 과정이 결국 여러 task에 general하도록 하는 과정이라고 판단된다.
여기서 의문을 가질 수 있는 점은 알고리즘을 봤을 때, gradient를 두번 계산하는 것을 알 수 있다. 하지만, 한번의 task마다 gradient를 계산한 뒤에 이를 바로 더하여 모델 paramter를 학습시킬 수도 있지않을까? 이에 대한 답은 논문에 설명에 따르면, 이렇게 두번의 gradient를 계산했을 때가 한번 gradient를 계산했을 때보다 더 좋은 성능이 나왔다고 한다. (이런거 보면 성능이 잘 나오는 게 장땡인 것 같다.)
이렇게 MAML에 대해서 전반적으로 알아봤다. 논문에서는 이제 위에서 설명한 MAML을 regression, classification, reinforcement learning에 직접 적용하기 위한 추가설명도 있다. 하지만, 근본적인 원리는 위에서 설명한 것이 다다. 어떻게 보면 loss를 task마다 구하여 합산하는 간단한 과정이 이 논문에서 말하는 핵심 point라고 할 수 있다.
위 결과는 few shot classification 결과인데, 확인해보면 MAML이 다른 기존의 방법들에 비해서 좋은 성능을 보인다는 점과, 두 번의 gradient를 계산하는 것이 한 번 gradient를 계산(first order approx)하는 것보다 더 좋은 성능을 낸다는 것을 확인할 수 있다. (위 표에서 5-way, 20-way는 class가 각각 5개, 20개라고 생각할 수 있다.) 이외에도 논문에서는 regression, reinforcement learning의 결과 역시 확인할 수 있다.
오늘 리뷰한 논문은 meta-learning에서 가장 기초적인 논문이라고도 할 수 있는 논문이다. 그렇기에 읽으면서도 논문에서 다루는 모든 내용을 흡수할려고 노력했다. 2017년 논문이기에, 지금은 이 방법에서 파생된 훨씬 더 발전 된 방법들이 많을 것이라고 생각된다. 특히 개인적으로 MAML에서는 다음과 같은 두가지 point를 개선할 수 있다고 판단했다. (1) general 한 initial parameter를 찾기위해 초기에 random하게 parameter를 설정한 점과 (2) Task 집합에서 random하게 task를 sampling하는 점이다. 이 두가지 point는 task adaptation에 있어서 좋지않은 inital parameter로 향할 수도 있다고 생각했다. 이를 해결하기 위해서 해결하자하는 task와 조금 더 관련있도록 초기 parameter를 sampling하고, task를 sampling할 수 있지 않을까하는 생각이 든다. (이런 연구는 이미 거의 진행되고 있을 것이라 예상한다.)
아래는 논문 링크이다. meta-learning에 흥미를 가지고 있다면 필히 이 논문을 읽어보는 것을 권한다.
https://arxiv.org/abs/1703.03400
Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks
We propose an algorithm for meta-learning that is model-agnostic, in the sense that it is compatible with any model trained with gradient descent and applicable to a variety of different learning problems, including classification, regression, and reinforc
arxiv.org
댓글 영역