Few Shot Learning 설명 | Few-Shot Learning (1/3): 基本概念 상위 40개 답변

당신은 주제를 찾고 있습니까 “few shot learning 설명 – Few-Shot Learning (1/3): 基本概念“? 다음 카테고리의 웹사이트 you.pilgrimjournalist.com 에서 귀하의 모든 질문에 답변해 드립니다: you.pilgrimjournalist.com/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 Shusen Wang 이(가) 작성한 기사에는 조회수 16,090회 및 좋아요 267개 개의 좋아요가 있습니다.

Table of Contents

few shot learning 설명 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 Few-Shot Learning (1/3): 基本概念 – few shot learning 설명 주제에 대한 세부정보를 참조하세요

下节课链接: https://youtu.be/Er8xH_k0Vj4
这节课的内容是 Few-Shot Learning (小样本学习) 和 Meta-Learning (元学习)的基本概念。下节课内容是用Siamese Network解决Few-shot learning。
Meta Learning课程视频:
1. Few-Shot Learning Basics: https://youtu.be/UkQ2FVpDxHg
2. Siamese Network: https://youtu.be/Er8xH_k0Vj4
3. Pretraining + Fine Tuning: https://youtu.be/3zSYMuDm6RU
课件: https://github.com/wangshusen/DeepLearning

few shot learning 설명 주제에 대한 자세한 내용은 여기를 참조하세요.

Few shot learning 정리 – zzaebok

Few shot learning이란, 말 그대로 “Few”한 데이터도 잘 분류할 수 있다는 것이다. 그런데, 헷갈리지 말아야 할 것은 “Few”한 데이터로 학습을 한다는 …

+ 여기에 더 보기

Source: zzaebok.github.io

Date Published: 6/19/2021

View: 3823

Introduction to Few-Shot Learning & Meta Learning – velog

메타러닝(Meta-Learning) : Learning-to-learn, 즉 학습을 잘 하는 방법을 학습하는 것에 대한 연구 분야 퓨샷러닝(Few-Shot Learning) : 적은 데이터 …

+ 여기에 보기

Source: velog.io

Date Published: 10/7/2021

View: 5522

few shot learning : 개념, 접근법, 소개 – 쵸코쿠키의 연습장

few shot learning이 무엇일까요? … 이름에서 알 수 있듯이 적은 수의 학습은 많은 양의 데이터를 사용하는 일반적인 관행과 달리 매우 적은 양의 훈련 …

+ 여기에 더 보기

Source: jjeongil.tistory.com

Date Published: 11/3/2022

View: 4974

[Deep Learning] Few shot Learning, Meta learning 개념 총정리

few shot learning 관련 논문들을 읽다보면, 용어가 기존 딥러닝 논문들과 조금씩 달라서 이해하기 어려운데 간단히 짚고난 뒤 이어서 설명을 하자면.

+ 자세한 내용은 여기를 클릭하십시오

Source: huidea.tistory.com

Date Published: 9/20/2021

View: 7592

Ai : Few shot Learning – 화학쟁이의 ㎚코딩노트

Few Shot Learning은 적은 데이터를 학습하더라도 좋은 성능을 내도록 하는 학습방법이다. 이제 이 획기적인 방법에 대해서 포스팅을 할 예정이다.

+ 여기에 자세히 보기

Source: mambo-coding-note.tistory.com

Date Published: 4/22/2022

View: 5398

Few-Shot Learning(퓨샷러닝과 관련하여) – py

(1) GNN을 이용한 Few-Shot Learning 역시 특정 노드 V의 이웃 노드에 노드별 거리(유사도)를 곱한 값들의 합(가중평균)을 계싼하고, 이를 V와 합쳐 …

+ 자세한 내용은 여기를 클릭하십시오

Source: koreapy.tistory.com

Date Published: 1/1/2022

View: 9101

Tutorial on Few-Shot Object Detection #1 – SI Analytics

Few-Shot Learning은 적은 양의 데이터로 모델을 학습하여 테스트 데이터에서 유의미한 성능을 얻고자 하는 작업입니다. 이때 이미지와 레이블로 구성된 …

+ 여기에 자세히 보기

Source: blog.si-analytics.ai

Date Published: 5/6/2022

View: 1473

[논문 리뷰] Prototypical Networks for Few-shot Learning

Few-shot learning은 train dataset에는 없는 새로운 에 대해 적은 데이테만을 가지고 있을 경우, 새로운 를 수용하기 위해 분류기가 조정 …

+ 여기에 자세히 보기

Source: rhcsky.tistory.com

Date Published: 2/11/2022

View: 4128

Zero Shot, One Shot, Few Shot Learning – 뭐라도 하겠지

Few Shot learning은 여러 종류의 개를 보여주면서 가르쳐주고, 새로운 종의 개를 보여주면 개라는 것을 맞출 수 있는 것이다. 이는 인간에 가장 가까운 …

+ 여기에 표시

Source: ds-jungsoo.tistory.com

Date Published: 3/21/2021

View: 9718

적은 데이터로 딥러닝 잘 학습하기 – 공부를 위한 정리

1) 퓨샷 러닝 (Few-shot learning). 딥러닝 모델을 제대로 학습 … 에피소딕 훈련에 대해 좀 더 자세히 설명하자면 다음과 같다. 대용량 학습 데이터 …

+ 자세한 내용은 여기를 클릭하십시오

Source: noteforstudy.tistory.com

Date Published: 7/10/2021

View: 5060

주제와 관련된 이미지 few shot learning 설명

주제와 관련된 더 많은 사진을 참조하십시오 Few-Shot Learning (1/3): 基本概念. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

Few-Shot Learning (1/3): 基本概念
Few-Shot Learning (1/3): 基本概念

주제에 대한 기사 평가 few shot learning 설명

  • Author: Shusen Wang
  • Views: 조회수 16,090회
  • Likes: 좋아요 267개
  • Date Published: 2020. 5. 5.
  • Video Url link: https://www.youtube.com/watch?v=UkQ2FVpDxHg

Introduction to Few-Shot Learning & Meta Learning

↑ 딥러닝의 명과 암

1. 기존 딥러닝의 한계와 메타러닝

1.1. 현재 딥러닝의 한계

모두가 알다시피, 근래 몇 년간 딥러닝은 수 많은 데이터에 의존해왔습니다.

데이터가 없다면, 성능이 잘 나오지 않죠.

(여러 데이터셋 중 하나인 IMAGENET dataset)

딥러닝의 성능이 너무나도 좋아서 각광을 받고 있긴 하나, 대용량 데이터가 있어야만 제 기능을 하는 것은 인공지능이라기보다는 고도의 통계처리 기계라고 보는 것이 옳다는 의견도 많습니다.

더군다나, 데이터에 라벨까지 필요한 지도 학습 task라면 데이터셋 구축 조차 쉽지 않겠죠.

그래서 최근 몇 년간 데이터 의존성을 줄이기 위한 수 많은 연구가 있었습니다.

Domain Adaptation Semi-supervised learning Self-supervised learning

4. Meta-learning

대표적으로 본 글에서 다룰 Few-shot Learning에 적용되는 Meta-Learning 또한 이에 해당합니다.

1.2. Meta Learning & Few-Shot Learning

메타러닝(Meta-Learning) : Learning-to-learn, 즉 학습을 잘 하는 방법을 학습하는 것에 대한 연구 분야

퓨샷러닝(Few-Shot Learning) : 적은 데이터만을 가지고 좋은 성능을 뽑아내기 위한 방법론들을 다루는 연구 분야

위의 두 분야는 분명 다른 분야지만, 결국 목표는 ‘처음 마주하는 데이터(적은 데이터)에 대한 일반화 성능 확보’이기에 서로 밀접하게 연관되어 있다 할 수 있습니다.

일반화, 혹은 보편화를 더더욱 추구하는 연구 분야이기 때문에 미래 우리가 나아가야 할 범용 인공지능(Artificial generel Intelligence)를 위한 초석이라도 보는 사람도 많구요.

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

1.3 메타 러닝(Meta Learning)

메타러닝에는 아래와 같이 다양한 종류의 알고리즘이 존재합니다.

오른쪽 Application에 Few-Shot Learning이 보이네요.

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

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

우선, L 1 , L 2 , L 3 \mathcal{L}_1, \mathcal{L}_2, \mathcal{L}_3 L1​,L2​,L3​는 각기 다른 task에서 나오는 각기 다른 Loss라 할 수 있습니다.

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

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

Meta-Learning : L 1 , L 2 , L 3 \mathcal{L}_1, \mathcal{L}_2, \mathcal{L}_3 L 1 ​ , L 2 ​ , L 3 ​ 를 활용해 3개의 task에 모두 잘 작동할 수 있는 weight를 찾는 과정

-즉, 일반화 성능이 좋은 초기값을 찾는 문제( ≈ \approx ≈ Initialization) Adaptation : 메타러닝 과정에서 찾은 weight를 초기치로 활용해 각 task에 적합시키는 과정( ≈ \approx ≈ fine-tuning)

다양한 task에 일반적으로 잘 적용되는 weight를 초기치로 이용하기 때문에 적은 데이터로도 빠르게 optimal point로 나아갈 수 있습니다.

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

2. 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의 수

보통 N < 10 N<10 N<10, K = 0 , 1 , 5 K=0,1,5 K=0,1,5 특히, K = 0 K=0 K = 0 인 경우 Zero-Shot이라 합니다. Dataset 구조 Few-Shot Learning은 (일반적으로) 기존 학습 방법과 다르기 때문에 데이터 셋 용어 또한 달라져야 합니다. 기존 : Train-set 학습 → \rightarrow → Test-set 평가 ↓↓↓↓↓ 변경 : Meta-train dataset 학습 -> Meta-test dataset 학습+평가

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

메타러닝 학습 → \rightarrow → Adaptation 학습 → \rightarrow → Test-set 평가

학습 Adaptation Test-set (Meta-train set 이용) → \rightarrow → (Support set 이용) → \rightarrow → (Query set 이용)

Support set ← \leftarrow ← Train set

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

Query set ← \leftarrow ← Test set

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

Meta-Train Dataset

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

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

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

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

large-scale dataset에 학습한 pre-trained model 을 활용하면 비교적 적은 데이터셋 으로도 좋은 성능을 낼 수 있습니다(전이학습).

을 활용하면 으로도 좋은 성능을 낼 수 있습니다(전이학습). 하지만 일반적인 전이학습으로는 Few-shot task를 수행할 수는 없습니다(적어도 데이터 수백~수천 개는 있어야..).

2.2. Training strategy(Episodic training)

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

Few-shot task에서 학습은 주로 Episodic training을 활용합니다(강화학습 아님).

이 때 아래의 수식을 하나하나 파악해봅시다.

Task sampling

우선, Meta-Train dataset에서 N N N개의 class를 샘플링하게 됩니다.

이 때 N N N개의 class로 학습을 진행하는 것이 1개의 task가 됩니다.

Support set sampling

하나의 task가 정해지면, class 또한 정해집니다.

이 때 N N N개의 class에 대한 t t t개의 example을 샘플링해 support set으로 사용합니다.

Query set sampling

마찬가지로 N N N개의 class에 대한 u u u개의 example을 샘플링해 query set으로 사용합니다.

여기까지 하나의 에피소드입니다.

Maximize log-likelihood

이렇듯 특정 Class와 example을 샘플링하는 에피소드를 여러 번 거치면서, Query set의 이미지 x x x와 Support set S S S가 주어졌을 때, Query set의 label인 y y y의 확률을 높히는 방향으로 parameter θ \theta θ를 최적화하게 됩니다.

위와 같이 학습을 진행한다면 실제 Meta-test dataset과 동일한 환경이 되기 때문에 좋은 성능을 내도록 학습할 수 있습니다.

2.3. Common Apporach

위와 같은 Objective를 보아하니, 일반적인 딥러닝 학습처럼 위에서 샘플링되는 ( S , B ) (S, B) (S,B)의 집합을 mini-batch, 그리고 손실함수로 Negative log likelihood를 사용해 Gradient Descent 기반 방법론들을 사용하면 될 것 같은데..

애초에 딥러닝이랑 환경이 다르니 다른 방법들도 생각해봐야겠죠?

(Vinyals(Deepmind) : ???????? in NIPS 17)

학습을 위해서 제안되는 방법은 주로 아래와 같이 Model-based, Metric based, Optimization based 3가지로 나눌 수 있습니다.

3. Types of Few Shot Learning

3.1. Model-based Meta Learning

Model-based 방법론은 일반적으로 모델 f f f를 활용해, Objective의 likelihood P θ ( y ∣ x , S ) P_\theta(y|x,S) Pθ​(y∣x,S)를 정의합니다.

위의 그림과 같이 RNN 계열 모델처럼 정의한다면 [sigmoid/softmax] activation으로 probability y y y를 반환하고, 그 결과가 가장 좋은 hidden layer 내 θ \theta θ를 weight로 사용하면 됩니다.

