본문 바로가기
python/딥러닝

[딥러닝] - few shot learning, 적은 데이터로 학습하기

by _avocado_ 2021. 4. 12.

few shot learning

이미지 분류 문제에서 딥러닝 모델을 학습시키기 위해서는 많은 데이터가 필요하다. (imagenet 12만장)

 

하지만 사람의 경우 몇 장의 이미지만으로 새로운 것을 배우고 구분할 수 있다.

 

사람이 배우는 것 처럼 딥러닝 모델을 학습 시키는 방법을 메타러닝(Meta-learning)이라고 하며 

 

image 문제에 사용되는 메타 러닝few shot learning이라고 한다.


접근 방법

few shot learning의 학습 방식은 두 이미지 비교다.

 

기존 분류 문제는 이미지가 어떤 카테고리에 포함 되는가를 찾는 방법이고

 

few shot learning은 두 이미지를 비교하여 같은지 다른지를 판단한다.

서포트 셋은 우리가 가지고 있는 labeling된 데이터 이고 쿼리 셋은 정답을 추론해야하는 데이터이다.

 

모델은 쿼리 데이터가 들어오면 가지고 있는 서포트 데이터와 비교하여 같은 이미지 인지 아닌지를 판단한다.

 

같은 이미지라고 판단되면 해당 서포트 셋의 label로 분류하게 된다.


이미지 비교 방법

기존에 학습된 이미지 분류모델을 이용하여 이미지를 벡터화 시킨 뒤 두 이미지 벡터를 비교한다. (전이학습처럼)

CNN 구조

위 그림은 CNN의 간단한 모식도이다. 초록색 array에서 빨간색 out put을 내는 과정을 분류하는 과정이라고 한다면

 

이미지초록색 array로 만드는 과정은 이미지를 분석하는 과정(벡터화)이라고 할 수 있다. (imagenet 모델별로 결과가 다르다.)

 

두 이미지를 비교하기 위해 array로 만든 후 두 array를 비교하게 된다.

두 이미지를 CNN모델을 이용해 벡터화 시킨 뒤 비교하는 과정

벡터 이미지를 비교하는 방법은 여러가지가 있다. 단순하게 거리기반(유클리드, 멘하튼)으로 비교하는 방법 부터

 

GNN(네트워크 분석 딥러닝 모델), 벡터를 비교하는 새로운 모델을 학습시키는 방법 등이 있다.

 

이 부분에 대한 내용은 정확하게 이해하지 못해 좋은 블로그 포스트를 첨부한다. 정말 자세하게 잘 나와있다.

 

[DL] Meta-Learning: Learning to Learn Fast

(해당 글은 OpenAI Engineer인 Lilian Weng의 포스트 내용을 원저자 동의하에 번역한 내용입니다.) Meta-Learning: Learning to Learn Fast Meta-learning, also known as “learning to learn”, inte..

talkingaboutme.tistory.com


 

댓글