MAML에 관심이 생겨서 읽어 본 첫 논문이다.
2017년에 나온 논문이고 이미 유명하니 관심 있으면 한번 쯤은 읽어보도록 하자.
나름대로 쉽게 핵심만 요약해보았다.
https://arxiv.org/pdf/1703.03400v3
먼저 간단하게 예를 들어 설명해보겠다.
어린아이와 딥러닝이 있을 때 각각 개와 고양이 사진을 10,000장씩 학습을 시켰다고 하자.
그런데 말 사진을 보여주게 되면 어린아이와 딥러닝 둘다 말 사진을 알리가 없다.
어린아이에게 말 사진을 보여주며 한 두번 알려주면 어린아이는 말 사진을 이제 구별할 수가 있다.
하지만 딥러닝을 그렇지 않다. ===> 그래서 나온게 메타러닝이라고 할 수 있다.
Abstract
Meta learning의 핵심 목표는 다양한 learning task에 학습하고 적은 수의 학습 sample만을 이용하여 새로운 learning task를 해결하는 것이다.
Meta learning은 learn-to-learn 방식으로 작은 예제들로 이전의 경험을 바탕으로 새로운 task를 학습하는 방식이다.
Introduction
Key idea : 적은 양의 data를 사용하여 gradient updates한 parameter가 최대한의 성능을 보여줄 수 있도록 학습 하는 것
parameter를 확장하지 않는 특징이 있으며, 다양한 모델에 적용이 가능하다.
Sensitivity(민감성)을 극대화 시켜서 작은 local change에도 큰 향상을 보이게 한다.
Meta-learning Set up
모델 f를 observation x 로부터 output a 를 매핑한다.


(x1,a1,..., xH, aH) : 입출력 쌍으로 이루어진 training data 이다.
Meta-learning Algorithm
Meta learning은 θ의 사용방법에 따라 접근 방법이 달라진다.
- Metric-based approach
- 저차원 공간에서 임베딩(θ)하여 가장 가까운 클래스로 분류하는 것이다.
- Optimization-based approach
- 효율적인 update방법(θ)을 배워 빠른 학습이 가능하게 하는 것이다.
메타러닝은 Optimization-based approach방식이다.

위의 그림을 설명해보자면, 먼저 목적은 초기 가중치 θ 를 찾는 것이다.
L1,L2,L3 각각의 Loss function을 측정하여 가장 loss가 적은 곳으로 update를 한다.
그리고 그 작업을 계속하여 반복한다.
여기서 gradient의 횟수를 감소시키고, Fine-tuning에 도움을 준다.
적은 update만으로 θ를 찾는 것을 목표로 한다.
앞서 설명한 내용을 알고리즘과 함께 살펴보자. 더 이해가 잘 될 것이다.

- 세타를 랜덤 초기화한다.
- 아래의 조건에 맞으면 반복한다.
- p(T)에서 Ti를 샘플링한다.
- 샘플링한 Ti에 대해서 작업을 반복한다.
- K의 예시에 대하여 Loss function을 측정하여 평가한다.
- Gradient descent를 측정하고 세타 프라임을 update한다.
- 작업 루프를 종료한다.
- B베타를 이용하여 진행했던 gradient 결과를 세타에 update한다.
- 반복을 종료한다.
Supervised Regression and Classification
few-shot learning을 사용하는데 이것은 Prior data를 meta learning에 사용하여 적은 데이터로 새로운 task 학습하는 방식이다.
classification, regression도 사용한다.

앞에서 설명했던 알고리즘과 동일한 단계를 제외한 inner loop만을 설명하겠다.
5. 데이터 포인트 K를 무작위 샘플링한다.
6. K의 예시에 대하여 Loss function을 측정하여 평가한다.
7. Gradient descent를 측정하고 세타 프라임을 update한다.
8. B베타를 이용하여 진행했던 gradient 결과를 세타에 update한다.
5번만 차이가 있고 나머지는 순서차이인거 같다.