단, 애초에 적은 데이터를 사용하기 때문에 large dataset에 특화된 모델을 사용하는 것이 아닌, fast-learning에 특화된 모델을 사용하게 됩니다.

또한, 웬만한 것은 모델 f f f에 맡기기 때문에 P θ ( y ∣ x , S ) P_\theta(y|x,S) Pθ​(y∣x,S)에는 어떠한 가정도 포함되지 않습니다.

Memory-Augmented Neural Networks (MANN)

위와 같은 형태를 가지는 아키텍처는 학습을 위해 외부 memory storage를 활용합니다.

이런 storage buffer를 통해서 network는 새로운 정보에 대해 빠르게 이해할 수 있고, 미래에도 이 정보를 잊지 않을 수 있습니다.

Few-Shot Learning에 쓰이는 만큼 적은 sample 만으로도 빠르게 새로운 task에 적용할 수 있게끔 설계되어야 합니다.

즉, 새로운 task에 대한 정보를 빠르게 인코딩해 얻어낼 수 있어야 하고, 저장된 representation 또한 쉽고 안정적으로 접근할 수 있어야 합니다.

뿐만 아니라 기존의 정보를 잊지 않게끔 메모리 또한 존재합니다.

3.2. Metric Base Meta Learning

Metric-based meta learning의 근본적인 개념 자체는 K-Means clustering과 같은 알고리즘이나 density estimation과 유사합니다.

즉, 딥러닝처럼 대용량 데이터가 아닌, 소수의 데이터로도 충분한 관계성을 파악할 수 있는 metric(거리) 기반 방법을 활용하는 것입니다.

(2개의 데이터만 가지고도 충분히 관계성을 파악할 수 있게끔 Embedding function f θ f_\theta fθ​를 학습할 수 있다)

다만 이를 위해서 Mapping function(Embedding function)을 잘 학습하는 게 목표가 되겠습니다.

Matching Networks for One Shot Learning(2016)

Matching Networks는 임베딩 함수를 활용해 최종적으로 Query set의 input x x x에 대응되는 label y y y의 distribution을 반환하는 네트워크입니다.

위 그림에서 볼 수 있다시피, g θ g_\theta gθ​는 Support set의 임베딩 함수, f θ f_\theta fθ​는 Query set의 임베딩 함수입니다.

위 저자들은 Embedding function으로 아래와 같은 모델을 제안합니다.

Simple embedding( g θ = f θ g_\theta =f_\theta g θ ​ = f θ ​ ) Conv-4 Full contextual embeddings( g θ ≠ f θ g_\theta

e f_\theta g θ ​  ​ = f θ ​ ) g θ g_\theta g θ ​ : bi-LSTM

: bi-LSTM f θ f_\theta f θ ​ : attLSTM

위의 임베딩 함수를 토대로 만들어낸 Query set의 임베딩 벡터 f ( x ) f(x) f(x)가 Support set의 임베딩 벡터 4개( g ( x 1 ) , g ( x 2 ) , g ( x 3 ) , g ( x 4 ) g(x_1), g(x_2), g(x_3), g(x_4) g(x1​),g(x2​),g(x3​),g(x4​))와의 유사도를 구할 수 있습니다.

이 때 일반적으로 유사도함수 a ( x , x i ) a(x, x_i) a(x,xi​)는 cosine similarity를 사용하고, soft-max를 거쳐 label의 weight(attention)로 사용됩니다.

그리하여 아래와 같은 (query set의 label y y y에 대한) 최종 확률식이 나오게 되는 것입니다.

Other examples

이외에도 twin CNN을 embedding에 활용하는 Convolutional Siamese Neural Network, 이를 개선한 Relation Network, 각 Class의 mean-point vector를 활용한 Prototypical Networks 등이 있습니다.

Convolutional Siamese Neural Network(2015)

Prototypical Networks(2017)

Relation Network(2018)

3.2. Optimization based Meta Learning

(대용량 데이터에 적합한 Gradient Descent 방법을 그대로 활용할 수는 없다).

Few-Shot learning에서는 단순하게 생각했을 때 여러 task에 대해 각기 다른 매개변수를 갖는 모델을 사용해야 합니다.

즉, 위 그림과 같이 Learner M M M이 여러 개 주어져 각각 task에 대한 Optimization을 수행하고, Meta-Learner R R R이 이런 정보를 받아 최종적으로 메타 러닝을 조절할 수 있습니다(LSTM 활용).

여기서는 보다 직관적인 모델인 Model-Agnostic Meta-Learning(MAML)에 대해서만 다루어봅시다.

3.2.1 MAML

우선, update 식을 봅시다.

update하고자 하는 모델은 f θ f_\theta fθ​, 그리고 현재의 task는 τ i \tau_i τi​입니다.

이 때는 그냥 우리가 아는 gradient descent 방식으로 새로운 parameter θ ′ \theta’ θ′를 얻으면 됩니다.

다만, 우리의 목표는 하나의 task가 아닌, 다양한 task에 일반화시키는 것입니다.

즉, 여러 task에 대해 빠르게 적응할 수 있는 최적의 parameter θ ∗ \theta^* θ∗를 찾기 위해 Meta-update를 수행해야 합니다.

이 때에는 여러 task에 대해, task-specific으로 얻었던 여러 θ i ′ \theta’_i θi′​를 이용해, 이전과는 다른 데이터를 활용해 업데이트하게 됩니다.

이에 대해 일반화된 알고리즘은 아래와 같습니다.

해당 모델은 물론 초기 모델에 가깝기 때문에 여러 단점도 많습니다만, 메타러닝의 사실상 목표인 “다양한 task에 일반화된 weight 찾기”를 가장 잘 보여주는 모델입니다.

4. Trend in Few-Shot

4.1. ZERO-SHOT Text-to-Image Generation

특정 문장을 아예 학습하지 않고(Zero-shot) 문장에 대한 이미지를 생성하는 모델입니다(DALL-E).

그걸 Real-time 으로 진행하는 모델(GauGAN2)

Few-Shot 방식으로 예상은 하나, 아직 논문은 안 나와서 확실하지 않습니다.

4.2. Few-Shot Object Detection

딥러닝 분야의 미래 중 하나라고 할 수 있는 Few-Shot Learning에 대해 알아보았습니다. !

Ref

https://talkingaboutme.tistory.com/entry/DL-Meta-Learning-Learning-to-Learn-Fast

Meta-Learning in Neural Networks: A Survey

https://velog.io/@tobigs_xai/6%EC%A3%BC%EC%B0%A8-Introduction-to-Meta-Learning

https://velog.io/@tobigs-gm1/Few-shot-Learning-Survey

https://evolution.ml/pdf/vinyals.pdf

few shot learning : 개념, 접근법, 소개

반응형

머신 러닝의 few shot learning 이해

머신 러닝은 최근 몇 년간 엄청난 성장을 경험했습니다. 이러한 놀라운 성장을 이끄는 요인 중 일부는 알고리즘 및 학습 모델의 정교성 향상, 기계의 컴퓨팅 기능 향상 및 빅데이터의 가용성 증가를 포함합니다.

머신 러닝 경험이 5 년 이상이고 현재 사람들에게 자신의 기술을 가르치고있는 AndreyBu는 “데이터는 성공을 보장하는 머신 러닝 훈련 학습 모델의 핵심입니다. 충분하고 양질의 데이터를 제공하는 학습 모델은 더 정확한 결과를 얻을 수있을 것”이라고 덧붙였습니다.

그러나 때로는 모델의 정확도를 높이기 위해 충분한 데이터를 축적하는 것은 비현실적이고 달성하기 어렵습니다. 예를 들어, 엄청난 비즈니스 상황에서 샘플 라벨링은 비용이 많이 들고 관리하기가 어렵습니다.

이러한 제한된 데이터 및 까다로운 시나리오에서 데이터의 패턴을 발견하고 유리한 예측을 하기 위해 퓨샷 학습 알고리즘이 성공적으로 사용되었습니다.

few shot learning이 무엇일까요?

이름에서 알 수 있듯이 적은 수의 학습은 많은 양의 데이터를 사용하는 일반적인 관행과 달리 매우 적은 양의 훈련 데이터로 학습 모델에 공급하는 관행을 나타냅니다.

이 기법은 주로 컴퓨터 비전 분야에서 활용되며, 개체 분류 모델을 사용하면 몇 가지 훈련 샘플이 없어도 적절한 결과를 얻을 수 있습니다.

예를 들어, 사진에서 조류를 분류하는 데 문제가 있는 경우, 희귀종의 일부 조류는 훈련 이미지에 사용하기에 충분한 그림이 부족할 수 있습니다.

결과적으로 데이터 세트의 양이 충분하지 않은 새 이미지 분류기가 있으면 이를 몇 번 또는 퓨샷의 머신 러닝 문제로 취급합니다.

새의 이미지를 하나만 가지고 있다면 이것은 원샷 머신 러닝 문제일 것입니다. 훈련에 모든 클래스 레이블이 없는 극단적인 경우에는 일부 범주에서 훈련 샘플이 0 개가 되므로 머신 러닝으로 해결할 문제가 전혀 없습니다.

퓨샷 머신 러닝을 위한 목적

퓨 샷 학습 딥 러닝은 미니멀리스트 데이터 세트로부터 예측을 하기 위해 신뢰할 수있는 알고리즘을 만들 수 있다는 개념에 기반합니다. 채택률을 높이는 몇 가지 상황은 다음과 같습니다.

라벨링 데이터가 부족할 때마다 머신 러닝 모델은 신뢰할 수 있는 일반화를 수행하지 못하는 경우가 많습니다.

거대한 데이터 세트로 작업 할 때 데이터에 올바르게 레이블을 지정하면 많은 비용이 들 수 있습니다. 여러 샘플을 사용할 수 있는 경우 모든 작업에 특정 기능을 추가하는 것은 힘들고 구현하기 어렵습니다.

퓨 샷 러닝 접근법

일반적으로 퓨샷 또는 원샷 머신 러닝 문제를 해결하기 위해 두 가지 주요 접근 방식이 사용됩니다. 두 가지 주요 접근 방식은 다음과 같습니다.

a) 데이터 수준 접근

이 접근법은 알고리즘의 매개 변수에 맞지 않는 데이터가 충분하지 않고 데이터에 대한 적합치 또는 과적합을 피할 때 더 많은 데이터를 추가해야한다는 개념을 기반으로합니다.

이를 실현하는 데 사용되는 일반적인 기술은 광범위한 외부 데이터 소스 모음을 활용하는 것입니다. 예를 들어, 각 범주에 충분한 레이블이 지정된 요소가 없는 조류 종에 대한 분류기를 작성하려는 경우 새 이미지가 있는 다른 외부 데이터 소스를 조사해야합니다. 이 경우 레이블이 없는 이미지라도 특히 반감독 방식으로 포함 된 경우 유용 할 수 있습니다.

외부 데이터 소스를 활용하는 것 외에도, 데이터 기반 퓨 샷 학습을 위한 또 다른 기술은 새로운 데이터를 생성하는 것입니다. 예를 들어, 데이터 증강 기술은 조류의 이미지에 랜덤 노이즈를 추가하기 위해 사용될 수 있습니다.

대안적으로, 새로운 이미지 샘플은 GAN (Generative Adversarial Network) 기술을 사용하여 생성 될 수 있습니다. 예를 들어,이 기술을 사용하면 훈련 세트에 충분한 데이터가 있는 경우 새 관점의 새 이미지를 다른 관점에서 생성 할 수 있습니다.

b) 파라미터 수준 접근

데이터의 가용성이 부적절하기 때문에 소수의 학습 샘플은 너무 넓은 차원의 공간을 가질 수 있습니다. 과적합 문제를 극복하기 위해 매개 변수 공간을 제한 할 수 있습니다.

이러한 머신 러닝 문제를 해결하기 위해 정규화 기술 또는 손실 기능이 종종 사용되는데, 이는 퓨샷 문제에 적용될 수 있습니다.

이 경우, 제한된 수의 트레이닝 샘플을 일반화하도록 알고리즘이 강요됩니다. 다른 기술은 알고리즘을 광범위한 매개 변수 공간으로 보내 알고리즘의 정확도를 향상시키는 것입니다.

SDG (stochastic gradient descent)와 같은 표준 최적화 알고리즘을 사용하는 경우 훈련 데이터 수가 충분하지 않기 때문에 높은 차원 공간에서 원하는 결과를 얻지 못할 수 있습니다.

이와 같이, 알고리즘은 최적 예측 결과를 제공하기 위해 파라미터 공간에서 최상의 경로를 찾도록 지시됩니다. 이 기술은 일반적으로 메타 러닝이라고합니다.

예를 들어, 파라미터 공간을 캡슐화하는 방법에 대한 대량의 데이터를 사용하여 티칭 알고리즘을 학습 할 수 있습니다. 그 후, 실제 분류기가 훈련되면, 티칭 알고리즘은 분류기에게 광범위한 파라미터를 지시하여 최상의 훈련 결과를 실현합니다.

마무리

