빅웨이브에이아이 기술블로그

메타 러닝(Few Shot Task) - 적은 데이터로도 성능은 강력하게! 본문

기술 블로그

메타 러닝(Few Shot Task) - 적은 데이터로도 성능은 강력하게!

빅웨이브 이현상 2021. 10. 6. 12:07

안녕하세요! 빅웨이브에이아이의 박정환입니다

 

지난 포스팅 글은 딥러닝 대해서 쉽고 간단하게 알아보았었는데요 !

 

<혹시나 못보신 분들을 위한 링크 딥러닝,그거 어떻게 하는건데? >

 

이번 포스팅의 주제는 딥러닝 세계에서 떠오르는 학습 방법인 '메타 러닝(Meta learning)'에 대해서 알아보도록 하겠습니다.

 

'메타'라는 단어는 한 차원 위의 개념적 용어로 대상의 전반적인 특성을 반영합니다.

 

그래서 메타 러닝은 데이터의 패턴을 정해진 프로세스로 학습하는 것이 아니라,

 

데이터의 특성에 맞춰서 모델 네트워크의 구조를 변화시키면서 학습합니다.

 

배우는 방법을 배우는 것이죠(Learning to learn).

 

 

메타 러닝은 범위가 굉장히 광범위 합니다.

 

최근에는 하이퍼파라미터 최적화, 자동 신경망 네트워크 설계 등으로 가장 많이 활용되고 있습니다.

 

자사의 데이터 분석 솔루션인 'BADA'에 탑재된 기능 중 하나인 하이퍼 파라미터 튜닝 역시 메타 러닝이라고 할 수 있습니다.

 

기존의 딥러닝 모델은 일반적으로 데이터가 많은 경우 효과적입니다.

 

그러나 사람은 배경 지식 및 유연한 사고력으로 샌들과 부츠를 몇장의 사진만으로도 구분할 수 있습니다.

 

메타 러닝은 인간의 유연한 사고력을 모델링을 통해 구현하고자 합니다.

 

간단한 예를 들어서 설명해보겠습니다.

 

 

지도 학습이라는 로봇과 메타 러닝이라는 로봇을 데리고 수족관에 갔습니다.

 

수달을 처음 본 로봇들은 "이 동물은 뭐야?"라고 묻습니다.

 

지도 학습 로봇에게는 각기 다른 수달의 사진을 1000장을 보여줍니다.

 

그 결과 아래 카드리스트에서 수달을 찾을 수 있게 되었습니다.

 

 

반면에, 메타 러닝 로봇에게는 카드를 먼저 보여줬습니다.

 

메타 러닝 로봇은 따로 사진을 학습하지 않아도 카드리스트에서 수달을 찾아낼 수 있었습니다!

 

위와 같이 적은 데이터를 효율적으로 학습하는 문제(Few shot task)를 위해 탄생하게 된 것이 퓨샷 러닝(Few shot Learning)이라고 합니다.

 

메타 러닝은 퓨샷 러닝을 해결하기 위한 기반 알고리즘입니다.

 

퓨샷 러닝에서의 데이터셋은 크게 서포트 셋(Support Set), 쿼리 셋(Query set)으로 나눠집니다.

 

서포트 셋은 데이터 셋을 학습에 사용하는 데이터를 말합니다.

 

쿼리 셋은 데이터 셋을 테스트에 사용하는 데이터를 말합니다.

 

이러한 퓨샷 러닝 태스크(Few Shot Learning Task)를 "N-way K-shot"이라고 합니다.

 

n은 카테고리의 개수를 뜻하며 k는 카테고리당 이미지의 수를 뜻합니다.

 

다람쥐, 토끼, 햄스터, 수달의 카테고리가 4개 있고 각각 2장씩 있으면 4-way 2-shot이겠죠?

 

일반적으로 성능은 n에 반비례, k에 비례합니다.

 

과목의 수가 많을수록 시험 성적이 낮고 과목당 문제집을 많이 풀수록 높아지는 것과 같다고 할 수 있습니다.

 

4-way 2-shot

 

특징

 

일반적으로 딥러닝 모델을 제대로 훈련시키기 위해 대용량의 데이터가 필요합니다.

 

거대한 데이터셋을 구축하기 위해서는 그만큼의 비용과 시간이 소모가 되니까 현실적으로 쉽지 않겠죠?

 

그래서 전이 학습이 등장하게 됩니다.

 

전이 학습(Transfer Learning)은 큰 데이터로 학습한 가중치의 일부를 새로운 데이터에 맞춰서 학습하는 것입니다.

 

하지만 전이 학습도 새로운 문제에 적용하기 위해서 많은 수의 데이터와 레이블링이 필요합니다.

 

또한 어떤 문제의 사전 학습 모델이 해당 데이터에 적합한 지 판단하기 어렵습니다.

 

퓨샷 러닝은 소수의 예제(Few)만 있어도 성능이 우수한 모델링이 가능합니다.

 

최근 연구에서는 일반적인 딥러닝 모델에서도 퓨샷 테스트를 수행하기도 합니다.

 

Key Idea

 

메타 러닝 및 퓨샷 러닝의 대표적 접근 방법은 거리 학습 기반(Metric Based Learning)모델 기반 학습 방식(Model-Based Approach)과 최적화 학습 방식(Optimizer Learning)이 있습니다.

 

거리 학습 기반은 '효율적 거리 측정' 학습이 핵심입니다.

 

모델 기반 학습은 '메모리를 이용한 순환 신경망'이 핵심입니다.

 

