Intro
참고글 : https://lilianweng.github.io/lil-log/2018/11/30/meta-learning.html
어린 아이들은 몇 장의 고양이와 코끼리 사진만을 보고도 둘을 이해하고 구분할 수 있다.
하지만 머신 러닝에서는 많은 데이터가 필요하다.
이 점에서 착안하여 신경망 또한 적은 데이터로 무언가를 할 수 있게끔 하고 싶다는 것이다.
이로 인해 배우는 법을 배우는 것이라고 표현하기도 한다.
개념적인 부분이므로 이를 이용해 분류나 강화학습 등 다양한 도메인에 접목할 수 있다.
이를 위한 세 가지 접근법이 존재한다.
1. Metric-based
2. Model-based
3. Optimization-based
RL 분야에 대해선 다음 시간에 정리하겠다.
Classification 문제로 구체화하여 볼 때를 생각하고, 아래에 차례대로 정리하겠다.
Metric-based
주어진 few shot data와 test data와의 유사성을 구하여 test data의 y 값을 구하는 방식이다.
그렇다면 유사성을 어떤 방식으로 구해낼 것인가가 주요점이라고 볼 수 있다.
이와 관련된 모델들을 간략한 소개와 함께 소개한다.
Convolutional Siamese Neural Network
기능은 두 개의 이미지가 같은 클래스에 속하는 이미지인지를 구하는 모델이다.
이를 조금 응용하여 테스트 시에는 여러 클래스 객체가 포함된 여러 장의 few shot data 중에서 특정 클래스 객체가 포함된 한 장의 test data가 속하는 클래스를 찾아내게끔 한다.
사진 1과 사진 2를 같은 CNN 모델을 통해 Embedding 한 뒤 L1 거리를 구하고, 이를 MLP의 입력으로 넣어 최종적으로 1과 2이 같은 클래스에 속할 확률을 구해낸다.
즉 이 모델은 유사성을 임베딩 값의 L1 distance로 나타내었다.
어텐션을 적용하는 모델이다.
이 모델은 임베딩 값의 Cosine distance로 유사성을 계산하였다.
각 데이터 사이의 유사성을 구해내는 모델이다.
일단은 각각의 데이터를 임베딩한다.
임베딩 후 sample data S와 test data x가 있다고 할 때, [S1, x], [S2, x], ... 로 concat하여 유사성 계산 모듈(relation module)에 입력으로 넣는다.
이를 통해 relation score가 나오게 되고, 이를 이용하여 test data가 어떤 sample data와 같은 클래스인지를 파악한다.
임베딩 값을 concat하여 Relation module의 추가적인 입력으로 사용하여 나온 출력값을 유사성으로 표현했다.
각각의 클래스에 속하는 데이터들에 대해서 평균적인 feature vector를 클래스마다 뽑아낸다.
test data와 feature vector의 거리를 구해내어 최종적인 class를 판별한다.
거리는 L1 혹은 코사인 등 여러 가지 방법이 사용될 수 있다.
전체적으로 어떻게 임베딩을 실시하고, 어떻게 distance를 측정할 것인지에 집중되어 있다.