머신 러닝의 몇 번의 학습은 매우 적은 양의 훈련 데이터를 사용할 수 있을 때마다 가장 적합한 솔루션으로 입증되고 있습니다. 이 기술은 데이터 부족 문제를 극복하고 비용을 줄이는 데 유용합니다.

반응형

[Deep Learning] Few shot Learning, Meta learning 개념 총정리

728×90

반응형

Few shot Learning, Meta learning 개념 총정리

Index

0. Few-shot learning 의 등장 배경 : ” 학습 데이터가 없다 ”

1. Few shot learning, Meta learning, Transfer learning 뭐가 다른데?

2. Episode training : 에피소드 방식을 통해 메타러닝을 시도

3. Meta learning 학습 기법 3가지

0. Few-shot learning 의 등장 배경 : ” 학습 데이터가 없다 ”

– 학습 데이터가 적은 상황에서 딥러닝 모델 구축 자체가 어려움

– 인간처럼 몇 장의 사진만을 보고도 직관적으로 분류하는 모델을 우리는 만들 수 없나 ?

– 소량의 데이터(few-shot)만으로도 뛰어난 학습을 하는 모델 만들어보자 !! –> Few shot learning 의 시작

모델이 추론하는 과정에서 소량의 데이터만 보고 추론을 할 경우 few-shot

1장의 데이터만 보고 추론을 할 경우 one-shot

0장의 데이터만 보고 (즉 Task 조건만 입력하고) 추론을 할 경우 zero-shot

용어 정리

few shot learning 관련 논문들을 읽다보면, 용어가 기존 딥러닝 논문들과 조금씩 달라서 이해하기 어려운데

간단히 짚고난 뒤 이어서 설명을 하자면..

way : 데이터 클래스의 개수 (ex. 개고양이 분류기 – 2 way classification)

shot, point : 데이터의 개수

query : test data (엄연히 따지자면 validation data)

source : train data

1. Few shot learning, Meta learning, Transfer learning 뭐가 다른데?

Few shot learning 의 목적은 말 그대로 적은 데이터로 추론이 가능하게 하는 것

그리고 이 방법으로 고안된 학습 방법이 Transfer learning 과 Meta learning

1.1 Transfer Learning

→ Pre-trained 모델을 중심으로 학습, 소량의 데이터(few-shot) 으로 재학습

대량의 데이터로 Pre-trained 모델을 생성한 뒤, 적은 Dataset을 Fine-Tuning하는 알고리즘이라는 점에 초점

Transfer learning 에서 multi task learning을 할 때는

Pre-trained 모델을 불러온 뒤 각각의 Task에 맞게 Fine-tuning 한다.

공식 : pre-trained parameter(θ)를 가져와서 New task에 맞게 optimization 목표는 New task를 위한 최적의 Φ 구하기

Transfer learning 그림 (출처 : https://meta-learning.fastforwardlabs.com/)

– 대량의 데이터로 사전 학습 모델 생성 (파란색 박스 Neural network)

– 사전 학습 모델 weight를 그대로 가져온 뒤 각 Task에 맞는 데이터 (Fine-tuning 데이터) 로 재학습해서 모델 생성 (진한 파란색 NN)

1.2 Meta-Learning

→ 여러개의 Task 를 동시에 학습 & 각 Task 간의 차이도 학습 (meta- parameter)

전체 학습 이후 소량의 데이터(few-shot) 으로도 추론 할 수 있는 범용적인 모델 생성

공식 : pre-trained parameter(θ)의 적은 update만으로도 각각의 task의 최적 파라미터(Φ)를 구할 수 있게 하는

초기 파라미터(θ)를 optimization –> 즉, New task를 위한 최적의 초기 θ를 구하기

출처 : https://meta-learning.fastforwardlabs.com/

– 학습 데이터(Source data)로 학습 한 후에 시험 데이터(Target data)로 loss 계산

– 계산된 loss를 초기 모델(Learner, Meta-Learner)에 최적화

– 여러개의 Support data, Query data 로 이 과정을 반복

즉, 메타 러닝 학습 과정에서는 전체 데이터를 여러개의 Support data, Query data로 쪼개는 과정이 필요하다.

이 방법 중 하나가 에피소드 학습 방법이다.

2. Episode training : 에피소드 방식을 통해 메타러닝을 시도

2.1 개념

[ 기존 방식 ]

쥐, 소, 호랑이, 토끼, 용 구분하는 이미지 분류기를 만들고자 한다면 (각 클래스별 데이터 100개)

쥐, 소, 호랑이, 토끼, 용 각각 80개는 학습해 5클래스 분류기를 만든뒤

쥐, 소, 호랑이, 토끼, 용 각각 20개 시험 데이터로 성능을 평가한다.

쥐 소 호랑이 토끼 용 학습 80 80 80 80 80 시험 20 20 20 20 20

[ 에피소드 학습방법 ] : 한번에 쥐, 소, 호랑이, 토끼, 용 모든 클래스를 활용하지 않는다.

Task 1 : {쥐, 소} 클래스 분류기

Task 2 : {호랑이, 토끼} 클래스 분류기

Task 3 : {토끼, 용} 클래스 분류기

→ 이런식으로 분류기를 쪼갠 뒤, 완전히 새로운 데이터 (뱀,말, 양)으로 분류 성능 확인하는 방식이다.

2.2 에피소드 학습 방식

1) Train – test data split

전체 학습 데이터를 메타 훈련(Meta-train dataset), 메타 테스트(Meta-test dataset) 으로 나눈다.

이때 Meta-test에 구성된 데이터 클래스(원숭이, 자전거)는 Meta-train 에 등장하지 않은 클래스다.

2) Task Sampling

메타 훈련(Meta-train dataset) 데이터를 각 Task 데이터로 쪼갠다

전체 클래스 중 일부 클래스(Class1,2) 데이터가 Task1에 샘플링

여기서 각각의 Task 를 우리는 “Episode”라 부른다.

3) Support Query dataset split

각 Task 별 데이터를 다시 Support set(training set), Query set(test set) 으로 샘플링

(→ 기존 딥러닝 학습 방식과 마찬가지로 이 둘의 데이터는 겹치지 않음)

4) Task Training : 각각의 Task로 학습을 진행하며 모델 생성한다.

5) Meta test Evaluation :

생성된 모델에 Meta-test의 Support 셋으로 새로운 이미지 클래스 학습시키고,

최종적으로 Meta-test Query 셋을 분류해내는 것이 목적 !

⇒ 목표

학습에 활용되지 않은 클래스의 데이터(Meta-test)에서도

일부 Meta-test support 데이터로 훈련한 뒤, Meta-test query 데이터를 구분할 수 있는가

그리고 여기서 다양한 학습 방법들이 고안되는데 크게 3가지의 학습 기법으로 분류가 된다.

3. 메타러닝의 학습 기법 3가지

메타러닝에서는 각 Task가 최적의 Parameter 가 다름 (ϕ1, ϕ2,….)

따라서 모든 Task parameter (ϕi) 를 추정하는건 의미가 없음

중요한건, 데이터 특성과 ϕi 사이의 정보(θ) 를 학습 ⇒ 추후 새로운 데이터가 들어오면 θ를 이용해서 추정 ⇒ how?

𝜃를 어떻게 사용하는지에 따라 접근 방법이 나뉜다.

https://jxnjxn.tistory.com/84

3.1 Metric-based Approach : 거리 기반 학습 기술

metric learning 에서 중요한 개념 2개 – embedding function, Distance

학습 데이터를 저차원의 공간에 Mapping (임베딩)

새로운 데이터가 들어오면 저차원 공간에 임베딩 → 임베딩 공간에서 가장 가까운 클래스로 분류

관련 연구 : 샴 네트워크, matching network, prototype network

3.2 Model based apporach : 모델 기반 학습

모델 내부나 외부에 기억장치(memory)를 둠으로써 학습 속도를 조절한다.

모델은 몇번의 Training step 만으로도 파라미터 빠르게 찾는게 가능해짐

관련 연구 : Memory network, NTM, MANN

3.3 Optimization-based Approach : 최적화 기반 학습

각각의 task 의 최적 파라미터 ( π ) 를 구할 수 있게 하는 초 기 파라미터 ( θ ) 를 optimization

관련 연구 : MAML, First order MAML, Reptile

각각의 기법에 대한 자세한 설명은 관련 연구 논문 리뷰를 통해 정리 해보려 한다 !

참고 link :

https://www.kakaobrain.com/blog/106

https://velog.io/@tobigs-gm1/Few-shot-Learning-Survey

https://talkingaboutme.tistory.com/entry/DL-Meta-Learning-Learning-to-Learn-Fast

https://jxnjxn.tistory.com/84

https://meta-learning.fastforwardlabs.com/

728×90

반응형

Ai : Few shot Learning

Few Shot Learning은 적은 데이터를 학습하더라도 좋은 성능을 내도록 하는 학습방법이다.

이제 이 획기적인 방법에 대해서 포스팅을 할 예정이다.

왜 Few Shot Learning을 해야하는가?

우리 인간은 적은 데이터를 학습하더라도, 실제로 적은 데이터 기반으로 문제를 풀 수 있다.

하지만, 기계는 인간처럼 소량의 데이터만으로도 놀라운 학습 능력을 갖출 수는 없을까?

이에 대한 답을 내는 것이 바로 Few Shot Learning 이다.

Few Shot Learning은 meta learning을 기반으로 하는 학습방법이다.

2020/08/28 – [AI] – Ai : Meta Learning

Meta Learning에 대한 설명은 여기에 정리해두었다.

Few Shot Learning

출처 : https://www.kakaobrain.com/blog/106

Few Shot Learning은 크게 Support Set, Query Set 두 가지로 나뉜다.

Support set은 dataset을 training에 사용하는 data를 말한다. Query set은 dataset을 test에 사용하는 data를 말한다.

이런 Few Shot Learning을 “N-way K-Shot” 문제라고 부른다.

여기서 N은 범주의 갯수를 말한다. 즉, 고양이인지 자동차인지, 다른 물건인지 맞추는 경우의 수, 해답의 갯수를 말한다.

따라서 N이 커질수록 model의 정확도는 떨어질 수 밖에 없다.

또 K는 한 범주당 학습하는 dataset의 갯수를 말한다. 따라서 K가 커질수록 model은 더 다양한 dataset을 학습하게되고, task의 다양성을 학습해야하는 meta learning을 기반으로하는 Few Shot Learning의 model은 정확도가 좋아질 것이다.

Few Shot Learning에 Meta Learning 도입

위에서도 말했듯이 Meta Learning은 사람이 통제하던 기계학습을 기계에게 스스로 학습할 수 있는 규칙을 익힐 수 있도록 하는 방법이다. 여기서 사람이 통제하던 기계학습은 labeling을 하는 Supervised Learning을 말한다.

따라서 적은 수의 데이터를 학습하는 Few Shot Learning에 기계가 스스로 학습규칙을 도출하도록 하는 meta learning을 적욯해서 성능을 높이자는 것이 아이디어이다. 이를 Episodic Learning 이라고 부른다.

즉, 적은 데이터를 보고 학습한 후 좋은 성능을 내는 사람을 모방해서, 모델 스스로가 학습규칙을 도출할 수 있도록 도와줌으로써 일반화 성능을 높일 수 있도록 하게 한다.

출처 : https://www.kakaobrain.com/blog/106

유의할 점

위에 그림에서 보듯이, Few Shot Learning의 architecture을 고대로 따른다. 하지만 기존 데이터들과는 약간 다르다.

데이터셋을 보면 train, validation, test data로 나뉘기는 하지만, 서로의 범주 (고양이, 사과, 귤 … 등 label에 해당)를 공유한다. 그리고 data의 다양성을 익혀야하기 때문에 data가 중복되서는 안된다.

Application

1. 거리 학습 기반 방식 (metric based)

2. Graph Neural Network

최근에는 적은 양의 데이터만으로도 분류 성능을 극대화하고자 데이터 간 복잡한 관계 정보를 학습에 활용하는 추세다. 가장 많이 연구되는 게 바로 그래프 신경망이다.

우리가 흔히 아는 일반적인 인공 신경망은 입력값으로 벡터나 행렬 형태를 활용한다면, GNN은 밀집 그래프(dense graph) 구조를 활용한다. 그래프에서 노드는 데이터를, 노드와 노드를 잇는 간선(edge)은 데이터 간 관계 정보를 나타내며 밀집 그래프는 모든 노드가 서로 완전히 연결된 것을 가리킨다. GNN은 바로 이 그래프 구조와 각 노드에 해당하는 데이터의 특징 벡터를 입력받는다.

https://www.kakaobrain.com/blog/106

Few-Shot Learning(퓨샷러닝과 관련하여)

딥러닝 모델은 데이터양에 비례해 그 성능이 향상되는 경향성을 보입니다.

