해당 포스트는 아래의 강의를 듣고 정리하였으며 1강인 Basic Concept에 대해서만 정리하였습니다.
Few-Shot Learning
Few-Shot Learning이란 매우 적은 수(제한된 수)의 샘플을 기반으로 분류 또는 회귀를 수행하는 것을 의미
- Support Set: a small set of samples (모델을 훈련시키기에도 너무 작은 사이즈)
인간은 단 네 개의 Support Set 이미지를 보더라도 Query의 사진이 들어왔을 때 구분해낼 수 있으며 어렵지도 않음
하지만 기계는? Class마다 단 두 개의 이미지만을 가지고 있는 경우에도 올바르게 예측해낼 수 있을까?
→ 신경망을 훈련시키기에도 샘플 수가 너무 적기 때문에 기존의 분류문제보다 훨씬 어려운 문제가 됨
Few-Shot Learning은 Standard Supervised Learning과 목표가 다름
Few-Shot Learning의 목표는 training set을 통해 이미지를 인식하고, test set으로 일반화하는 것(standard supervised learning의 목표)이 아니라 learn to learn
- Big training set을 통해 모델을 학습
- 학습의 목적은 코끼리가 무엇인지, 호랑이가 무엇인지 아는 것이 아님
- 보이지 않는 코끼리와 호랑이를 알아보는 것이 목표! "객체 간의 유사성과 차이점을 아는 것"
학습한 모델에 두 이미지를 보여주고, 두 이미지가 같은 종류의 동물인지 물어볼 수 있음 Are they the same kind of animal?
이때 우리의 데이터 셋으로 다시 돌아가본다면 training set에는 이미지에 나타난 동물들과 일치하는 class가 없음 → 모델이 다람쥐, 토끼 혹은 pangolin 그리고 개를 인식할 수 없다는 뜻; 직접적으로 해당 동물이 어떤 동물인지 알 수 없음
하지만 모델은 두 이미지가 비슷한지 아닌지, 동일한 종류의 객체인지 아닌지에 대해서는 대답할 수 있음 similarity and difference between objects를 학습했기 때문!
해당 Query 이미지를 모델에게 보여주며 어떤 객체인지 물어본다면?
모델은 training 과정에서 해당하는 객체를 본 적이 없기 때문에 대답할 수 없음
모델에 추가 정보(Support set)을 제공; 6개의 다른 labeled object image
→ 모델은 Query 이미지를 Support set의 각각의 이미지와 비교 후 가장 유사한 Query(여기서는 Otter)를 찾음
Support set Meta Learning의 용어로, label이 지정된 작은 image set을 뜻함The small set of labeled images
- The support set is small → It's impossible to train a deep neural network using such a small set of data
- Every class has ar nost a few samples
- 위의 예제에서는 모든 클래스가 하나의 샘플만을 가지고 있음
- The support set can only provide additional information at test time
↔ Training set
- The training set is big enough for learning a deep neural network
- Every class in the training set has many samples
➡️ The basic idea of Few-Shot Learning
- Train a big model using a big training set
- 특정 object를 인식하도록 모델을 훈련시키는 대신 similarity and difference between objects를 알도록 모델을 훈련시킴
- The additional information provided by the support set을 이용하여 모델은 training set에 속하지 않는 Class에 대해서도 대답할 수 있게 됨
Few-Shot Learning and Meta Learning
Few-shot learning is a kind of meta learning
Meta learning learn to learn ↔ traditional supervised learning; training set을 통해 이미지를 인식하고, test set으로 일반화하는 것
자신이 보고 있는 동물이 어떤 동물이냐고 묻는 아이에게 동물의 이름이 적힌 사진 set를 준다면?
제공받은 사진 set에서 자신이 보고 있는 것과 가장 유사한 동물을 고름 → Otter; 아이는 이전에 Otter를 본 적이 없지만 스스로 배울 수 있음
지금처럼 아이가 스스로 학습하도록/구분할 수 있도록 가르치는 것Learning to learn by himself 을 Meta Learning이라고 함
특히 이번 예시에서는 Support Set의 Class당 하나의 사진만 존재하므로 One-Shot Learning이라고도 함
Supervisied Learning
- Learn a model using a big training set
- After the model is trained, we can use the model for making predictions
- We show a test sample to the model; never seen before, not in the training set But samples ard from known classes
Few-Shot Learning
- Query samples are never seen before; The model has never seen any rabbit during training
- Query samples are from unknown classes → Supervised Learning과의 차이점
The training set does not have a rabbit class → 모델은 query image를 모름
우리는 모델에게 더 많은 정보를 제공해야 함: Support set → Support set의 모든 카드는 labeled image
모델은 query와 support set의 image card를 비교하여 Query sample과 가장 유사한 query를 찾음
∴ 모델은 query가 rabbit이라고 예측
k-way: the support set has k classes
n-shot: every class has n samples
- n이 1인 경우를 One-Shot Learning이라고 부름
When performing few-shot learning, the prediction accuracy depends on the number of ways and the number of shots
- x축: the number of ways (= the number of classes in the support set)
- y축: the prediction accuracy
the number of ways가 증가할수록 예측 정확도는 떨어짐; 비교해봐야 할 후보가 늘어나니까!
- x축: the number of shots (=the number of samples per class)
- y축: the prediction accuracy
the number of shots가 증가할수록 예측 정확도가 향상됨; 비교할 후보의 sample 사진이 많아지니까!
The basic idea of Few-Shot Learning
Train a fuction that predicts similarity (= Learn a Similarity function): sim(x, x')
First, learn a similarity function from large-scale training dataset
Then, apply the similarity function for prediction
- Compare the query with every sample in the support set
- Find the sample with the highest similarity score
Dataset