zero-shot learning과 few-shot learning
OpenAI사는 2020년 출시된 GPT-3.0이후 많은 자사 개발 기초모델의 소스코드를 공개하지 않는 원칙을 고수하고 있다. 따라서 사용자들은 기존의 엔지니어들이 시도했던 방식처럼 모델의 매개변수(parameter)를 직접 수정하거나 추가 데이터를 학습하는 방식으로 모델을 활용할 수 없다. 그러나 소스코드 공개 없이도 챗GPT를 효과적으로 활용할 방법은 여전히 있다.
이번 시간에는 사전학습된 초거대언어모델(LLM)이 텍스트 데이터를 학습하는 방식인 인컨텍스트 러닝(In-context learning)과 한정된 자원속에서 챗GPT가 원하는 태스크를 수행하도록 유도할 수 있는 zero-shot learning과 few-shot learning에 대해 소개하겠다.
In-context learning은 GPT-3와 같은 대규모 언어 모델에서 사용되는 학습 기법 중 하나다. 이 기법의 핵심 아이디어는 모델이 주어진 문맥(context) 내에서 학습하고 정보를 추론하는 능력을 갖추게 하는 것이다. GPT-3의 경우, 모델의 규모가 매우 크기 때문에 전통적인 미세 조정(fine-tuning) 방식보다는 주어진 입력 문맥을 활용하여 작업을 수행하도록 설계되었다.
트랜스포머 아키텍처를 기반으로 법률분야 관련 질문에 적절한 답을 해주는 법률전문 챗봇을 구현하는 경우를 생각해보자. 이 때 기존의 방식으로는 사전학습(pre-trained)된 모델에 적게는 수천건에서 많게는 수만건에 달하는 법률관련 데이터를 추가로 학습하는 미세조정(fine-tuning)이 필요했다. 추가학습을 위해 필요한 라벨링(Labeling)과 지도학습(supervised learning) 과정은 많은 시간과 작업량을 요하는 작업이었고, 이러한 부담은 구축 프로젝트를 수행에 현실적인 장벽으로 작용했다.
기존의 모델에 특정 작업을 수행하도록 교육하기 위해 별도의 미세 조정이 필요했다면, GPT-3는 적절한 문맥이나 예시(prompts)를 제공함으로써 해당 작업을 수행하도록 유도할 수 있다. 법률전문 챗봇의 기능을 in-context learning으로 구현하려면, GPT-3나 다른 큰 언어 모델에게 적절한 문맥을 제공하여 해당 문맥에서 원하는 답변을 얻을 수 있도록 유도해야 한다. 아래는 해당 접근 방식에 따른 구체적인 예시와 방법론을 나열한 것이다:
-초기 설정: 처음에는 모델에게 챗봇의 목적과 범위를 명확히 알려주는 프롬프트를 제공한다.
-문맥 설정: 모델에게 법률과 관련된 특정 문맥이나 사례를 제공하여, 그 문맥에서 가장 적절한 답변을 생성하도록 한다.
-예시 제공: 모델이 일관된 답변을 제공하도록, 몇 가지 법률 관련 질문과 답변의 예시를 제공한다. 이를 통해 모델은 문맥과 일관된 방식으로 답변을 생성하는 방법을 배울 수 있다.
-피드백과 수정: 모델의 답변을 사용자의 피드백을 기반으로 지속적으로 개선한다. 초기에는 모델의 답변이 완벽하지 않을 수 있으므로, 사용자의 피드백을 통해 모델에게 더 나은 답변을 제공하도록 교정하는 과정이 필요하다.
위와같은 과정을 거쳐 수개월의 작업시간과 수천만원 이상의 비용이 들어가는 법률 챗봇을 꽤나 간단하게 만들어낼 수 있다. 이처럼 인컨텍스트 러닝(in-context learning)은 별도의 라벨링(labeling) 및 지도학습(supervised learning) 과정 없이 다양한 자연어처리 태스크를 수행할 수 있다는 놀라운 장점을 가지고 있는 것이다.
zero-shot learning은 모델이 학습 데이터셋에서 본 적 없는 완전히 새로운 카테고리나 작업에 대해 성능을 발휘하는 학습 방식을 말한다. 이를 위해 모델은 학습 데이터에서 얻은 일반적인 지식을 활용하여 새로운 문제나 태스크에 대응한다. GPT-3와 같은 초대형 언어 모델은 사전 학습 과정에서 방대한 양의 텍스트 데이터를 통해 다양한 패턴과 지식을 학습하므로, 특정 문맥을 제공함으로써 zero-shot 방식으로 다양한 작업을 수행할 수 있다.
이해를 돕기 위해 어린 아이가 언어를 배우는 장면을 떠올려보자. 아이에게 초록색 사과를 보여주며 이것을 사과라고 부른다고 알려준다. 아이는 사과를 요리조리 살펴보며 한 입 베어먹기도 하면서 모양과 생김새 그리고 색깔과 맛 등의 특징을 기억하면서 사과라는 단어를 기억할 것이다. 이번에는 아이에게 접시에 담긴 맛있는 파이를 내어주며 이것을 파이라고 부른다고 알려준다. 마찬가지로 아이는 파이를 유심히 살펴보고 냄새를 맡고 한입 베어물며 파이의 바삭바삭한 질감과 푹신한 식감을 기억해둘 것이다.
이렇게 사과의 특징과 파이의 특징을 모두 알게된 아이는 어느날 라디오에서 우연히 '사과파이'라는 단어를 듣게된다. 아이는 비록 아직 사과파이를 본적도 먹어본적도 없지만 자연스럽게 '사과파이'가 무엇인지 머릿속에 그려낼 수 있다. 사과파이는 사과와 파이의 특징을 동시에 가진 그 무엇인가를 의미하며 아이는 이미 그 두 단어가 의미하는 사물의 특징을 알고있기 때문이다.
초거대언어모델(LLM)이 언어를 배우는 방식도 마찬가지다. 언어모델에게 사과와 파이라는 각기 다른 단어를 훈련 데이터로 제공하면 우리가 사과파이라는 개념을 언어모델에게 가르쳐주지 않아도 언어모델은 스스로 개념을 유추해낼 수 있다.
Few-shot learning은 모델이 매우 제한된 양의 학습 데이터만을 사용하여 새로운 작업을 수행할 수 있게 하는 학습 방식이다. 이 방법에서는 모델에 몇 가지 예시(prompts)를 제공함으로써 해당 작업을 어떻게 수행해야 하는지 가이드한다. GPT-3의 경우, 주어진 몇 가지 예시를 통해 원하는 작업을 수행하는 방법을 빠르게 파악하고 적용할 수 있다.
이 두 방식은 특히 데이터가 제한적이거나, 데이터 라벨링에 많은 자원을 할애하기 어려운 상황에서 유용하다. GPT-3와 같은 초대형 언어 모델의 등장으로, zero-shot 및 few-shot learning 방법은 자연어 처리 분야에서 주목받는 핵심 기술 중 하나로 떠오르게 되었다.