많게는 수백만 개에 이르는 매개변수(가중치)를 훈련할 수 있을 규모의 데이터가 생산됨에 따라 근래의 딥러닝 모델은 데이터 분류 문제를 사람만큼 잘 풀어내고 있습니다. 물론 이를 위해서는 몇 가지 단서가 붙습니다. 현실을 충분히 잘 반영할 정도로 다양하고 품질이 우수한 데이터와 모델 훈련에 필요한 막대한 컴퓨팅 자원이 거의 필수라고 봐야 합니다.

하지만 딥러닝 모델의 훈련 방식은 인간의 것과 비교하면 효율적이지 않습니다.

반면, 우리 인간은 단 몇 장의 사진(훈련 데이터)가지고도 생애 처음으로 본 사물(테스트 데이터)을 구분할 수 있습니다. 기계는 인간처럼 소량의 데이터(few-shot)만으로도 놀라운 학습 능력을 갖출 수 없을까요? 관련해서 진행되는 연구가 바로 퓨샷 러닝(few-shot learning)입니다.

카카오브레인 AutoLearn 연구팀에서도 퓨샷 러닝 연구를 진행하고 있습니다. 이 연구팀이 고안한 ‘Edge-Labeling Graph Neural Network for Few-shot Learning(EGNN)’은 컴퓨터 비전 및 패턴 인식 컨퍼런스인 CVPR 2019에 승인되기도 했죠.

EGNN이 해결하려는 문제와 그 구조, 성능을 소개하기에 앞서, 퓨샷 러닝에 대한 간략한 개념부터 짚어보겠습니다.

퓨샷 러닝이란?

데이터 수가 매우 적은 퓨샷 러닝 문제에서는 데이터셋을 훈련에 사용하는 서포트 데이터(support data)와 테스트에 사용하는 쿼리 데이터(query data)로 구성합니다.

이런 퓨샷 러닝 태스크를 ’N-way K-shot 문제’라고 부릅니다.

N은 범주의 수, K는 범주별 서포트 데이터의 수를 의미합니다. 단편적인 예로, [그림 1]처럼 2개의 범주, 범주당 5장의 이미지가 주어진 문제를 2-way 5-shot 문제라고 할 수 있겠습니다.

2 – way, 5 – shot

2가지 범주 분류, 5가지 트레인셋

[ 그림 1 ] 2-way 5-shot 이미지 분류 문제의 예시 © 카카오브레인

수백만 장의 고양이 사진을 학습한 딥러닝 모델이 고양이를 명확하게 구분한 예에서 보듯이, K가 많을수록 이 범주에 해당하는 데이터를 예측하는 모델의 성능(추론 정확도)은 높아집니다.

퓨샷 러닝은 이 K가 매우 작은 상황에서의 모델 학습을 가리킵니다.

반면, N의 값이 커질수록 모델 성능은 낮아집니다.

5지 선다형 문제에서 답을 모를 때에는 한 번호만 찍어도 평균 20점을 기대해볼 수 있지만, 100지선다형 문제에서의 기대 성적이 1점이 이 되는 것과 비슷한 원리입니다.

다시 정리하자면, 퓨샷 러닝 모델의 성능은 N과 반비례하며 K와는 비례하는 관계에 놓여 있음을 알 수 있습니다. 일반적인 벤치마크(benchmark) 실험에서는 N은 10개 이하, K를 1개 또는 5개로 설정합니다. 쿼리 데이터는 범주당 15개가 주로 활용됩니다. 연구에 많이 쓰이는 5-way 1-shot 문제에서 모델 정확도는 50%대, 5-way 5-shot 문제에서는 70% 수준입니다([표 1] 참고).

[ 표 1 ] 이미지넷에서 샘플링한 5way 1-shot 문제와 5way 5-shot 문제에서의 모델 성능을 비교한 표

퓨샷 러닝 태스크에 메타 러닝 도입

퓨샷 러닝 모델이 완전히 새롭게 주어진 데이터에서도 잘 작동하도록 만들기 위해서는 메타 러닝(meta-learning)[1]이 필요합니다.

퓨샷 러닝 태스크에서는 에피소딕 훈련(episodic training) 방식으로 메타 러닝을 시도합니다.

에피소딕 훈련은 퓨샷 태스크와 유사한 형태의 훈련 태스크를 통해 모델 스스로 학습 규칙을 도출할 수 있게 함으로써 일반화 성능을 높일 수 있게 합니다.

[ 그림 2 ] 퓨샷 러닝 모델의 일반화 성능을 높이기 위해 에피소딕 훈련에 기반을 둔 메타 러닝 방식이 널리 사용된다.

퓨샷 러닝을 위한 에피소딕 훈련에는 훈련・검증・테스트 태스크를 둡니다.

일반 딥러닝에는 데이터를 훈련・검증・테스트 데이터로 구분하지만 서로 같은 범주를 공유하는 대신 데이터만 서로 겹치지 않도록 합니다.

예를 들어, 데이터셋 모두 {고양이, 자동차, 사과, 귤, 원숭이, 자전거}라는 범주에 해당하는 데이터로 구성돼있죠.

반면, 에피소딕 훈련에서는 각 태스크를 구성하는 범주가 서로 완전히 다릅니다.

[그림 2]에서 보듯이 {고양이, 자동차}, {사과, 귤}, … {원숭이, 자전거}처럼 말이죠.

에피소딕 훈련에 대해 좀 더 자세히 설명하자면 다음과 같습니다.

1) 대용량 훈련 데이터로부터 N-way K-shot 훈련 태스크를 여러 개 샘플링합니다.

모델은 다양한 범주로 구성된 훈련 태스크를 통해 최적의 성능을 낼 수 있도록 훈련됩니다.

2) 훈련을 마친 모델은 완전 새로운 데이터로 구성된 테스트 태스크로 그 성능을 평가받습니다.

퓨샷 러닝 연구 동향을 소개합니다

퓨샷 러닝 문제는 다양한 방식으로 해결해볼 수 있습니다. 이번에는 연구팀이 분석한 최신 논문 중 EGNN의 방향성을 설정하는 데 큰 영향을 미친 거리 학습(metric learning)과 그래프 신경망(graph neural networks, GNN)에 관련된 6편의 연구를 소개하고자 합니다.

1. 거리 학습 기반 방식

범주별 훈련 데이터의 수가 적은 퓨샷 태스크에서는 딥러닝처럼 분류기의 가중치를 훈련하는 방식이 적합하지 않습니다. [그림 3]에서 보듯이 한 태스크를 구성하는 N*K개의 소수 훈련 데이터에만 지나치게 적응하는 과적합(overfitting)[2] 현상이 발생할 수 있기 때문입니다.

[ 그림 3 ] 훈련 데이터가 적을수록 과적합 문제가 발생할 가능성이 높아진다. © Julien Despois

그 대신 [그림 4]처럼 서포트 데이터와 쿼리 데이터 간의 거리(유사도)를 측정하는 방식을 활용합니다.

모델은 주어진 서포트 데이터를 특징 공간(feature space)에 나타냅니다(특징 추출).

이 공간 상에서 쿼리 데이터의 범주는 유클리디안 거리(Euclidean distance)[3]가 가장 가까운 서포트 데이터의 것으로 예측됩니다(거리 계산+최근린 선택).

[ 그림 4 ] 거리 측정을 통해 쿼리 데이터의 범주를 예측하는 과정을 도식화했다.

모델은 [그림 5]처럼 두 데이터의 범주가 같으면 거리를 더 가깝게 두고, 다를 때는 거리가 더 멀게 만드는 방법을 학습합니다.

이를 두고 거리 학습이라고 합니다. 퓨샷 러닝 초기에 활용되던 거리 학습은 가장 간단하면서도 효과적인 것으로 잘 알려져 있습니다.

(즉, 특징 추출 맵을 표시해서 특징과의 거리를 같은 범주면 가깝게, 멀면 멀게하여서 특징에 대한 분류를 시도하는 방법)

[그림 5] 모델은 같은 범주의 데이터는 더 가깝게, 다른 범주의 데이터는 멀어지도록 거리를 학습한다.

이렇게 표현된 특징 공간에서 쿼리 데이터의 범주는 이와 가장 가까운 서포트 데이터의 것으로 결정된다.

(1) Siamese Neural network for one-shot image recognition

(이전 퓨샷러닝은 인간이 직접 특징맵을 그려서 특징에 대한 정보를 지도하고, 이러한 특징맵을 먼저 설정해놓은 뒤에 이에 기반한 거리 학습을 시작했다) 이전에는 인간이 직접 설계한 특징으로 거리 학습을 시도했다면,

(여타 딥러닝이 그러하든 Feature Engineering 및 Feature Map을 스스로 포착하여 해당 특징맵을 그리고 이에 기반한 거리 분류를 시도하는 것을 최초로 시도한 DN이 바로 샴 네트워트)

샴 네트워크(Siamese network)는 처음으로 딥뉴럴넷(DNN)을 활용했다는 점에서 의의가 있다고 볼 수 있겠습니다.

대표적인 DNN 응용 알고리즘인 CNN(convolutional neural networks)[4]으로 특징 추출기를 만든거죠.

매개변수를 공유하는 동일한 구조의 특징 추출기는 두 데이터 간 거리를 학습합니다.

좀 더 자세히 설명하자면, CNN은 검증 손실 함수(verification loss function) 값을 최소화할 때까지 훈련됩니다. 이 검증 손실 값은 두 입력 데이터의 범주가 같은 상황에서 특징 공간상 거리가 멀면 커집니다. 두 데이터의 범주가 다른 상황에서 거리가 가까워져도 마찬가지고요. 이런 검증 손실 값을 최소화함으로써 모델은 범주가 같은 두 데이터의 거리가 가까워질수록 또는 범주가 다른 데이터의 거리가 멀어지게 하는 특징을 획득하게 됩니다.

[그림 6] 샴 네트워크는 두 데이터 간 유사도를 판단하고자 CNN 기반 특징 추출기를 사용한다. ©lilianweng

(2) Matching networks for one-shot learning

샴 네트워크에서 특징 추출기는 두 개의 입력 데이터 간 거리를 절대적으로 0으로 만들거나 크게 만드는 훈련에 집중합니다.

그러나 이는 테스트 단계에서 주어지는 N-way K-shot 문제를 푸는 데 최적화된 방법론이라고 볼 수는 없습니다. 쿼리의 범주는 상대적으로 더 가까운 서포트 데이터의 것으로 결정되기만 하면 됩니다. 따라서 N-way K-shot 문제에서는 데이터 간 상대적 거리를 잘 표현하는 특징 추출기를 만들 필요가 있습니다.

이 논문에서는 최근린 선택기를 미분이 가능한 형태로 제안함으로써 특징 추출기가 스스로 데이터 간 상대적 거리를 표현하는 방법을 익히도록 했습니다. 아울러 N-way K-shot 훈련 태스크에 기반한 에피소딕 훈련 방식을 하는 등 모델의 범주 예측 성능을 높였습니다.

(3) Prototypical networks for few-shot learning

5-way 5-shot 태스크가 주어졌을 때 기존 방식에서는 서포트 데이터 25개와 쿼리 데이터 간 거리를 일일이 계산했습니다.

반면, 이 논문에서는 범주별 서포트 데이터의 평균 위치인 프로토타입(prototype)이라는 개념을 사용합니다.

결과론적으로 모델은 5개 범주를 대표하는 프로토타입 벡터와 쿼리 벡터와의 거리만 계산하면 됩니다.

저자는 퓨샷 데이터가 주어진 상황에서 프로토타입 네트워크가 Matching networks보다 성능 면에서 더 유리하다고 주장합니다. 쿼리 예측에 필요한 계산량을 N*K에서 N개로 줄이는 한편, 그 구조가 더 단순하다는 걸 근거로 제시하고 있습니다.

[그림 7] 프로토타입 네트워크는 범주별 서포트 벡터 간 평균 위치인 프로토타입을 활용해 모델의 복잡도를 줄였다.

(4) Learning to compare : relation network for few-shot learning

한 태스크에서 {고양이, 자동차, 사과}처럼 서로 완전히 다른 성격의 범주를 분류하는 문제라면 물체의 모양(shape) 정보만으로도 쿼리 데이터의 범주를 쉽게 예측할 수 있을 것입니다. 하지만 특징 추출기가 같은 범주의 데이터를 더 가깝게, 다른 범주의 데이터를 더 멀게 할 정도로 충분히 복잡하지 않다면 어떨까요? 그렇다면 {러시안블루, 페르시안, 먼치킨}처럼 고양이의 종류를 구분하는 태스크를 풀기 어려울 것입니다.

이 논문에서는 특징 추출기에 CNN을 적용했을 뿐만 아니라 거리 계산 함수에도 다층 퍼셉트론[5]을 적용시켰습니다. 다층 퍼셉트론은 같은 범주 또는 다른 범주의 서포트 데이터와 쿼리 데이터를 분류하는 법을 배웁니다.

2.그래프 신경망 방식(GNN)

최근에는 적은 양의 데이터만으로도 분류 성능을 극대화하고자 데이터 간 복잡한 관계 정보를 학습에 활용하는 추세입니다. 가장 많이 연구되는 게 바로 그래프 신경망입니다.

