데이터과학 삼학년

Zero-Shot, One-Shot, Few-Shot learning 본문

Machine Learning

Zero-Shot, One-Shot, Few-Shot learning

Dan-k 2023. 8. 28. 11:00
반응형

인간은 새로운 물체를 볼때 적은 양의 샘플로도 구별할 수 있는데 기계(머신)은 수천장의 샘플이 필요함

제한된 양의 샘플로도 학습하여 만족할 만한 기계학습을 이루기 위한 개념에서 나온  Zero-Shot, One-Shot, Few-Shot learning 을 살펴보자~!!!

>> meta learning -> learn to lerarn 학습하는 방법을 학습하는  것

>> 즉, 사람이 물체를 구별하는 방법을 학습하게 하는 시스템 -> 적은 양의 데이터로도 가능

 

 

Few shot learning vs Supervised learning

- Supervised learning : Test image ( Query image ) 의 클래스가 Training set에 있음!! -> 학습에 강아지 사진을 주고 강아지를 잘 학습했는 지 묻는 것!

- Few shot learning : Training set에 없는 클래스를 맞추는 문제(Zero, One, Few shot)

모델은 이미 Training Set으로 학습되어 있고 inference 단계에서 Support Set의 어떤 클래스에 속하는지 맞히는 것!!!

- Support set의 클래스 개수와 샘플 수를 기준으로 k-way n-shot 이라는 표현

- k-way는 Support set이 k개의 클래스로 이루어졌다 -> k가 클수록 모델의 정확도는 낮아지게 됨

- n-shot은 각 클래스가 가진 sample의 개수로 비교해볼 사진이 많으면 많을수록 어떤 클래스에 속하는지 알기 쉽기 때문에 n이 클 수록 모델의 정확도는 높아지게 됨 ->  n=1 이면 one-shot learning

 

>> support set과의 비교는 유사성을 구하는 방식으로 이루어짐 -> 히든 layer를 통해 representation layer간 차이

 

Zero-shot learning (ZSL)

- 라벨링 되지 않은 새로운 클래스에 대한 분류 작업을 수행할 때, 이전에 학습된 모델을 사용하여 분류하는 기술!

- 이전에 학습된 모델을 사용하여 학습 데이터에 없는 새로운 클래스를 인식하고 분류

- e.g. 얼룩말, 소에 대한 label을 학습한 모델이 있을때 새로운 객체인 젖소를 label로 인식하는 형태

One-shot learning

- 하나의 샘플 이미지만으로 새로운 클래스를 인식하는 것을 의미

- 고양이를 인식하는 딥러닝 모델에게 "스핑크스"라는 새로운 종류의 고양이를 인식하도록 요청한다면, 모델은 이전에 본 적이 없는 스핑크스 고양이 사진 하나만으로도 인식을 수행

 

Few-shot learning

- 한 클래스당 일부 샘플 이미지만 사용하여 새로운 클래스를 인식하는 것

- e.g.  알파벳 손글씨 이미지를 분류하는 딥러닝 모델에게 "종이 상자"라는 클래스를 추가하라는 요청을 받았다면, 모델은 종이 상자에 대한 몇 가지 샘플 이미지를 보고 이를 인식

  • 특징 추출 (Feature extraction): 딥러닝 모델이 이미지나 텍스트 등의 데이터를 분석하고 이해하기 위해 사용하는 고차원 특징 데이터를 추출
  • 유사도 측정 (Similarity measurement): 새로운 데이터와 기존의 학습 데이터 간의 유사도를 측정하여 새로운 데이터가 어느 클래스에 속하는지 결정
  • 분류 알고리즘 (Classification algorithm): 유사도 측정 결과를 기반으로 새로운 데이터를 올바른 클래스로 분류하는 알고리즘 -> k-최근접 이웃(k-NN), 서포트 벡터 머신(SVM), 신경망 등이 있습니다.

또한 이러한 학습을 위해 사용되는 기술에는 신경망 아키텍처의 변형 및 데이터 증강 기술이 포함됩니다.

  • 신경망 아키텍처 변형: 일반적인 딥러닝 모델보다 더 적은 수의 학습 데이터로도 학습이 가능하도록 하는 신경망 아키텍처 변형이 필요합니다. 대표적인 예로는 신경망의 가중치를 공유하는 시각적 추론 네트워크(Siamese Network)와 유사도를 학습하는 메타-학습 모델(Meta-Learning Model) 등이 있습니다.
  • 데이터 증강: 적은 수의 학습 데이터로도 학습 성능을 향상시키기 위해, 기존의 학습 데이터를 변형하거나 학습 데이터에 노이즈를 추가하는 등의 방식으로 데이터를 증강합니다. 이를 통해 모델이 데이터의 다양성을 더 잘 이해하도록 돕습니다.

코드

# load the sentence-bert model from the HuggingFace model hub
!pip install transformers
from transformers import AutoTokenizer, AutoModel
from torch.nn import functional as F
tokenizer = AutoTokenizer.from_pretrained('deepset/sentence_bert')
model = AutoModel.from_pretrained('deepset/sentence_bert')

sentence = 'Who are you voting for in 2020?'
labels = ['business', 'art & culture', 'politics']

# run inputs through model and mean-pool over the sequence
# dimension to get sequence-level representations
inputs = tokenizer.batch_encode_plus([sentence] + labels,
                                     return_tensors='pt',
                                     pad_to_max_length=True)
input_ids = inputs['input_ids']
attention_mask = inputs['attention_mask']
output = model(input_ids, attention_mask=attention_mask)[0]
sentence_rep = output[:1].mean(dim=1)
label_reps = output[1:].mean(dim=1)

# now find the labels with the highest cosine similarities to
# the sentence
similarities = F.cosine_similarity(sentence_rep, label_reps)
closest = similarities.argsort(descending=True)
for ind in closest:
    print(f'label: {labels[ind]} \t similarity: {similarities[ind]}')

 

 

참고

 

Few shot learning 정리

 

zzaebok.github.io

 

Zero-Shot Learning in Modern NLP

State-of-the-art NLP models for text classification without annotated data

joeddav.github.io

 

One-shot / Few-shot / Zero-shot Learning

딥러닝 모델에서 One-shot learning과 Few-shot learning은 모델을 학습하는 데 사용되는 데이터의 양을 나타내는 용어입니다. 이 용어들은 특히 이미지 인식, 자연어 처리, 게임 등의 분야에서 사용됩니

velog.io

 

Know about Zero Shot, One Shot and Few Shot Learning

Learn about the innovative machine learning techniques of zero-shot learning, one-shot learning, and few-shot learning.

www.analyticsvidhya.com

 

728x90
반응형
LIST
Comments