INTRODUCTION:
One-Shot/Few-Shot learning 이란, 저번 포스트 “Siamese One-Shot Learners and Feed-Forward One-Shot Learners”에 소개 되었듯이, 적은 수의 example들로부터 그 example들에 대하여 (보통의 classification 문제에서는 example의 클래스에 대하여) generalize할수 있는 모델을 만드는 문제입니다 – Few-Shot learning에 대한 더 자세한 설명은 지난 포스트를 참조하시길 바랍니다.
이번에 소개시켜드리는 “Optimization as a Model for Few-Shot Learning” 논문은 ICLR 2017에 oral paper로 선정되었으며, 기존의 Few-Shot learning 문제를 풀고자하는 방법들과는 다른, LSTM에 기반해 optimization algorithm을 배우려고 하는 신선한 방법이라 생각되어 소개드립니다.
GOAL:
- SGD (stochastic gradient descent)가 아닌 Few-Shot learning에 적합한 optimization algorithm 학습 – SGD 알고리즘을 샘플수가 적은 데이타셋에 적용 할 경우, overfitting이 발생하게 되어 테스트셋에 generalize 하기에 적합하지 않습니다.
- 데이타셋에 적합한 initial parameter 학습 – 일반적으로 network가 random initialization으로부터 학습되기 때문에 많은 수의 optimization step을 필요로 합니다. 이 논문에서는 데이타셋에 적합한 initial parameter를 학습하여 적은 수의 optimization step으로도 좋은 솔루션에 다가갈수 있는 방법을 제안합니다.
DATASET:
Dataset을 먼저 살펴보겠습니다. Dataset은 ,
,
으로 구성되어 있으며, 각각의 meta-set
는 보통의 set들
로 이루어져 있습니다. 그리고 각각의
또한
,
으로 이루어져 있습니다. 우리는 Few-Shot learning 문제를 풀려고 하기때문에
은 1~5개의 example들로 구성됩니다.
META-LEARNING:
Dataset이 이렇게 구성된 이유는 meta-learning을 통해 문제를 풀기 위함인데요, meta-learning에 익숙하지 않은 분들을 위해서 잠깐 설명해 보도록 하겠습니다. 이미 meta-learning concept에 익숙하신 분들은 MODEL 섹션으로 넘어가셔도 됩니다.
Meta-learning이란, learning-to-learn 과 같은 말로써, 배우는 방법을 배우는 것이라고 생각할 수 있습니다. Meta-learning에서는 두가지의 model이 존재합니다. 첫번째는 learner model으로써 일반적인 classification model을 생각할 수 있습니다. 으로 학습되고
에 generalize해야하는 모델이죠. 두번째는 meta-learner model입니다. Meta-learner는 learner가 학습되는것을 도와주는 모델인데요, 이 논문에서는 learner의 parameter 업데이트를 meta-learner를 통해서 하는 방식으로 도와주게 됩니다.
Meta-learner가 학습된 후에는, learner model을 의
에 meta-learner의 도움을 받아 학습하게 되고, 같은 meta-test셋의
에 성능을 측정하게 됩니다. 즉,
을 통해서
이
에 잘 동작하게하는 방법을 배우고
을 통해 hyper-parameter selection을 한 후
에 최종 모델의 퍼모먼스를 측정하는것이죠.
MODEL:
자, 그러면 이 논문에서 Few-Shot learning 문제를 meta-learning을 통해 어떻게 푸는지 알아보겠습니다.
일반적으로 classification model을 학습시킬때, gradient descent algorithm을 통하여 model parameter들을 업데이트 하게 됩니다. 아래와 같이 말이죠:
그런데, 위의 식은 LSTM의 cell state update 공식과 닮아있습니다.
만약 이라면, 두 식은 같은 식이 됩니다. 그래서 이 논문에서는
,
,
,
으로 놓고 meta-learner LSTM을 통해 우리가 원하는 training model의 parameter
를 업데이트 시키는 방법을 배우게 됩니다. 이 식을 잘 생각해보면, 현재 model의 파라미터와 loss, gradient와 같은 정보들로 부터 어떻게 model parameter를 업데이트 시켜야하는지를 LSTM을 통해서 배운다고 볼 수 있겠죠.
알고리즘을 다음 그림을 보면서 설명해 보겠습니다.
점선을 기점으로 왼쪽은 model parameter가 업데이트되는 과정인데요, 매 time step에 에 속한 training batch들
가 learner (classification model)에 들어가게 되고 그로부터 나온 output 정보들 (e.g gradient, loss)들이 meta-learner model에 인풋으로 들어가게 됩니다. meta-learner model은 learner가 어떻게 parameter들을 업데이트해야되는지 알려주게 되고 이 과정은
step 만큼 반복되게 됩니다. 최종으로 얻어진 모델은
를 이용해 최종 loss를 구하게 되고, 이 loss는 맨 처음 time step 까지 쭉 back-propagate되어 meta-learner의 parameter가 업데이트 되게 됩니다. 이 과정을 통해 initial parameter,
도 배울 수 있게 됩니다.
을 통하여 meta-learner model을 위 과정을 통하여 학습하게되고, few-shot learning performance는 학습된 meta-learner model을
에 적용함으로써 측정하게 됩니다.
EXPERIMENTS:
실험들은 Mini-ImageNet으로부터 100개의 class들을 뽑아서 진행되었고, ,
,
은 각각 64,16,20개의 class들로 구성되어있습니다. 실험들은 1-shot과 5-shot learning task (1개 혹은 5개의 training example을 본 후 testing set에 performance 측정)에 적용되었고, evaluation은 15개의 test example들에 대하여 측정이 되었습니다. 결과는 다음과 같습니다:
Baseline 모델들은 64개의 training class 전부에 대해 classification하는 모델들을 학습한 후, test class에 대해 fine-tune 하거나 혹은 학습된 모델에서 test class example들의 feature vector을 뽑은 후, nearest-neighbor matching을 통해 classification를 하였습니다. Matching Network는 기존의 state-of-the-art metric learning 모델으로써 이 논문에서 제안한 Meta-Learner LSTM이 Matching Network와 비슷하거나 5-shot에서는 더 좋은 성능을 보여줍니다.
CONCLUSION:
이번에 소개시켜드린 논문에서는 few-shot learning에 적합한 optimization algorithm을 LSTM meta-learner를 통해 학습하는 방법을 제안하였고, 기존의 방법들과 확연히 다른 방법이었음에도 불구하고 state-of-the-art에 근접한 performance를 보고하였습니다. LSTM-meta learner를 통해 parameter를 업데이트 하는 방식은 기존의 “Learning to learn by gradient descent by gradient descent”에 소개된 알고리즘과 유사하며 이런 방식을 few-shot learning에 적합하게 변형하여 학습한 점에 의의가 있습니다.