우리가 흔히 아는 일반적인 인공 신경망은 입력값으로 벡터나 행렬 형태를 활용한다면, GNN은 밀집 그래프(dense graph) 구조를 활용합니다. 그래프에서 노드는 데이터를, 노드와 노드를 잇는 간선(edge)은 데이터 간 관계 정보를 나타내며 밀집 그래프는 모든 노드가 서로 완전히 연결된 것을 가리킵니다. GNN은 바로 이 그래프 구조와 각 노드에 해당하는 데이터의 특징 벡터를 입력받습니다.

(1) GNN을 이용한 Few-Shot Learning 역시 특정 노드 V의 이웃 노드에 노드별 거리(유사도)를 곱한 값들의 합(가중평균)을 계싼하고, 이를 V와 합쳐 새로운 V’을 얻음. 이런 것들을 통해 결국 특징 벡터와 이에 대한 거리로 환산하여 해당 내용을 퓨샷러닝에 적용시킬 수 있게됨.

(1) Few-shot learning with graph neural networks

이 논문에서 GNN의 동작 방식은 다음과 같습니다. 각 노드는 해당하는 데이터의 특징 벡터로 초기화됩니다. 그다음, 특정 노드 V의 이웃 노드에 노드별 거리(유사도)를 곱한 값들의 합(가중평균)을 구합니다. 이를 V와 합쳐 새로운 벡터 V’를 얻습니다. 다른 노드에 대해서도 같은 연산을 순차적으로 반복합니다. 가장 마지막에 쿼리 노드 벡터값의 업데이트도 완료합니다.

모델은 N개의 범주와 완전히 연결된 FC(fully connected layer)층을 통해 쿼리 데이터의 범주를 예측합니다.

[그림 8] 한 태스크를 구성하는 데이터 간의 관계를 나타내고자 그래프 신경망 구조를 활용하고 있다.

(2) TPN을 기본으로 하는 퓨샷러닝 역시 마찬가지로 이웃 노드와의 거리를 계산해 범주 정보를 전파한다. 그러나 GNN보다 단점이지만 동시에 장점이기도 한 것은 파라미터 초기화 이후에 더이상 업데이트 하지 않아서 연산량과 속도를 효율적으로 줄일 수 있음(정확도와 별개로, 그러나 퓨샷 러닝 자체가 애당초 특징맵을 기반으로 한 거리기반의 러닝임을 감안하였을때, 파라미터 업데이트가 그렇게 큰 경쟁력을 갖지 못할 수 있으므로 연샨량을 줄이고, 시간을 줄이는 것이 더 큰 도움이 될 수 있음을 시사함)

TPN은 그리고 단 하나의 닫힌 형태의 방정식으로 한방에 다른 클래스를 예측할 수 있어서, 무식하고 세밀하지는 않지만 한번에 그냥 갈라서 노드를 한번에 계산해서 분류해버릴 수 있음.

결국 퓨샷 러닝 자체가 나이브한 러닝이기때문에 하나의 닫힌 방정식으로 파라미터 초기화한다음에, 노드와 엣지에 대해서 하나의 equation 폼으로 규정하고, 가장 거리가 멀게 class들을 특징맵에서 분류하는 학습을 시도함.

즉 가장 러프하게 진행되서 세밀하지 못할 수 있지만, 퓨샷 러닝의 작동원리상 충분히 가능한 내용들임.

(2) Transductive propagation network for few-shot learning (TPN)

TPN 또한 기존 GNN처럼 특정 노드와 이웃 노드와의 거리를 계산해 범주 정보를 전파합니다.

GNN과 다른 점은 노드 값을 초기화한 후 더는 업데이트하지 않는데 있습니다.

이렇게 되면 범주 정보를 연쇄적으로 전파하는 부분을 하나의 닫힌 형태 방정식(close form equation)으로 표현할 수 있게 됩니다. 이 방식에서는 범주 정보 전파 횟수에 비례해 늘어나는 연산 횟수가 단 한 번으로 줄어 들고, 매 단계에서 얻은 각 노드의 범주 벡터는 메모리에 기록될 필요가 없습니다.

즉, 노드 사이 거리를 고정하면 계산량과 메모리 사용량을 획기적으로 줄일 수 있다는 의미입니다.

TPN과 GNN의 또 다른 차이점은 한 그래프에서 참고하는 서포트 데이터의 수입니다. 5-way 5-shot 문제에 10개의 쿼리 데이터가 있다고 가정해보겠습니다. GNN은 25개의 서포트 데이터와 1개의 쿼리 데이터, 즉 26개의 노드로 이루어진 그래프를 각각 10개를 구성해 쿼리 10개에 대한 범주를 완전히 독립적으로 예측합니다. 반면, TPN은 25개의 서포트 데이터와 10개의 쿼리 데이터, 즉 35개의 노드로 이루어진 단 하나의 그래프를 구성해 쿼리 10개의 범주를 한꺼번에 예측합니다.

이처럼 TPN은 모든 쿼리 데이터를 학습에 활용함으로써 그 범주를 더 정확하게 예측하게 됩니다.

데이터가 지극히 적은 상황에서 쿼리 데이터도 활용하면 저차원의 매니폴드(manifold)[6] 공간에서 결정 경계(decision boundary)를 더욱 수월하게 찾을 수 있기 때문입니다.

이처럼 라벨링 데이터와 테스트 데이터의 분포를 고려해 테스트 데이터의 범주를 추론하는 방식을 변환 학습(transductive learning)이라고 합니다.

[ 그림 9 ] TPN은 주어진 서포트 데이터와 쿼리 데이터를 단 하나의 그래프로 구성하고 쿼리의 범주를 동시에 예측한다. 쿼리의 매니폴드를 활용하면 범주 분류 성능을 높일 수 있어서다.

카카오브레인 AutoLearn 연구팀이 고안한 EGNN은 거리 학습과 그래프 신경망의 장점을 합쳤습니다. EGNN은 퓨샷 러닝 문제가 주어졌을 때 쿼리 데이터와 서포트 데이터가 그래프 구조 상에서 상호 작용하며 데이터 간 거리를 계산합니다. 이어서 2편에서 EGNN이 해결하고자 한 문제와 구조, 성능 그리고 향후 연구 계획에 대한 이야기를 전해드리겠습니다.

참고

[1] 사람이 통제하던 기계학습 과정을 자동화함으로써 기계 스스로 학습 규칙(메타 지식)을 익힐 수 있게 하는 방법론

[2] 모델이 훈련 데이터에만 지나치게 적응해 테스트 데이터 또는 새로운 데이터에는 제대로 반응하지 못하는 현상

[3] N차원의 공간에서 두 점의 직선 거리를 계산하는 식

[4] 이미지의 공간 정보를 유지하면서 특징을 효과적으로 인식하고 강조하는 딥러닝 모델. 특징을 추출하는 영역은 컨볼루션 층은 풀링 층로 구성된다. 컨볼루션 층은 필터(filter)를 사용해 공유 파라미터 수를 최소화하면서 이미지의 특징을 찾는다. 풀링 층은 특징을 강화하고 모은다.

[5] 입력층과 출력층 사이에 하나 이상의 중간층이 존재하는 신경망

[6] 두 점 사이의 거리가 국소적으로는 유클리디안을 따르나 대역적으로는 독특한 위상 구조를 갖춘 공간

#AUTOML #메타러닝 #이미지 #카카오브레인 #Brain’s Pick

이 글을 쓴 사람들

이수경

지난 2016년 3월 알파고와 이세돌 9단이 펼치는 세기의 대결을 취재한 것을 계기로 인공지능 세계에 큰 매력을 느꼈습니다. 인공지능을 알고 싶어하는 사람들을 위한 콘텐츠를 쓰고자 카카오브레인에 합류했습니다. 현재는 분야별 인공지능 전문가와 함께 기술 콘텐츠를 생산하는 재미에 푹 빠져 있습니다. 인공지능을 만드는 사람들의 이야기와 인공지능이 바꿀 미래 사회에 대한 글은 누구보다 쉽고, 재미있게 쓰는 사람이 되고 싶습니다.

김종민 | 감수

수많은 동물을 직접 키워보며 어른이 되면 꼭 식물학자가 되리라는 꿈을 안고 자연 속에서 유년기를 보냈습니다. 어쩌다가 4차 산업혁명이라는 시대적 흐름에 휘말려(?) 자연 대신 인공지능과 청년기를 보내고 말았군요. 세상의 수많은 것을 정말 빠른 속도로 혁신하는 인공지능에 그저 감탄할 뿐입니다. 현재 카카오브레인에서 AutoLearn 팀원들과 함께 스스로 학습 규칙을 익히는 인공지능 기술을 연구하고 있습니다. 우리의 미래, 다음 세대의 미래를 지금보다 아름답게 만드는 데 이바지하고 싶습니다.

Tutorial on Few-Shot Object Detection #1

1. Introduction

일반적으로 가장 널리 사용되고 있는 딥 러닝 모델들은 방대한 양의 데이터를 필요로 하는 지도 기반 학습(Supervised Learning)을 따릅니다. 하지만 지도 기반으로 학습한 딥 러닝 모델에 새로운 종류의 대상을 추가하기 위해서는 그에 따른 대규모 데이터를 추가로 필요로 합니다.

이를 위해 매번 수천, 수만 장의 데이터를 수집하고 레이블링해야 한다면 수많은 비용과 시간이 소모됩니다.

또한 비용 부담이 가능하더라도, 궤도 상에서 회전하며 촬영하는 위성영상이나, 혹은 드물게 발생하는 재난 상황과 같은 충분한 양의 데이터를 확보하기 어려운 경우에는 충분한 성능의 딥 러닝 모델을 학습시키기 어렵습니다.

마지막으로 인지적 관점에서 볼 때, 사람은 한두 장의 이미지를 보고도 이를 일반화하여 새로운 대상을 식별할 수 있습니다. 딥 러닝 모델이 인간과 같은 의미에서의 학습을 할 수 있다고 말하기 위해선 이와 같은 강력한 일반화 능력을 지녀야 할 것입니다.

이러한 이유들로 인해 적은 양의 데이터로 모델을 학습하는 방법에 대한 연구인 Few-Shot Learning에 대한 관심이 점점 더 많아지고 있습니다.

데이터 수집 및 레이블링 비용: 수천, 수만 장의 데이터를 수집하고 레이블링하는데 수많은 비용과 시간이 소모됨.

수천, 수만 장의 데이터를 수집하고 레이블링하는데 수많은 비용과 시간이 소모됨. 데이터 확보 어려움: 위성영상이나, 드물게 일어나는 재난 환경과 같이 수집할 수 있는 데이터의 양 자체가 한정적일 경우에는 딥 러닝 모델을 학습시킬 충분한 데이터 확보가 어려움.

위성영상이나, 드물게 일어나는 재난 환경과 같이 수집할 수 있는 데이터의 양 자체가 한정적일 경우에는 딥 러닝 모델을 학습시킬 충분한 데이터 확보가 어려움. 사람의 일반화 능력: 사람은 한두 장의 이미지를 보고도 물체를 구분할 수 있는데 이러한 일반화 능력이 딥 러닝 모델에도 필요함.

SIA에서도 Object Detection과 같은 서비스를 하면서 위와 같은 문제를 해결하기 위해 Few-Shot Learning을 연구하고 있습니다. 이번 글에서는 많은 연구가 이루어진 Classification을 기반으로 Few Shot Learning에 대해 알아보고, 다음 글에서 SIA가 주로 관심을 갖고 있는 Object Detection 에서 Few-Shot Learning을 적용한 Few-Shot Object Detection을 살펴보도록 하겠습니다.

2. Few-Shot Classification

Few-Shot Learning의 학습 데이터(Support Set)와 테스트 데이터(Query Set)

Few-Shot Learning은 적은 양의 데이터로 모델을 학습하여 테스트 데이터에서 유의미한 성능을 얻고자 하는 작업입니다. 이때 이미지와 레이블로 구성된 적은 양의 학습 데이터셋을 Support Set이라고 부릅니다. 그리고 이 Support Set으로만 모델을 학습한 후, 모델의 성능을 평가할 데이터셋을 Query Set이라고 부릅니다.

Support Set이 어떻게 구성되었는지에 따라 문제의 난이도가 달라집니다. 일반적으로 예측해야 할 클래스가 많아질수록 문제가 어려워지고, 각 클래스마다 할당되어 있는 학습 데이터의 양이 많아질수록 문제가 쉬워집니다.

Support Set에서 예측해야 하는 클래스가 N개 있고, 각 클래스마다 K개의 이미지와 레이블 쌍이 있을 때 해당 문제를 N-Way K-Shot Problem이라고 부릅니다. 경우에 따라 다르지만 Few-Shot Classification에서는 5-Way 1-Shot 또는 5-Way 5-Shot 문제를 일반적으로 다룹니다.

Few-Shot Learning의 대표적인 두 접근 방법은 다음과 같습니다.

