본문 바로가기
머신러닝딥러닝/딥러닝

few shot learning 개념, 원리

by orangecode 2023. 12. 7.
728x90

 

few shot learning

 

 

few shot learning 은 10개 미만의 매우 적은 데이터를 이용하여 효율적인 분류, 회귀 등

작업이 가능하도록 트레이닝하는 딥러닝 학습을 말합니다.

 

기존의 머신러닝/딥러닝 학습에서는 모델이 빅데이터의 양을 학습하여 정교하고 효율적인 모델을 만들 수 있었습니다.

 

하지만 few show learning은 적은 데이터로 학습된 모델을 이용하여 일반화하고 정확한 예측이 수행되도록 해야합니다.

퓨삿학습의 목표는 "배우는 법을 배우는 것"입니다.

 

퓨샷학습 모델은 훈련 데이터 이미지를 인식해서 테스트 데이터셋으로 일반화하는 게 아닌, 목표를 배우는 것입니다.

 

few shot learning에는 N shot learning, transfer learning, meta learning, data augmentation, siamese Networks 등이 존재합니다.

 

 

 

few-shot learning 관련용어

 

Support 세트

지원 세트는 사전 훈련된 모델이 이러한 새로운 클래스를 일반화하는 데 사용되는

새로운 데이터 범주당 몇 개의 레이블이 지정된 샘플로 구성됩니다.

 

Query 세트
쿼리 세트는 모델이 지원 세트에서 얻은 이전 지식과 정보를 사용하여

일반화해야 하는 새로운 데이터 범주와 기존 데이터 범주의 샘플로 구성됩니다.

 

N-way K-shot 학습 체계

FSL 문헌에서 사용되는 일반적인 문구로, 모델이 처리하게 될 소수의 문제 설명을 본질적으로 설명합니다.

 

- N -way : 사전 훈련된 모델이 일반화해야 하는  N 개의 새로운 범주가 있음을 나타냅니다 .

“ N ” 값이 높을수록 작업이 더 어렵다는 의미입니다.

 

- K -샷 : N개의 신규 클래스 각각에 대한 지원 세트에서 사용할 수 있는 레이블이 지정된 샘플 수를 정의합니다.

추론을 도출하는 데 사용할 수 있는 지원 정보가 적기 때문에 " K " 값이 낮을수록 퓨샷 작업이 더 어려워집니다

(즉, 정확도가 낮아집니다)

 

K 값의 범위는 일반적으로 1~5입니다.

K=1 과제는 특히 해결하기 어렵기 때문에 '원샷 학습'이라는 이름이 붙었습니다.

 

 

 

 

 

Few-shot Learning을 위한 4가지 접근법

 

1. 데이터 수준 개선

few-shot Learning은 훈련 데이터 부족을 해결하기 위한 방법으로 데이터 증강을 선택할 수 있습니다.

 

지원 세트에 클래스당 2개의 라벨이 지정된 샘플이 있을 때, 

지원세트가 충분하지 않을 수 있으므로 샘플을 보강하는 방법입니다.

 

 

데이터 증강이 완전히 새로운 정보를 제공하지 않으나, Few-Shot Learning에는 도움이 될 수 있고,

지원 세트에 라벨이 없는 데이터를 추가해 Few-Shot Learning을 반 지도적으로 만들 수 있다.

 

Few-Shot Learning 모델은 구조화되지 않은 데이터도 사용해 더 많은 정보 수집이 가능하며, Few-Shot Learning 성능을 향상시키는 것으로 입증되었습니다.

 

다른 방법도 GAN모델 등 생성 모델을 이용해 기존 데이터에서 완전 새로운 데이터를 합성하는 방법을 사용한다.

 

 

2. 매개변수 

few-shot Learning은 라벨링 데이터가 최소한으로 제한되어있습니다.

 

라벨링 데이터는 제한되어 있어, 모델을 학습할 때 데이터의 모든 세부사항들을 학습하게 합니다.

 

모델은 고양이의 귀, 개의 털, 코끼리의 코 등 특정 세부사항을 학습하려고 할 수 있는데, 

모델에게 새로운 이미지를 보여줬을 때 잘 예측하지 못하는 일반화의 오류와 과적합 현상이 나타날 수 있습니다.

 

그러므로 모든 매개변수 공간을 의도적으로 제한하여, 모델 복잡도를 낮추고 일반화 성능을 향상시킬 수 있습니다.

 

 

3. 측정항목

측정항목(Metric-Level) 수준의 few-shot Learning은 개, 고양이 이미지 등 서로 다른 데이터 포인트 간의 관계와 거리를 이해하는 게 목표입니다. 이미지 간의 유사성/차이점을 측정하는 기능 학습이 목표입니다.

 

예를 들어, 고양이, 개, 코끼리 이미지가 있고 비둘기의 이미지를 카테고리 중 하나로 분류한다고 가정해봅시다.

 

