지난 글에 이어 오늘 Few-shot learning에 대해 다루려고 합니다.
Few-shot learning은, 딥러닝 방법의 하나로 '적은 학습데이터'를 가지고 학습하는 방법입니다.
기존의 '딥러닝'은 많은 양의 학습데이터로 학습하는 것이 일반적이었는데요
말그대로 '엄청난 양'의 학습데이터를 바탕으로 학습하다보니, 학습시간도 오래걸리고, 그 방대한 양의 데이터를 한 번에 학습할 때에 필요한 막강한 하드웨어의 성능도 필요했습니다.
기존 딥러닝의 경우, 인간의 신경망을 모방한 구조를 기반으로 학습을 해왔고, 실제로 엄청난 발전을 거듭해오고있으나, 특정분야를 제외한 다각적인 측면에서는 사람만큼의 인지능력이 아직은 많이 부족합니다. (그래서 어쩌면 다행이다 싶은 마음도 있습니다만 ㅎㅎ)
인공지능을 흔히 '어린아이'로 비유하는 경우가 많지요. '만들었다, 끝!'이 아니라 끊임없이 학습이 필요해서인데요. 실제로 우리가 아직 세상에 나온 지 얼마 되지 않은 2-3살배기 아이들은 사물을 인지할 때 비슷한 종류인지, 아닌지를 자연스럽게 분류할 수 있습니다.
예를 들어, 태어나서 도룡뇽이라는 동물을 한 번도 듣거나 보지 않았음에도 불구하고, 자연스럽게 도룡뇽은 강아지나 고양이가 아니다라는 것을 알고 있는 것처럼 말이죠. 이 아이들은 과연 어떻게 저절로 도룡뇽은 강아지나 고양이가 아니라는 분류를 해낼 수 있었을까요? 2-3살배기의 아가들이 딥러닝을 거친 인공지능만큼 방대한 데이터를 사전에 학습한 것도 아닌데 말예요.
자, 그래서 오늘은 2-3살배기 아가들이 인지하는 것처럼 적은 데이터를 가지고도 학습할 수 있는 방법인 few-shot learning에 대해 살펴보겠습니다!
few-shot learning은 zero-shot, one-shot learning과 함께 'In-context learning'의 예시로 속하는데요.
In-context learning이란, 언어모델이 시연(demonstration)의 형태로 몇 가지 예시로만 주어진 과제를 학습할 수 있도록 하는 패러다임입니다. 즉, 모델에게 '이런 질의에 이렇게 답을 하라'라는 가이드 형태의 입력(질의/출력(답변) 값을 예시를 먼저 제공하고, 모델은 가이드 받은 입력(질의)/출력(답변)의 내용을 파악해 질의에 대한 답변을 매핑한 후 적절한 응답을 생성합니다.
Few-shot learning은 바로 이 In-context learning에서 비롯된 학습방법입니다.
기존 딥러닝 모델의 경우, 어떤 대상을 분류하거나 생성하기 위해서는 해당 대상과 관련된 많은 양의 데이터를 냅다 학습하고, 학습한 데이터를 바탕으로 A인지, B인지를 신뢰도에 따라 분류가 되었습니다.
그러나, Few-stot Learning은 제한된 샘플 수를 바탕으로 예측을 하는 학습 방법입니다. 마치 어린사람이 많은 양의 데이터를 학습한 것도 아닌데 두 물체가 비슷한지, 다른지를 인식하는 것과 같은 방법입니다.
[사진1]은 몇 가지의 학습 데이터입니다. 사자, 여우(혹은 늑대), 곰, 코끼리, 표범 등 5개의 클래스로 이루어져 있어요. Few-shot Learning학습의 목표는 위 이미지처럼 학습셋의 이미지를 인식한 후, 해당 이미지를 테스트 세트로 일반화하는 게 아닙니다. 이 학습셋으로 모델이 훈련하는데 각 클래스별로 물체간의 유사성과 차이점을 인식하는 것이 바로 Few-shot learning 학습의 목표입니다.
이 사진속 동물이 무엇인지 우리는 알고 있습니다. 바로 다람쥐이죠!
하지만, [사진1]에서는 다람쥐 클래스가 없기 때문에 [사진1]로 학습한 모델은 해당 사진이 다람쥐인지 알지 못합니다. 그러나 [사진2]의 이미지를 모델에게 보여주고 두 이미지가 같은 종류의 동물인지는 물어볼 수 있습니다.
[사진1] 학습셋으로 훈련한 모델은 물체들 사이에 유사성과 차이점을 알고 있습니다. 그래서 다람쥐가 어떻게 생겼는지 한 번도 보지 못했어도 두 사진 속 대상은 같은 종류라는 것을 알 수 있어요!
오늘은 Few-shot learning이 어떻게 학습하는지에 대해 간략히 소개드렸습니다. 다음에는 Few-shot learning에 필요한 요소들에 대해 살펴볼게요!
해당 글은 Dhanya Thailappan의 'An Introduction to Few-Shot Learning'글을 참조하여 작성되었습니다:)