Data-Driven Approach: Support Set으로 주어진 데이터에 Transformation을 적용하거나 Generative Adversarial Network (GAN)을 이용해 모델을 학습시킬 충분한 양의 데이터를 생성하는 방법입니다.

Support Set으로 주어진 데이터에 Transformation을 적용하거나 Generative Adversarial Network (GAN)을 이용해 모델을 학습시킬 충분한 양의 데이터를 생성하는 방법입니다. Model-based Approach: 모델이 같은 클래스의 이미지와 서로 다른 클래스의 이미지를 구분할 수 있게 하도록 Feature vector간의 Similarity를 학습하게 하거나, 적은 양의 데이터에 모델이 Overfitting되지 않도록 Regularization 등을 도입하는 방법입니다.

Data-Driven Approach는 그 방법이 간단하고 직관적이지만, Support Set의 데이터가 데이터의 모집단을 보장할 수 없다는 점에서 명확한 한계를 갖고 있습니다. 그렇기 때문에 본 글에서는 Model-based Approach를 중점적으로 살펴보도록 하겠습니다.

다른 접근 방법들은 다음 논문을 참고하시면 됩니다.

Generalizing from a Few Examples: A Survey on Few-Shot Learning

3. Model-based Approach on Few-Shot Learning

Model-based Approach의 예: Matching Network

Model-based Approach에는 Distance나 Similarity와 같은 Metric을 이용하는 Metric-based Approach와, 최근에 많은 관심을 받고 있는 Graph Neural Network를 활용하는 방법 등이 있습니다. 본 글에서는 State-of-the-art Model에 가장 널리 쓰이는 Metric-based Approach에 대해서 다루도록 하겠습니다.

Metric-based Approach는 이미지 간의 Similarity나 Distance를 학습해, Query Data가 주어졌을 때 가장 Similarity가 높은 Support Set의 클래스로 예측하는 방법입니다.

예를 들어 샴 고양이와 러시안 블루 고양이 이미지가 있다면 두 이미지는 같은 클래스에 속하기 때문에 두 이미지 간의 Similarity는 1에 가까워야 하고, 샴 고양이와 코끼리 이미지가 있다면 Similarity는 0에 가까워야 합니다.

Metric-based Approach with Metric Learning

모델에 이러한 Similarity를 학습시키기 위해서 이미 레이블링이 되어 있는 방대한 양의 데이터를 활용할 수 있습니다.

예를 들어 고양이, 호랑이, 사자 이미지 간의 유사도를 학습하기 위해, 기존에 공개되어 있는 방대한 양의 ImageNet 데이터를 활용해 미리 유사도를 학습시킬 수 있습니다.

이러한 경우에 우리가 실제로 풀어야 할 문제에서 예측할 클래스들을 Novel Class라고 부르고, 실제 예측을 하기 전에 방대한 양으로 활용할 데이터의 클래스들을 Base Class라고 부릅니다. 물론, 모델이 적은 양의 Novel Class 데이터를 잘 활용했는지 정당하게 평가하기 위해 Novel Class와 Base Class는 겹치지 않아야 합니다. 이때 Base Class의 데이터를 Source Domain, Novel Class의 데이터를 Target Domain이라고 부르기도 합니다.

이제 문제는 방대한 양의 Base Class 데이터를 이용해 모델을 미리 학습해놨다가, Novel Class로 주어진 Support Set을 적절하게 활용해 Query Set에서 Novel Class를 예측하는 문제로 바뀌었습니다.

방대한 양의 Base Class 데이터를 활용해 Novel Class에 적용하는 방법은 크게 두 가지가 있을 수 있습니다.

Transfer Learning: 먼저 Base Class 데이터셋을 이용해 학습한 후, Novel Class의 Support Set에 재학습하는 방법입니다. 일반적으로 사용되는 Fine-Tuning도 여기에 속합니다.

먼저 Base Class 데이터셋을 이용해 학습한 후, Novel Class의 Support Set에 재학습하는 방법입니다. 일반적으로 사용되는 Fine-Tuning도 여기에 속합니다. Meta-Learning: Meta-Learning 방식은 최근에 각광 받고 있는 접근법입니다. Novel Class에서 Support Set을 이용하여 Query Set 예측하는 것과 같이, Base Class에서도 특정 클래스 샘플들을 뽑아 임의로 Support Set과 Query Set으로 구성해 가상의 Episode를 설정하여 학습을 진행합니다. 이렇게 함으로써 실제 모델을 평가할 Few-Shot 세팅을 데이터가 충분히 많은 Base Class 데이터셋에서 실험해볼 수 있습니다. 이러한 방법을 Episodic Training으로 부르며 자세한 내용은 아래와 같습니다.

Episodic Training의 도식도

Episodic Training에서는 실제 풀어야 할 문제를 Support Set과 Query Set으로 나누듯이, Base Class을 이용해 학습할 때도 특정 Class를 선별하여 Support Set과 Query Set을 뽑습니다. 이렇게 묶인 하나의 작업을 하나의 Episode 또는 Task라고 부릅니다.

구체적인 절차는 다음과 같습니다.

Base Class(Source Domain)에서 N-Way에 해당하는 클래스를 랜덤으로 뽑습니다. 해당하는 클래스당 K-Shot개의 이미지, 레이블 쌍을 가져와 Support Set을 지정하고, 다시 해당하는 클래스로 이루어진 Query Set을 정합니다. 주어진 Support Set을 이용하여 Query Set을 평가한 후, 계산된 Loss를 이용해 모델을 업데이트해줍니다. 1~3의 과정을 충분히 반복해 모델이 학습된 뒤, Novel Class(Target Domain)의 Support Set을 활용해 Query Set에 테스트합니다.

이러한 Meta-Learning 방식은 Learning-to-Learn이라 하여, 학습 자체를 학습하는 방법을 제안했기 때문에 Few-Shot Learning 뿐만 아니라 다양한 문제들에 적용되고 있습니다.

하지만, 최근 여러 논문에서 복잡한 방식의 Meta-Learning보다 간단한 Fine-tuning 기반 방법을 이용해 더 나은 성능을 얻을 수 있다고 얘기합니다.

이는 Fine-tuning 방식이 Few-Shot Learning에 적합하기 보다는 여태까지 발표되었던 Few-Shot Learning 논문들이 제대로 된 검증과 정당하고 철저한 비교 실험이 부족했다는 걸 의미합니다. 그런 의미에서 본 글에서는 Similarity 기반 Meta-Learning 방법의 개념만 살펴본 뒤, Few-Shot Object Detection에서는 이러한 아이디어들이 실제로 어떻게 적용되는지 살펴보도록 하겠습니다.

기존 Meta-Learning 방식의 한계점을 지적하는 연구는 다음 두 논문을 참고하시면 됩니다.

A Closer Look at Few-shot Classification, ICLR 2019

A Baseline for Few-Shot Image Classification, ICLR 2020

4. Learning Similarity for Few-Shot Learning

Query Set이 주어질 때 해당 이미지가 Support Set의 어떤 클래스에 해당하는지 어떻게 예측할 수 있을까요? 대표적으로 딥 러닝 모델을 통해 각각의 이미지로부터 Feature Vector를 추출하여, 가장 차이가 작은 Feature Vector의 클래스로 할당하는 방법이 있습니다.

Similarity 기반 Few-Shot Learning 방법은 이런 아이디어에 착안해 동일한 클래스의 Feature Vector 간에 Similarity가 1이 되도록 모델을 학습시킵니다. 즉, 같은 클래스의 Feature Vector간의 Similarity는 1이 되도록, 서로 다른 클래스라면 Similarity가 0이 되도록 Loss Function을 설정하여 모델을 학습시킬 수 있습니다.

그렇다면 Feature Vector간의 Similarity는 어떻게 계산할 수 있을까요?

Vector 간의 Similarity를 비교할 때는 Euclidean Distance와 Cosine Similarity를 주로 사용합니다. 각각의 정의는 아래와 같습니다.

Euclidean Distance. 출처: Wikipedia Cosine Similarity. 출처: Wikipedia

딥 러닝 모델을 이용해 추출한 Feature Vector는 1 x n 형태의 차원을 가집니다. 서로 다른 Feature Vector u 와 v 가 있을 때 Euclidean Distance와 Cosine Similarity는 각각 sum(u-v)^2 , dot_product(normalized_u, normalized_v) 와 같은 꼴로 계산할 수 있습니다. 이때 일반적으로 딥 러닝 모델의 Feature Value들은 0~1 값으로 Scale되는 경우가 많으므로 일종의 Approximation으로 dot_product(u, v) 로 계산하기도 합니다.

두 Metric의 차이는 아래 그림과 같이 표현될 수 있습니다.

Euclidean Distance와 Cosine Similarity 비교. 출처: stackoverflow

Cosine Similarity는 Vector의 Magnitude와 무관하게 Direction의 차이만을 비교하지만, Euclidean Distance는 Magnitude도 같이 고려하여 Feature Vector에 담겨 있는 값들의 Scale에 민감하다는 걸 알 수 있습니다. Normalization을 적용하더라도 Euclidean Distance는 0~1 사이에서 작은 값보다 큰 값에 더 민감하게 반응합니다.

이와 같은 Similarity-Metric을 이용하여 다음과 같이 모델을 구성할 수 있습니다.

Similarity 기반 모델의 예측 함수

위 수식에서 $\hat{x}$ 는 Query Set의 이미지이며, x_i 와 y_i는 각각 Support set에 속하는 이미지와 레이블을 의미합니다. 함수 f와 g는 각각의 이미지에서 Feature Vector를 추출하는 Feature Extractor 또는 Embedding 모듈이며, a는 Similarity 함수입니다.

즉, 위의 수식은 각각의 이미지로부터 Feature Vector를 추출하고, 이에 대한 Similarity를 전부 계산한 뒤 해당 Support Set의 레이블에 해당하는 점수만 남겨두었다고 이해할 수 있습니다.

위와 같이 Similarity 기반으로 모델을 구성하여, Meta-learning 방식을 적용하면 아래와 같은 절차를 따릅니다.

Base Class(Source Domain)에서 Support Set, Query Set을 포함한 하나의 Episode를 선정합니다. 각각의 이미지로부터 Feature Vector를 추출한 후, Support Set과 Query Set를 쌍으로 묶어 모든 경우의 수에 따라 Similarity를 계산합니다. 이렇게 계산한 Matrix를 Support Set의 one_hot encoding Ground-Truth (GT)와 매칭시켜 각 레이블에 따른 점수를 계산합니다. 최종적으로 계산한 점수와 Query Set의 GT를 비교하여 Loss를 계산합니다. 1~4의 방식을 반복하여 모델을 학습한 후, Novel Class(Target Domain)에서 Support Set에 대한 Query Set의 Similarity를 계산해 클래스를 예측합니다.

Similarity 기반 Few-Shot Learning 모델은 위와 같은 구조에서 Support Set과 Query Set의 이미지를 Embedding하기 위해 어떤 모델을 사용할 지, Similarity Function은 어떤 걸 이용할 지, 어떤 Loss를 이용해 어떻게 모델을 학습시킬 지에 따라 다양한 논문들이 발표되어 왔습니다.

이번 글은 Few-Shot Object Detection을 다루는 게 목적이기 때문에 각각의 Classification 모델들은 자세히 설명하지 않도록 하겠습니다.

어떤 모델들이 제안되어 왔고 어떤 차이가 있는지 알고 싶다면 아래의 논문을 참고하시면 좋을 것 같습니다.

A Closer Look at Few-shot Classification, ICLR 2019

5. Model-Agnostic Meta-Learning

추가적으로 Meta-Learning에 큰 영향을 미친 Model-Agnostic Meta-Learning (MAML)도 간략하게 다루어보도록 하겠습니다.

이 방법은 다양한 종류의 Meta-Learning 문제에 적용하기 위해 제안되었으며, Few-Shot Learning에서도 자주 사용하는 방법 중 하나입니다.

MAML의 도식도

MAML은 약간의 업데이트로 서로 다른 Task로 각각 최적화한 뒤(Adaptation), 이렇게 최적화된 각각의 모델로부터 Gradient를 구해 서로 다른 Task에 빠르게 최적화할 수 있는 공통의 초기 Weight를 찾는 방식(Meta-Learning)으로 학습을 진행합니다.

위 그림에서 Adaptation을 의미하는 회색 실선은 각 Task의 Loss(1, 2, 3)를 계산해 모델을 업데이트하는 것을 나타냅니다. 이렇게 서로 다른 Task로부터 업데이트함으로써 특정 Task에 Overfitting되는 것을 방지할 수 있습니다.

Meta-Learning을 의미하는 검은 선은 위에서 각각 Task에서 계산했던 Gradient를 모아 Gradient의 Gradient를 계산해 모델을 업데이트하는 것을 의미합니다. 이 과정에서 여러 Task에 빠르게 최적화할 수 있는 공통의 Weight로 점점 업데이트되고(검은 실선), 이렇게 찾은 Weight로부터 다시 특정 Task에 모델을 Adaptation함(회색 점선)으로써 우리가 원하는 Target Task에 빠르게 최적화할 수 있습니다. 이러한 Adaptation/Meta-Learning 과정을 최적의 Weight를 찾을 때까지 반복함으로써, 우리가 원하는 Target Task에 빠르게 수렴하는 모델을 얻을 수 있습니다.