비둘기라는 새로운 이미지 분류를 위해 이미지간 유사성, 차이점을 측정할 수 있는 거리를 훈련시킵니다.

 

신경망을 이용해 각 image feature를 추출하고, 유클리드 거리와 같은 함수를 이용해 두 점 사이의 직선 거리를 계산합니다.

 

학습 중에 거리함수는 trainset 이미지를 기반으로 매개변수를 조정한다.

유사한 이미지(동일한 동물)은 거리가 가까워야하고, 다른 이미지(다른 동물)은 거리가 커야함을 학습한다.

 

새로운 이미지로 비둘기 이미지를 분류를 진행하게 되면, 기존 훈련이미지와 비둘기 이미지의 거리를 계산한다.

알고리즘에서 유사성을 기반으로 예측을 수행하고, 개/고양이와 비슷하지 않으면 비둘기로 분류할 수 있다.

 

 

측정항목(Metric-Level)수준의 few-shot Learning은 모델이 특징 공간에서 거리 측정 방법을 통해 학습하여

새로운 클래스의 예가 거의 없어도 일반화가 용이하다는 장점을 가지고 있다.

 

 

4.기울기 기반 메타 학습

 

그라디언트 기반 Meta Learning은 광범위한 범위를 학습한 Teacher Model로 부터 학습하여 모델이 새로운 작업에 빠르게 일반화될 수 있게 학습하는 방법입니다.

 

Support 데이터셋(라벨링 데이터)을 이용해 학습한 교사모델을 학습합니다.

 

학습된 교사모델은 지식 증류를 이용해 학생모델로 전달되는 정보를 새로운 작업에 신속하게 적용하는데 도움을 주게 됩니다. 지식증류를 통해 교사 모델에 인코딩된 일반화 능력과 지식을 학생 모델에 전달하고, 학생 모델이 새로운 테스트를 수행할 때 일반화 하는데 용이하도록 하는 것입니다.

 

학생모델은 교사 모델에 비해 아키텍쳐가 작고 매개변수가 적어, 더 가볍고 효율적으로 설계된 단순 신경망이다. 

 

 

 

 Siamese 네트워크

Parewise Similiarity & Triplet Loss

 

 

Siamese Network(샴 네트워크)는 few-shot Learnng에 일반적으로 사용되는 신경망 아키텍쳐이다.

 

Siamese Network는 입력 샘플 쌍 간이 유사성 측정항목을 학습하는 것으로 이미지 인식, 얼굴 인증, 원샷 학습 등에 자주 사용된다.

 

 

 

Parewise Similiarity를 이용한 Siamese Network를 알아봅시다.

 

데이터셋에서 무작위로 선택한 샘플 2개를 선택하고, 2개의 이미지가 동일 클래스라면 "1"이라는 라벨을 붙여준다.

하지만 2개의 이미지가 다를 경우 "0"이라는 라벨을 붙여서 학습시키는 구조이다.

 

Parewise Similiarity 는 라벨링된 데이터를 통해 2개의 이미지를 가져와 유사성 일치 기준을 학습시키는 네트워크입니다.

 

컨볼루젼 신경망을 통과해 데이터 Feature값을 얻은 뒤, 추출된 2개의 Feature값을 연결한 Layer가 Sigmoid 함수 통과를 통해 0~1까지의 유사성 점수를 획득합니다.

 

획득된 유사성 점수는 loss 값과 역전파 계산을 위한 실측 유사성 점수로 사용됩니다.

 

 

 

Triplet Loss은 데이터 셋에서 1개의 anchor 샘플과 2개의 정답/오답 샘플을 1개씩 가져옵니다.

 

 

3개의 이미지 샘플을 가져와 Parewise Similiarity와 신경망을 통과하여 이미지 feature 값을 얻습니다.

 

앵커와 정답, 앵커와 오답 사이의 거리를 L2 정규화 거리로 계산해줍니다.

해당 매개변수를 사용하면 최소화할 수 있는 손실 함수를 정의할 수 있습니다.

 

 

 

 

 

 

 

Reference

 

 

https://blog.paperspace.com/few-shot-learning/

 

Everything you need to know about Few-Shot Learning

In this tutorial, we examine the Few-Shot Learning paradigm for deep and machine learning tasks. Readers can expect to learn what it is, different techniques, and details about use cases for Few-Shot Learning

blog.paperspace.com

 

https://github.com/gradient-ai/few-shot-learning/

https://www.thedatahunt.com/trend-insight/guide-for-few-shot-learning

 

Few shot learning 이란? - 개념, 학습 방법, 프로세스

Few shot learning은 새로운 학습에 필요한 데이터가 기존보다 적습니다. 따라서 데이터 수집 비용/시간이 많이 드는 특정 분야에 유용합니다. zero shot learning과 어떻게 다른지 개념, 원리, 학습방법,

www.thedatahunt.com

https://velog.io/@nomaday/n-shot-learning

 

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

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

velog.io

 

반응형

댓글