최적화 학습 방식은 '모델 파라미터 최적화'이 핵심입니다.

 

조금 더 자세하게 알아보도록 하겠습니다.

 

 

거리 학습 기반 (Metric Based Learning)

 

딥러닝을 공부하고 계신 분들이라면 클래스 별 학습 데이터가 적은 경우 과적합이 일어나기 쉽다는 것을 알고 계실텐데요.

 

메타 러닝의 방법론 중 하나인 거리 학습 기반은 서포트 셋과 쿼리 셋 간의 거리(유사도)를 측정하는 방식으로 대신합니다.

 

거리 학습 기반을 활용한 대표적 알고리즘에는 샴 네트워크(Siamese Neural Network)가 있습니다.

 

모델은 주어진 서포트 데이터를 특성 공간(Feature Space)에 나타내서 특징을 뽑아냅니다. 

 

같은 클래스면 거리를 가깝게 다른 클래스면 멀게 하는 방식으로 데이터를 분류합니다.

 

쿼리 데이터를 유클리디안 거리가 가까운 서포트 데이터의 클래스로 예측하는 방식입니다.

 

 

쿼리 데이터 클래스 예측 과정 도식화

 

모델 기반 학습 방식 (Model based learning)

 

모델 기반 학습 방식은 적은 수의 학습 단계로도 모델의 파라미터를 효율적으로 학습할 수 있는 방식입니다.

 

모델에 별도의 메모리를 두어 학습 속도를 조절합니다.

 

모델 기반 학습 방식의 대표적인 알고리즘인 MANN(Memory-Augmented Neural Networks)은 외부 메모리를 보유하고 있습니다.

 

과거 데이터를 외부 메모리에 저장함으로써 효율적으로 문제를 해결하는 방법을 습득합니다.

 

새로운 정보를 빠르게 인코딩하고 몇 개의 샘플만 가지고도 새로운 태스크에 적용할 수 있도록 설계되었기 때문에 메타 러닝의 대표적인 접근론 중 하나 입니다.

 

MANN 아키텍쳐

 

최적화 학습 방식(Optimizer learning)

 

퓨삿 태스크를 파라미터 최적화 문제로 생각 합니다.

 

일반적으로 딥러닝 모델은 기울기의 역전파를 통해 학습을 진행합니다.

 

하지만 기울기 기반 최적화 기법은 퓨샷 태스크가 아닌 큰 스케일의 데이터를 위해 설계가 되었죠?

 

최적화 기반 메타 러닝은 적은 수의 샘플에 대한 최적화 기법에 대해 다룹니다.

 

대표적으로 MAML(Model-Agnostic Meta-Learning) 알고리즘이 있습니다.

 

아래의 그림을 보면 실선은 각 태스크에서 계산했던 그래디언트를 합산하여 모델을 업데이트하는 것을 의미합니다.

 

즉 1, 2, 3의 데이터에서 학습된 그래디언트 정보로 전반적인 파라미터를 업데이트 합니다.

 

공통 파라미터로부터 다시 모델이 각 데이터를 학습하면서 세부 파라미터를 업데이트(점선)합니다.

 

이런 과정을 최적의 파라미터를 찾을 때까지 반복하면 모델의 파라미터를 최적화할 수 있습니다.

 

MAML

 

마무리

 

이번 포스팅은 메타 러닝이 및 퓨샷 러닝의 개념과 어떤 접근방법이 있는지 소개드렸습니다.

 

퓨샷 러닝은 기존 딥러닝(많은 데이터 필요, 라벨링 작업 등)에 비교적 몇 개의 예제만 주어져도 충분합니다.

 

많은 수의 학습 데이터를 확보하기 어려운 경우에도 우수한 성능을 달성할 수 있습니다.

 

메타 러닝은 최근 멀티태스크 러닝(Multi-task Learing)과 함께 적은 데이터 문제를 해결할 수 있는 아주 효과적인 방법론 중 하나입니다.

 

궁금하신 부분이나 지적 및 피드백이 있으시면 댓글 남겨주세요.

 

감사합니다 '_' !!

 

 

참고 자료

Sun, Qianru, et al. "Meta-transfer learning for few-shot learning." 
Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition
. 2019.

Hospedales, Timothy, et al. "Meta-learning in neural networks: A survey." arXiv preprint arXiv:2004.05439 (2020).APA

https://medium.com/the-ai-team/memory-augmented-neural-network-for-meta-learning-case-study-56af9cc81ae2

https://ai-information.blogspot.com/2019/08/meta-003-meta-learning-with-memory.html

https://zeujung.wixsite.com/mysite/memory-augmented-network-1?lang=ko

https://neptune.ai/blog/understanding-few-shot-learning-in-computer-vision

https://openai.com/blog/learning-to-model-other-minds/

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

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

https://lilianweng.github.io/lil-log/2018/11/30/meta-learning.html

https://blog.si-analytics.ai/3

https://kmhana.tistory.com/17

https://seolwonkoo.tistory.com/15

https://hwanii-with.tistory.com/58

https://simonezz.tistory.com/100

https://tyami.github.io/deep%20learning/Siamese-neural-networks/

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

https://rhcsky.tistory.com/5

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

https://kau-deeperent.tistory.com/47

https://noteforstudy.tistory.com/entry/%EC%9E%91%EC%9D%80-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A1%9C-%EC%9E%98-%ED%95%99%EC%8A%B5%ED%95%98%EA%B8%B0

http://aidev.co.kr/deeplearning/9286

https://zzaebok.github.io/machine_learning/FSL/

 

 

 

Comments