Few-Shot Supervised Learning에서의 MAML 알고리즘

Few-Shot Classification의 관점에서 알고리즘 테이블을 이용해 다시 자세히 살펴보도록 하겠습니다.

Source Domain(Base Class) Training

3번에서 Base Class 집합 중 N-way, K-Shot 문제로 사용할 N개의 클래스를 지정합니다.

4~9번은 N개의 클래스에 대해서 각각 K개씩 Sample을 뽑아 만든 Support Set에 대해 학습하는 과정입니다.

5번에서 클래스 i에 대해서 K개의 Sample을 뽑습니다.6~7번에서 이렇게 뽑은 K개의 Sample을 이용해 모델의 Parameter를 업데이트합니다(Adaptation).

이후 8번에서 클래스 i에 대해 Query Set으로 이용할 Sample을 뽑습니다. 이때 뽑은 Sample은 5번에서 뽑은 Sample과 겹치지 않아야 합니다.

위와 같은 과정(4~9번)을 N개의 클래스에 대해서 반복한 후, 이 과정에서 뽑은 Query Set을 이용해 모델을 평가하고, 이를 통해 얻은 Loss를 이용해 다시 모델의 Parameter를 업데이트합니다(Meta-Learning).

Target Domain(Novel Class) Training

이제 Source Domain Training을 통해 얻은 Generalization 기능을 실제 문제인 Novel Class 데이터에 평가해야 하는 단계입니다.

Source Domain Training과 비슷한 과정으로 Novel Class 집합에서 실제로 평가할 N개의 클래스를 뽑고, 4~9번의 과정을 통해 N*K개의 Sample로 구성된 Support Set에 모델을 학습합니다(Adaptation).

이렇게 학습된 모델을 8번에서 뽑은 Query Set에 예측하여, 모델이 N*K개의 학습 데이터만으로도 충분한 성능을 얻을 수 있는지 평가할 수 있습니다.

이번 글에서는 Few-Shot Learning의 배경과 문제 해결 접근법, 그 중에서 Similarity 기반 Meta-Learning 방식과 MAML을 다루어보았습니다.

다음 글에서는 본격적으로 이러한 기술들이 Few-Shot Object Detection에 어떻게 적용될 수 있으며, Classification과 대비되는 Few-Shot Object Detection만의 문제점과 그 해결 방안도 같이 다루어보도록 하겠습니다.

Reference

[1] Wang, Y. and Yao, Q., 2019. Few-shot learning: A survey. arXiv preprint arXiv:1904.05046.

[2] Chen, W.Y., Liu, Y.C., Kira, Z., Wang, Y.C.F. and Huang, J.B., 2019. A closer look at few-shot classification. International Conference on Learning Representations.

[3] Dhillon, G.S., Chaudhari, P., Ravichandran, A. and Soatto, S., 2019. A baseline for few-shot image classification. International Conference on Learning Representations.

[4] Finn, C., Abbeel, P. and Levine, S., 2017, August. Model-agnostic meta-learning for fast adaptation of deep networks. In Proceedings of the 34th International Conference on Machine Learning-Volume 70 (pp. 1126–1135). JMLR. org.

[##이학진##]

[논문 리뷰] Prototypical Networks for Few-shot Learning

리뷰할 논문은 NIPS 2017에 소개된 Prototypical Networks for Few-shot Learning으로 Prototypical Networks를 이용하여 few-shot learning을 할 수 있는 모델에 대해 설명합니다.

Abstract

Train dataset에 있지 않은 새로운 class에 대해 학습할 때, 새로운 calss에 대한 dataset이 부족할 경우를 이를 대처하기 위한 방안으로 prototypical networks를 제안한다.

Prototypical networks는 각 class의 prototype representation까지의 거리를 계산해서 classification을 수행할 수 있는 metric space(거리 공간)을 학습한다. Few-shot learning에 대한 최근 연구들과 비교해보면 protonet(Prototypical networks를 줄여 말합니다)은 제한된 데이터 체계에서 유익하고 단순한 유도 편향을 반영하며 우수한 결과를 달성하였다.

Introduction

prototypical networks의 접근법과 방식에 대해 설명한다.

Few-shot learning은 train dataset에는 없는 새로운 class에 대해 적은 데이테만을 가지고 있을 경우, 새로운 class를 수용하기 위해 분류기가 조정되어야 하는 작업이다. 가장 기본적인 접근법은 새로운 데이터를 가지고 re-training하는 것 이지만, overfit될 확률이 매우 높다. 문제가 매우 어려운 반면, 인간은 one-shot classification을 할 수 있는 능력이 있다. 그래서 최근 두 개의 연구는 ‘Vinyals et al.의 matching networks’와 ‘Ravi and Larochelle의 meta-LSTM’이 있다. 저자는 이 둘의 문제점인 overfitting을 지적하고 이를 줄이기 방향으로 protypical networks를 고안하였다.

Prototypical networks in the few-shot and zero-shot scenarios. C* are computed as the mean of embedded support examples for each class.

Protonet은 각 class에 대해 single prototype representation이 있는 embedding을 base로 접근하였다. 이를 위해 neural network를 사용하여 임베딩 공간에 대한 입력의 비선형 매핑을 학습하고, 임베딩 공간에서 설정된 support set의 평균으로 class의 prototype을 만든다. Zero-shot learning에서도 같은 방식의 접근법을 가진다. 따라서 protonet은 각 class의 prototype 역할을 하기 위해 meta-data를 공유 공간(shared space)에 임베딩하는 것을 학습한다.

Classification을 수행할 때 임베딩 된 query point에서 가장 가까운 class prototype을 찾는다. 각 class의 평균으로 prototype을 만들고 Euclidean distance를 이용해서 query point와의 거리를 계산한다. 이 거리 중 가장 가까운 prototype을 결정하고 query point의 class를 해당 prototype의 class로 예측한다.

What is prototype?

이 부분은 논문에는 있지 않은 내용이며, prototype이 무엇인지, protonet이 어떻게 동작하는지 이해를 돕기 위해 추가로 작성되었습니다.

K-means clustering

위 그림은 wiki pidia에 k-mean clustering을 검색하면 나오는 그림입니다. 위에서 보았던 그림과 비슷하죠? 결론부터 말하면 동그란 색깔점이 논문에서 말하던 prototype 혹은 prototype representation입니다. 각각의 네모점은 색깔점과 거리를 계산하여 가장 가까운 색깔점의 class를 따르게 됩니다.(두 번째 그림) 그 다음 각 class에서 거리의 평균을 내어 prototype의 위치를 update합니다.(세 번째 그림) 이런 식을 계속 해서 prototype을 만들어갑니다. 그럼 prototype이 뭔지 대충 감이 오셨으니 논문의 그림으로 다시 넘어가봅시다.

Protonet process

gif파일로 만들어본 protonet의 작동 process입니다. 3-way 5-shot의 classification에서 C1의 초록색 부분만 계산한다고 가정하면 X1~X5는 support set의 image tensor data입니다. 이 image tensor data를 모델(90도 회전한 파란색 마름모)에 넣으면 Z1~Z5(초록색 점)이 만들어집니다. 그리고 Z1~Z5를 모두 평균한 값이 C1(검은색 점)이 되고 이것이 하나의 class의 prototype이 됩니다! 이해가 좀 가시나요?? 이를 반복하면 C1, C2, C3 처럼 각 class의 prototype의 모두 구하게 되는 것이죠. 이제 query set의 data 하나를 가져와서 어떤 class인지 예측한다고 해봅시다. query set의 image tensor data는 Xq가 되고 Xq를 모델에 넣으면 Zq가 나옵니다. 이 Zq를 가지고 C1, C2, C3와 각각 Euclidean distance로 거리를 계산해줍니다. 계산한 값에 -를 붙여주게 되면 비로소 similarity가 되는 것이죠.(거리가 멀수록 즉, 값이 클수록 similarity는 낮은거니까 -를 붙여주면 값이 클수록 similarity가 커지겠죠?)

위 gif만 이해하시면 protonet의 전반적인 process를 모두 아는 겁니다😉😉

Prototypical Networks

– Notation

Few-shot classification에서는 N개의 labeled된 support set example $S =\{(x_1, y_1), . . . ,(x_N , y_N)\}$가 존재하고 $x_i \in \mathbb{R}^D$는 D-dimensional feature vector of example이고, $y_i \in \{1,…,K\}$는 corresponding label이다. $S_k$는 class $k$에 대한 dataset을 말한다.

– Model

Protonet은 M-dimensional representation인 $c_k \in \mathbb{R}^M$ or $prototype$을 계산하고 각각의 class는 embedding function $f_\phi : \mathbb{R}^D \rightarrow \mathbb{R}^M$을 거친다. $\phi$는 learnable parameter(weight)이다. 각각의 prototype은 각 class에 속한 mean vector of the embedded support points이다.

Class k에 대한 prototype 계산

Distance function $d = \mathbb{R}^M \times \mathbb{R}^M \rightarrow (0, +\infty)$로 protonet은 embedding space에서의 prototype에 대한 distribution을 생성해 내는데 이 distribution은 distance로 softmax한 query point x의 class를 결정할 때 필요하다.

말이 어려운데, protonet은 embedding space에서 각 class를 대표하는 prototype의 분포를 생성하고(위 그림에서 C1,C2 등등) query dataset 중 하나인 query point x를 distance 기반의 softmax를 취한 값을 비교할 때 사용한다.

Probability about label y and data x in class k

Negative log-probability $J(\phi) = – logp_\phi(y=k|x)$를 최소화 하기 위해서 SGD를 이용하고 Training episode는 training set에서 랜덤하게 class를 선택하여 만든다. 그리고 남은 것 중 일부를 선택하여 query point를 만든다.

아래의 그림은 training episode에서 loss $J(\phi)$를 계산하기 위한 pseudocode인데 gif로 조금 더 알기 쉽게 만들었습니다.

Overview of algorithm

– Prototypical Networks as Mixture Density Estimation

Regular Bregman divergences로 알려져 있는 distance function에 대해서 protonet algorithm은 support set에 대해 performing mixture density estiation을 적용한다. Regular Bregman divergence $d$는 아래 식으로 정의된다.

Bregman divergences는 squared Euclidean distance $|| z-z’ ||^2$ 또한 포함한다. 그리고 protonet은 거리를 계산하기 위해 squared Euclidean distance를 사용한다.(즉, 거리 계산으로 유클리디안 거리의 제곱을 사용한다는 소리를 어렵게 해놓은 것 같다.)

– Design Choices

실험 결과 train의 $N_c$(number of class)는 test의 $N_c$보다 크게 잡는 것이 더 좋은 결과를 내었고, train과 test의 $N_s$(number of shot per class)는 같게 하는 것이 대부분 좋은 결과를 내었다.

Few-shot classification accuracies on Omniglot.

Experiment: Omniglot Few-shot Classification

Omniglot dataset은 handwritten character로 50개의 alphabet이 존재하고 각 alphabet의 character들은 20개의 example이 존재한다. Vinyals et al.의 procedure를 따랐고 28 x 28 사이즈로 resize 하였으며, 90의 배수만큼 rotation을 통해 augmenting을 진행하였다. Embedding architecture은 4개의 convolution block을 사용하였고, 각 block은 64 filter의 3×3 convolution, batch normalization, ReLU, 2×2 max-polling으로 구성되어 있다. Initial learning rate는 $10^(-3)$이고 2000episode마다 절반으로 learning rate를 줄였다. 1-shot, 5-shot scenarios는 train을 할 때 60개의 class와 5개의 query point를 사용한다.

Experiment: miniImageNet Few-shot Classification

miniImageNet dataset역시 Vinyals et al.의 split을 사용하였고 84×84 사이즈의 60,000개 color 이미지로 구성되어 있고 class당 600개씩 총 100개의 class가 존재한다. Embedding architecture와 learning rate는 Omniglot dataset을 훈련할 때와 같았고, train dataset은 1-shot일때는 30-way, 5-shot일때는 20-way로 구성하였다.

Few-shot classification accuracies on miniImageNet

Conclusion

신경망에 의해 학습된 representation space에서 각 class를 example을 사용하여 나타낼 수 있다는 생각에 기반하여 few-shot learning을 위한 prototype networks라는 간단한 방법을 제안했다. 이러한 networks가 episodeic training을 사용하여 few-shot에 잘 작동하도록 훈련한다. 이러한 접근 방식은 최근 meta learning의 접근법보다 훨씬 단순하고 효율적이며, 데이터에 따른 정교한 확장 없이도 SOTA를 달성하였다.

Reference

https://arxiv.org/abs/1703.05175

https://www.youtube.com/watch?v=rHGPfl0pvLY

Zero Shot, One Shot, Few Shot Learning

1. Zero shot learning

출처 : Minsuk Heo Youtube

예를 들어, 아이에게 소와 말을 가르쳐주고, 얼룩말은 가르쳐준 동물들의 특징을 합쳐둔 것이라고 설명을 해준다. 그러면 아이는 얼룩말을 본적은 없지만 얼룩말이라고 맞출 수가 있는 것이다.

Zero shot learning에서는 Image, Class Label, Side-Information 3가지를 가지고 학습을 해야한다.

2. One shot learning

출처 : Minsuk Heo Youtube

One shot learning은 원숭이의 사진을 가르쳐주면 다른 모양의 원숭이사진을 보여주어도 원숭이라고 맞출수가 있다.

3. Few shot learning

출처 : Minsuk Heo Youtube

Few Shot learning은 여러 종류의 개를 보여주면서 가르쳐주고, 새로운 종의 개를 보여주면 개라는 것을 맞출 수 있는 것이다.

이는 인간에 가장 가까운 학습 방법으로 보고 있다. GPT3에서 Few shot learning을 이용해서 엄청난 성능을 보여주었고, 이를 바탕으로 많은 연구가 추가적으로 이루어지고 있다.

728×90

적은 데이터로 딥러닝 잘 학습하기

딥러닝의 정확도를 향상시키기 위해서는 엄청난 양의 레이블링된 데이터가 필요합니다. 그런데 학습 이미지의 개수가 충분하지 않은 경우, 혹은 레이블링되어 있는 이미지가 없어서 그 엄청난 양의 이미지에 대해 직접 레이블링하기 너무 힘들고 귀찮은 경우(?) 어떻게 접근하면 좋을까요? 이에 대해 검색해보다가 아래 출처에 있는 좋은 글을 발견해서 번역/추가 정리하여 작성해보았습니다.

요약

1. 이전에 학습된 지식 활용하기

1) Transfer Learning

