본문 바로가기

Study/ML 공부

Few shot learning? Meta Learning?

%% 경고 %%
해당 포스팅은 수학적인 설명은 하지 않습니다.
같은 Few Shot Learning 일 지라도, Training strategy 전략에 따라 설명을 달라질 것이기 때문입니다
이번 포스팅에서는 포괄적인 설명만 다루고 있습니다.

Reference

What is Meta Learning By Cem Dilmegani

Few Shot Learning 이란 By zzaebok님

Few Shot Learning 이란 By seujung님

Few Shot Learning 이란 By borealisai님

Few Shot Learning 이란 By sjinu님

Few Shot Learning 이란 BY 후이님

Few Shot Learning 이란 BY Deval Shah님

Few Shot Learning 이란 BY Eram Munawwar님


Few shot learning?

  • Few shot learning을 설명하기 전에 "Artificial general intelligence"에 대해 생각해 봐야 한다.
Aritificial General Intelligence(인공 일반 지능)?
  • 범용적으로 사용 가능한 인공지능
  • 인간이 할 수 있는 어떠한 지적인 업무도 성공적으로 해낼 수 있는 (가상적인) 기계의 지능 (wiki)
어쩌라고요?
일단 할 말을 먼저 하자면,
  • 시간이 지날수록 성능 좋은 딥러닝 모델이 많이 등장하고 있지만, 이들이 가진 공통점이 있다. 바로 수백, 수천억 개 이상의 Parameters를 사용하는 것이다. 우리 같은 사람에 비하면 매우 비효율적이고 멍청하다.
  • 우리는 고양이인지 강아지인지 구분하기 위해서 고양이 사진 1만 장을 보면서 공부하지 않고, 욕인지 칭 잔인지 구분하기 위해 욕이 포함된 문장 1000개를 낭독하지 않는다.
  • 하지만 딥러닝 모델은 학습이란 것을 해야 하고, 데이터도 많이 필요하고 시간과 비용이 많이 소요된다.
그래서

우리 같은 사람처럼 적은 데이터(Few-shot)를 사용해 데이터 희소성 문제를 완화하며 좋은 성능을 내기 위해 고안된 연구가 바로 Few-shot Learning이라고 할 수 있으며, 이것은 결국 Aritificial General Intelligence을 위한 것이라고 할 수 있다.

 

Meta Learning? 그럼 메타 러닝은 뭐죠?  
  • 적은 데이터를 사용해서 좋은 성능을 내기 위한 방법
  • Learning to Learn,  학습하는 방법을 학습하는 방법
학습을 하는 방법을 학습하는 방법을 학법 하는 학방을 습법하는 습방하는 게 뭔데?
무슨 말이냐면
  • 다른 기계 학습 알고리즘의 출력으로부터 ​​학습하는 기계 학습 알고리즘
쉽게 말 좀 해라

여기서 학습 알고리즘이란,

  • 기존 알고 있는 분류나 회귀를 하기 위해서 학습 데이터 -  라벨을 학습한 알고리즘

Meta Learning 알고리즘은

  • 위 학습 알고리즘의 출력을 입력으로 사용하고 메타 데이터(Meta-train dataset, Meta-test dataset)를 사용함
Meta learning 이랑 Few shot learning 둘 다 적은 데이터(Few-shot)를 사용한다고? 같은 거냐?

Few-shot Learning은

  • Meta Learning을 하기 위한 여러 방법 중 하나임

Meta Learning은 방법(Approaches)이고, Few-shot Learning은 방식(Task) 임

 

Comparing Transfer and Meta Learning Approaches on a Unified Few-Shot Classification Benchmark

Meta and transfer learning are two successful families of approaches to few-shot learning. Despite highly related goals, state-of-the-art advances in each family are measured largely in isolation of each other. As a result of diverging evaluation norms, a

arxiv.org

그럼 Transfer Learning이랑 차이점은 뭔데?
  • 적은 데이터(Few-shot)을 위해 고안된 방법이 Meta Learning, Transfer Learning이고
  • Meta Learning을 하기 위한 여러 방법 중 하나가 Few shot Learning
아 모르겠고.. Meta Learning, Few-shot Learning 정의(Definition) 한 줄 요약해주셈 ㅋㅋ

솔직히 말하자면 단일 정의를 내리기는 힘든 것 같음

  • 그 정의는 조금씩 변형되고 왔고, 작업 방식에 따라 조금 달라질 수 있기 때문임

Few Shot Learning 

Few shot Learning을 봤다면,  Zero shot Learning, One shot Learning 또한 들어봤을 거임

  • 이러한 방식들은, N-way K-shot으로 방식으로 나눌 수 있음
  • N-way : Class 수
  • K-shot : Class 당, example 수
  • 따라서 아래는 3개의 Class, 각 Class 당 3개의 examples을 가지기 때문에 3-way 2-shot 임

전체적인 프로세스

  1. 기본적으로 Meta Learning에서 Dataset은 Meta-Train Dataset, Meta-Test Dataset으로 구분
    ( == 기존 Train/Test Dataset)
  2. 그리고 각각의 Dataset을 사용해, 하나의 Task를 생성함
  3. Task(Episode)는 Support Set과 Query Set으로 구성 
  4. Support set은 N개의 class, K개의 examples로 샘플링함
  5. N개의 Class로 학습하는 것이 하나의 Task(Episode)
Episodic training?
Few Shot Learning 방식에 주로 사용되는 방식인데,
쉽게 설명하자면, 각 Task를 구성하는 Support Set의 N, K 정하는 방식, 각 Task(Episode) 구성하는데 필요한 방식이라고 생각하자
학습 방법
  1. Training Task 학습하면서 모델 매개변수를 업데이트함
  2. Training Task의 Support Set으로 학습하고, Query Set으로 테스트하면서 Loss Function을 조정함
그리고 이렇게 학습된 모델을 평가하는 방법은
  1. Meta Test Dataset을 사용하는데, 학습된 모델에 Support Set을 학습시키고, Query Set 테스트하면서 성능을 실험함
  2. 결론적으로 Meta Test Dataset의 Query Set을 잘 분류하는 것이 목표임