본문 바로가기

Deep Learning

Few shot learning

GPT

Few-Shot Learning은 기계 학습에서 데이터셋이 적은 상황에서 새로운 클래스(class)를 분류하는 방법론 중 하나입니다. 이는 인간이 새로운 개념을 학습할 때도 적은 양의 예시를 통해 새로운 개념을 이해하고 구별하는 능력과 유사합니다.

Few-Shot Learning은 일반적으로 몇 개의 예시 데이터만을 이용하여 새로운 클래스를 분류하는 방법을 의미합니다. 따라서 적은 양의 데이터로도 높은 정확도를 달성할 수 있는 장점이 있습니다. Few-Shot Learning은 여러 가지 방법이 존재하지만, 대표적인 방법 중 하나는 메타-학습(Meta-Learning) 기법입니다.

메타-학습은 학습된 모델이 다양한 작업에 적응할 수 있도록 하기 위해 이전에 학습된 모델들을 이용하여 새로운 작업을 빠르게 학습하는 방법입니다. Few-Shot Learning은 이미지, 언어, 음성 등 다양한 분야에서 적용되고 있으며, 이를 통해 데이터셋이 적은 상황에서도 효과적인 분류 및 인식 기술을 개발할 수 있습니다.

 

Meta Learning & Few-Shot Learning

  • 메타러닝(Meta-Learning) : Learning-to-learn, 즉 학습을 잘 하는 방법을 학습하는 것에 대한 연구 분야
  • 퓨샷러닝(Few-Shot Learning) : 적은 데이터만을 가지고 좋은 성능을 뽑아내기 위한 방법론들을 다루는 연구 분야

위의 두 분야는 분명 다른 분야지만, 결국 목표는 '처음 마주하는 데이터(적은 데이터)에 대한 일반화 성능 확보'이기에 서로 밀접하게 연관되어 있다 할 수 있습니다.
일반화, 혹은 보편화를 더더욱 추구하는 연구 분야이기 때문에 미래 우리가 나아가야 할 범용 인공지능(Artificial generel Intelligence)를 위한 초석이라도 보는 사람도 많구요.

 

사실 처음 마주하는 데이터에 대한 일반화 성능 확보는 모든 딥러닝 연구의 목표라고 봐도 무방합니다.

 

 

여기서는 Optimization-based Meta-Learning에 대해서만 간단히 다루겠습니다.


(Figure in "Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks")

우선,  각기 다른 task에서 나오는 각기 다른 Loss라 할 수 있습니다.

이 때의 task가 주로 Few-Shot task가 되겠죠.

위의 과정을 Meta-Learning Adaptation으로 나눌 수 있습니다.

  1. Meta-Learning : 를 활용해 3개의 task에 모두 잘 작동할 수 있는 weight를 찾는 과정
    -즉, 일반화 성능이 좋은 초기값을 찾는 문제(Initialization)
  2. Adaptation : 메타러닝 과정에서 찾은 weight를 초기치로 활용해 각 task에 적합시키는 과정( fine-tuning)
  • 다양한 task에 일반적으로 잘 적용되는 weight를 초기치로 이용하기 때문에 적은 데이터로도 빠르게 optimal point로 나아갈 수 있습니다.

위와 같이 일반적으로 메타러닝은 다양한 task에 보편적으로 적용될 수 있는 초기 parameter를 찾는 것을 목표로 한다고 봐도 무방합니다.

 

 

Few-Shot Learning

퓨샷 러닝의 목적은 아래와 같이 매우 적은 학습 데이터(Support set)으로도 평가 데이터(Query set)를 올바르게 예측하는 것입니다.

우선, 아래에서 사용하는 용어에 대해 간단히 정리합시다.


2.1. Definition

그림 출처 : http://dmqm.korea.ac.kr/activity/seminar/301

N-way, K-shot** (classification)

N-way : class의 수
K-shot : class 당 example의 수

보통 , 

  • 특히, 인 경우 Zero-Shot이라 합니다.

Dataset 구조

Few-Shot Learning은 (일반적으로) 기존 학습 방법과 다르기 때문에 데이터 셋 용어 또한 달라져야 합니다.

기존 : Train-set 학습  Test-set 평가
↓↓↓↓↓
변경 : Meta-train dataset 학습 -> Meta-test dataset 학습+평가

이 과정을 구체적으로 나타내면 아래와 같습니다.

  • 메타러닝 학습  Adaptation 학습  Test-set 평가
  • (Meta-train set 이용) (Support set 이용)  (Query set 이용)


Support set  Train set

새로운 클래스에 대한 학습 데이터(Support)

Query set  Test set

새로운 클래스에 대한 평가 데이터(Query)

Meta-Train Dataset

Meta-Test를 잘 수행하기 위해 메타러닝에 쓰이는 학습 데이터

  • 당연히, Meta-train dataset의 클래스와 Meta-test dataset의 클래스는 달라야 합니다.(Novel)

meta-train 데이터셋은 메타-학습을 위한 학습 데이터셋으로, 작은 데이터셋들로 이루어져 있으며, 각각의 작은 데이터셋들은 클래스를 구분하는 데 사용됩니다. 반면, Support set은 새로운 클래스를 분류하기 위한 데이터셋으로, meta-train 데이터셋에서 선택된 작은 데이터셋 중에서 새로운 클래스에 해당하는 이미지들로 이루어진 작은 데이터셋입니다.

 


즉, 우리는 위와 같이 적게 주어지는 Support set으로부터 Query set의 label을 올바르게 예측하기 위해서 Meta-train dataset을 활용해 학습을 진행하게 됩니다.

전이학습(Transfer Learning)과 유사?

  • large-scale dataset에 학습한 pre-trained model을 활용하면 비교적 적은 데이터셋으로도 좋은 성능을 낼 수 있습니다(전이학습).
  • 하지만 일반적인 전이학습으로는 Few-shot task를 수행할 수는 없습니다(적어도 데이터 수백~수천 개는 있어야..)

 

세 줄 요약 

1. Few-Shot Learning은 일반적으로 몇 개의 예시 데이터만을 이용하여 새로운 클래스를 분류하는 방법을 의미합니다.

2. Meta-train set 이용 Support set 이용  Query set 이용의 순서이다.

3. 전이학습과는 다르다.

 

[출처] : https://velog.io/@sjinu/Few-Shot-Learning

'Deep Learning' 카테고리의 다른 글

Federated Learning  (0) 2023.03.23
Loss Surface  (0) 2023.03.23
경사하강법(gradient descent)  (0) 2023.03.23