AI

Few-Shot Learning: Basic Concept

성실한 당근농부 2024. 2. 27. 15:53
해당 포스트는 아래의 강의를 듣고 정리하였으며 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

728x90