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은 \mathfrak{D_{meta-train}}\mathfrak{D_{meta-validation}}\mathfrak{D_{meta-test}} 으로 구성되어 있으며, 각각의 meta-set \mathfrak{D} 는 보통의 set들 D로 이루어져 있습니다. 그리고 각각의 D 또한 D_{train}, D_{test}으로 이루어져 있습니다. 우리는 Few-Shot learning 문제를 풀려고 하기때문에 D_{train}은 1~5개의 example들로 구성됩니다.

Screen Shot 2017-05-22 at 11.23.11 AM.png

META-LEARNING:

Dataset이 이렇게 구성된 이유는 meta-learning을 통해 문제를 풀기 위함인데요, meta-learning에 익숙하지 않은 분들을 위해서 잠깐 설명해 보도록 하겠습니다. 이미 meta-learning concept에 익숙하신 분들은 MODEL 섹션으로 넘어가셔도 됩니다.

Meta-learning이란, learning-to-learn 과 같은 말로써, 배우는 방법을 배우는 것이라고 생각할 수 있습니다. Meta-learning에서는 두가지의 model이 존재합니다. 첫번째는 learner model으로써 일반적인 classification model을 생각할 수 있습니다. D_{train}으로 학습되고 D_{test}에 generalize해야하는 모델이죠. 두번째는 meta-learner model입니다. Meta-learner는 learner가 학습되는것을 도와주는 모델인데요, 이 논문에서는 learner의 parameter 업데이트를 meta-learner를 통해서 하는 방식으로 도와주게 됩니다.

Meta-learner가 학습된 후에는, learner model을 \mathfrak{D_{meta-test}}D_{train}에 meta-learner의 도움을 받아 학습하게 되고, 같은 meta-test셋의 D_{test}에 성능을 측정하게 됩니다. 즉, \mathfrak{D_{meta-train}}을 통해서 D_{train}D_{test}에 잘 동작하게하는 방법을 배우고 \mathfrak{D_{meta-validation}}을 통해 hyper-parameter selection을 한 후 \mathfrak{D_{meta-test}}에 최종 모델의 퍼모먼스를 측정하는것이죠.

MODEL:

자, 그러면 이 논문에서 Few-Shot learning 문제를 meta-learning을 통해 어떻게 푸는지 알아보겠습니다.

일반적으로 classification model을 학습시킬때, gradient descent algorithm을 통하여 model parameter들을 업데이트 하게 됩니다. 아래와 같이 말이죠:

\theta_{t} = \theta_{t-1} - \alpha_{t}\triangledown_{\theta_{t-1}}\mathcal{L}_t

그런데, 위의 식은 LSTM의 cell state update 공식과 닮아있습니다.

c_t = f_t \odot c_{t-1} + i_t \odot \tilde{c}_t

만약 f_t = 1, c_{t-1} = \theta_{t-1}, i_t = \alpha_t, \tilde{c}_t = -\triangledown_{\theta_{t-1}}\mathcal{L}_t 이라면, 두 식은 같은 식이 됩니다. 그래서 이 논문에서는 i_t = \sigma(W_I \cdot [\triangledown_{\theta_{t-1}}\mathcal{L}_t,  \mathcal{L}_t, \theta_{t-1}, i_{t-1}] + b_I), f_t = \sigma(W_I \cdot [\triangledown_{\theta_{t-1}}\mathcal{L}_t, \mathcal{L}_t, \theta_{t-1}, i_{t-1}] + b_I), \tilde{c}_t = -\triangledown_{\theta_{t-1}}\mathcal{L}_t, c_t = \theta_t 으로 놓고 meta-learner LSTM을 통해 우리가 원하는 training model의 parameter \theta_t를 업데이트 시키는 방법을 배우게 됩니다. 이 식을 잘 생각해보면, 현재 model의 파라미터와 loss, gradient와 같은 정보들로 부터 어떻게 model parameter를 업데이트 시켜야하는지를 LSTM을 통해서 배운다고 볼 수 있겠죠.

알고리즘을 다음 그림을 보면서 설명해 보겠습니다.

Screen Shot 2017-05-22 at 3.04.09 PM.png

점선을 기점으로 왼쪽은 model parameter가 업데이트되는 과정인데요, 매 time step에 D_{train}에 속한 training batch들 X_t, Y_t가 learner (classification model)에 들어가게 되고 그로부터 나온 output 정보들 (e.g gradient, loss)들이 meta-learner model에 인풋으로 들어가게 됩니다. meta-learner model은 learner가 어떻게 parameter들을 업데이트해야되는지 알려주게 되고 이 과정은 T step 만큼 반복되게 됩니다. 최종으로 얻어진 모델은 D_{test}를 이용해 최종 loss를 구하게 되고, 이 loss는 맨 처음 time step 까지 쭉 back-propagate되어 meta-learner의 parameter가 업데이트 되게 됩니다. 이 과정을 통해 initial parameter, \theta_0도 배울 수 있게 됩니다.

\mathfrak{D_{meta-train}}을 통하여 meta-learner model을 위 과정을 통하여 학습하게되고, few-shot learning performance는 학습된 meta-learner model을\mathfrak{D_{meta-test}}에 적용함으로써 측정하게 됩니다.

EXPERIMENTS:

실험들은 Mini-ImageNet으로부터 100개의 class들을 뽑아서 진행되었고, \mathfrak{D_{meta-train}}\mathfrak{D_{meta-validation}}\mathfrak{D_{meta-test}}은 각각 64,16,20개의 class들로 구성되어있습니다. 실험들은 1-shot과 5-shot learning task (1개 혹은 5개의 training example을 본 후 testing set에 performance 측정)에 적용되었고, evaluation은 15개의 test example들에 대하여 측정이 되었습니다. 결과는 다음과 같습니다:

Screen Shot 2017-05-22 at 4.23.10 PM

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에 적합하게 변형하여 학습한 점에 의의가 있습니다.

Posted by:Seung Wook Kim

Research Scientist at Lunit Inc.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s