2) Domain Adaptation

2. 유사도 기반 방식

1) Few-shot learning

1. 이전에 학습된 지식 활용하기

사람이 이미 알고 있는 지식과 관련지어 이와 유사한 새로운 지식을 습득하는 것처럼, 머신러닝/딥러닝 알고리즘도 하나의 task에서 얻은 지식을 유사한 새로운 문제를 해결하는데에 사용할 수 있다.

비록 전통적인 머신러닝/딥러닝 알고리즘은 특정 작업을 처리하기 위해 독립적으로 작동하도록 설계되었지만, “Transfer Learning”, “Domain Adaptation” 방법은 이러한 독립적인 학습 패러다임을 극복하고 사람처럼 학습할 수 있도록 개발되었다.

1) Transfer learning

Transfer learning은 이전 task에서 학습된 features와 weights 등을 이와 비슷한 새로운 task에 적용하는 방법이다. 컴퓨터 비젼에서 low-level에서의 features는 edges, shapes, corners 그리고 intensity 등을 나타내기 때문에 다양한 task에 공유하여 사용이 가능하다.

pytorch를 사용해서 transfer learning하는 방법은 여기를 참고해주시길 바랍니다.

2) Domain adaptation

Domain Adaptation은 데이터의 도메인을 이동함으로써 이전에 학습한 네트워크를 사용하는 방법이다. 새로운 도메인을 target 도메인이라 하자. target 도메인에 속하는 데이터의 분포는 이전에 학습한 source 도메인의 분포와는 다르다. 이에 따라 P(Xs) ≠ P(Xt)가 되기 때문에 이 차이만큼 이동시킬 수 있게 하는 모델이 필요했다.

Unsupervised Domain Adaptation을 하기 위해, 우리는 다음 세 가지 조건을 만족해야 한다.

1. Domain-agnostic Feature extraction : Source와 Target 도메인으로부터 추출한 features의 distribution을 Adversarial Discriminator Network가 구분할 수 없어야 한다.

2. Domain-specific reconstruction : Embedding한 것이 Source와 Target 도메인으로 다시 decode 가능해야 한다.

3. Cycle Consistency : Source와 Target 중 어떤 Domain에서 시작했는지 알 수 있어야 한다.

Unsupervised Domain Adaptation을 학습하기 위한 가장 간단한 방법은 Discriminator Network로 구분할 수 없는 features를 추출하는 것이다. 그리고 동시에, 이러한 features가 Source Domain을 표현하여 object를 분류할 수 있어야한다. 비지도 학습 방식을 사용할 것이기 때문에, Target Domain의 labeling을 할 필요는 없고, Source Domain 내의 다양한 이미지들에 대한 labeling만 되어 있으면 된다.

그 대신에 Domain Adaptation이 Source Domain distribution과 Target Domain distribution을 각각 shared domain Z로 매팽시켜준다. 이 Embedding은 반드시 Domain-agnostic (도메인에 상관없이 가능해야 한다)해야 하고, 우리는 Source와 Target 이미지 간의 Embedded Distributions를 최대한 비슷하게 만들 수 있다.

더 읽어볼 거리

Murez, Zak & Kolouri, Soheil & Kriegman, David & Ramamoorthi, Ravi & Kim, Kyungnam. (2017). Image to Image Translation for Domain Adaptation. [PDF]

Pinheiro, Pedro H. O.( 2018). Unsupervised Domain Adaptation with Similarity Learning. IEEE/CVF Conference on Computer Vision and Pattern Recognition (2018): 8004–8013. [PDF]

2. 유사도 기반 방식

입력 이미지를 출력 클래스로 직접 분류하는 대신, 유사성 함수를 학습하여 이미지 간의 유사도를 측정할 수 있다.

1) 퓨샷 러닝 (Few-shot learning)

딥러닝 모델을 제대로 학습하기 위해서는 양질의 데이터와, 컴퓨팅 자원이 수반된다. 하지만 인간과 비교하면 딥러닝 모델의 학습 방식은 효율적이지 않다. 인간이 단 몇 장의 사진만으로 생애 처음으로 본 사물을 구분할 수 있는 반면, 딥러닝은 인간처럼 소량의 데이터로 학습될 수 없기 때문이다. 하나의(이 경우 one-shot learning) 혹은 소량의 데이터만으로 학습하기 위해 진행된 연구가 바로 퓨샷 러닝이다.

퓨샷 러닝은 클래스 별 훈련데이터의 수가 적은 경우 사용된다. 이를 위한 데이터셋은 훈련에 사용하는 서포트 데이터와 테스트에 사용하는 쿼리 데이터로 구성된다. N : 클래스의 개수, K : 클래스 별 서포트 데이터의 수일 때, 이 태스크를 ‘N-way K-shot 문제’라고 부른다.

를 의미한다.

일반적으로 퓨샷 러닝 벤치마크(benchmark) 실험에서는 N은 10개 이하, K는 1개 또는 5개로 설정하고, 쿼리 데이터는 클래스 별 15개가 주로 사용된다. 아래와 같이 연구에 많이 쓰이는 5-way 1-shot 문제에서 모델 정확도는 50%대, 5-way 5-shot에서는 70% 수준이다.

▶ 퓨샷 러닝 태스크에 메타 러닝 (meta-learning) 도입

이전의 경험으로부터 새로운 태스크를 학습하는 방법을 학습하는 것이 메타러닝이다. 퓨샷 러닝 모델이 완전히 새롭게 주어진 데이터에서도 잘 작동하도록 만들기 위해서는 메타 러닝이 필요하다. 퓨샷 러닝 태스크에서는 에피소딕 훈련 (episodic training) 방식으로 메타 러닝을 시도한다. 에피소딕 훈련은 퓨샷 태스크와 유사한 형태의 훈련 태스크를 통해 모델 스스로 학습 규칙을 도출할 수 있게 함으로써 일반화 성능을 높일 수 있게 한다.

일반 딥러닝에서는 훈련, 검증, 테스트 데이터셋이 같은 클래스를 공유하고 데이터만 겹치지 않게 나뉘어진다. 예를 들어, 데이터셋 모두 {고양이, 자동차, 사과, 귤, 원숭이, 자전거}라는 클래스에 해당하는 데이터로 구성돼 있다.

이와 달리 퓨샷 러닝을 위한 에피소딕 훈련에서는 훈련, 검증, 테스트 태스크를 둔다. 그리고 {고양이, 자동차}, {사과, 귤}, … {원숭이, 자전거}처럼 각 태스크를 구성하는 클래스들 완전히 다르게 한다.

에피소딕 훈련에 대해 좀 더 자세히 설명하자면 다음과 같다. 대용량 학습 데이터로부터 N-way K-shot 훈련 태스크를 여러 개 샘플링한다. 모델은 다양한 클래스로 구성된 훈련 태스크를 최적의 성능을 낼 수 있도록 훈련된다. 훈련을 마친 모델은 완전히 새로운 데이터로 구성된 테스트 태스크로 그 성능을 평가받는다.

▶ 퓨샷 러닝 접근 방식

(1) 거리 학습 기반 방식 (metric learning)

클래스 별 학습 데이터가 적은 경우 과적합이 일어나기 쉬워 딥러닝처럼 분류기의 가중치를 훈련하는 방식을 사용하지 않는다. 그 대신, 서포트 데이터와 쿼리 데이터 간의 거리(유사도)를 측정하는 방식을 사용한다. 쿼리 이미지와 더불어 특정 클래스에 대한 참조 이미지를 인풋으로 받아서, 두 이미지 사이의 거리를 측정하고, 같은 클래스의 데이터는 더 가깝고 다른 클래스의 데이터는 멀어지도록 “거리를 학습”한다.

가장 간단하게는 샴 네트워크 (Siamese Network)를 사용해서 거리를 측정하는 방법이 있다. 이전에는 인간이 직접 설계한 특징으로 거리학습을 시도했다면, 여기서는 처음으로 CNN을 활용했다는 점에서 의의가 있다.

샴 네트워크는 같은 weights를 가지고 두개의 다른 이미지를 입력받는 두개의 동일한 Fully Connected CNN으로 만들어져 있다. 두 네트워크는 두 개의 테스트 이미지를 각각 encoding한다. 그 다음, 두 개의 encodings을 통해 이미지들 간의 거리(= Loss = Similarity Score)가 측정된다.

자세히 설명하자면, 네트워크는 Triplet Loss와 Contrastive Lost Function을 사용한 outputs간의 Loss를 통해 학습된다.

먼저 Triplet loss function은 gradients를 계산하는 데에 사용되고 아래와 같이 표현된다:

a : anchor image (reference image)

p : positive image

n : negative image

우리는 a와 p 간의 dissimilarity가 a와 n간의 dissimilarity 보다 작아야 된다는 것을 안다. 추가적으로 dissimilarites가 얼마나 작야야되는지를 나타내는 hyperparameter로 margin 변수가 더해진다. 예를 들어 만약 margin = 0.2, d(a,p) = 0.5 이면, d(a,n) 는 적어도 0.7여야 한다.

Contrastive Loss Function 은 다음과 같다.

Dw : 두 Siamese networks의 outputs 간의 Euclidean distance.

이 학습절차를 통해, 네트워크가 일반화된 지식을 학습할 수 있도록 하였다.

더 읽어볼 거리

Li Fei-Fei, Rob Fergus, and Pietro Perona (2006). One-shot learning of object categories. IEEE Transactions on Pattern Analysis and Machine Intelligence, 28(4):594–611. [PDF]

Koch, Gregory, Richard Zemel, and Ruslan Salakhutdinov.Siamese neural networks for one-shot image recognition.2015. [PDF]

Santoro, Adam, Bartunov, Sergey, Botvinick, Matthew, Wierstra, Daan and Lillicrap, Timothy P. (2016). One-shot Learning with Memory-Augmented Neural Networks.” CoRR abs/1605.06065. [PDF]

(2) 그래프 신경망 방식

이는 데이터 간의 복잡한 관계 정보를 학습에 활용하는 방식이다. 일반적인 인공 신경망이 입력값으로 벡터나 행렬 형태를 활용한다면, GNN은 밀집 그래프 구조를 활용한다. 밀집 그래프는 모든 노드가 서로 완전히 연결된 형태로, 노드는 데이터, 노드와 노드를 잇는 간선은 데이터 간 관계 정보를 나타낸다. GNN은 바로 이 그래프의 구조와 각 노드에 해당하는 데이터의 특징 벡터를 입력으로 받는다.

출처

https://medium.com/sciforce/robust-image-classification-with-a-small-data-set-be4de9897495

https://www.kakaobrain.com/blog/106

키워드에 대한 정보 few shot learning 설명

다음은 Bing에서 few shot learning 설명 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 Few-Shot Learning (1/3): 基本概念

  • meta learning
  • 元学习
  • few-shot learning
  • 小样本学习
  • Siamese Network
  • 孪生网络

Few-Shot #Learning #(1/3): #基本概念


YouTube에서 few shot learning 설명 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 Few-Shot Learning (1/3): 基本概念 | few shot learning 설명, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  휴면 보험금 이란 | 휴면보험금의 실체, 과연 이자는 줄까? 239 개의 자세한 답변

Leave a Comment