해당 강의노트는 Vilhelm Gustavsson님의 [Prompt-based Learning: A paradigm shift in NLP]를 참고하여 작성됐습니다.
Prompt-Based Learning이란?
모델에 들어가는 입력 데이터(input data)를 사람이 읽을 수 있는 설명(human readable instructions)으로 잘 작성된 텍스트와 연결하여 수정하게 되는데 이 때 만들어지는 텍스트를 프롬프트(prompt)라고 합니다. 프롬프트는 task-specific하게 훈련되지 않아도 사전학습 언어모델(PLM, Pre-trained Lanugage model)이 새로운 테스크(e.g. 질의응답, 기계번역 등)에 대해서 잘 수행되도록 합니다. 즉, 단지 자연어로 모델이 어떤 일을 수행해야 할지 알려주는 것만으로도 별도의 추가훈련 없이 새로운 테스크를 좋은 성능으로 수행할 수 있습니다. 따라서 Prompt-based learning 목적은 프롬프트의 도움을 받아 사전학습된 지식을 최대한 활용하자가 되겠습니다.
Prompt-based Learning Method
prompt-based learning에는 현재까지 많은 방식이 소개되었습니다. 해당 강의노트에서는 manual한 방식을 패턴화해 처음 소개한 Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference(Schick,Timo, 2021) 논몬의 방식을 다루도록 하겠습니다.
먼저 기존의 입력값($x$)가 prompt function을 통과하게 되면 사전에 정의해둔 패턴 형식인 prompt $x'$로 바뀌게 됩니다. 이 때 사전에 정의해둔 형태를 prompt template이라고 하게됩니다. 해당 template은 언어모델이 특정 테스크를 풀 수 있도록 기존의 입력값 형태를 바꿔주는 것을 말합니다. 예로 언어모델이 MLM(Maksed Language Model)기반이라면 입력값에 적절한 변형과 <MASK> 토큰을 넣어주게 됩니다. prompt function을 통과한 값 $x'$은 언어모델을 통해 prediction되며 결과는 언어모델의 vocab에 존재하는 단어인 $\hat{z}$ 로 나오게 됩니다. 해당 값을 테스크의 레이블링 값으로 변환해주는 과정을 거쳐 최종 아웃풋인 $\hat{y}$를 얻게 됩니다.
위에서 설명드린 방식은 가장 기본적인 prompt-based learning이며 이를 뉴스 기사 분류 테스크에 적용한 예시는 Fig1과 같습니다.
NLP의 이전 패러다임은 "Pre-train, Fine-tune"이었습니다. 언어모델을 사전학습(pre-traine)하고 다운스트림 테스크를 위해 추가 학습데이터를 사용하여 파인튜닝(fine-tune)을 거쳤습니다. 자연어처리와 딥러닝 분야의 전문가들은 "어떻게 우리는 언어모델을 파인튜닝할까?"라는 질문에 초점을 맞춰왔습니다. 파인튜닝은 레이블링된 데이터가 필요한 supervised task로 데이터를 직접 구축 시에는 많은 비용이 들고 무료로 이용한 데이터는 한정적입니다.
prompt-based learning은 다음의 질문에 초점을 맞춥니다. "어떻게 언어모델의 입력값을 디자인해야하는가?" 이에 대한 답변은 추가적인 파인튜닝 없이 사전학습모델이 새로운 테스크를 수행할 수 있도록 하는 것입니다. 즉 이 방법은 레이블링 데이터가 추가적으로 더 필요한 상황을 막는 것입니다.
파인튜닝 없이 언어모델을 사용할 때 이를 Zero-/Few-shot learning이라고 합니다. 이는 prediction을 위해 사용되는 추가 학습데이터가 매우 적거나(few), 아예 필요하지 않기(zero) 때문입니다. 최근들어 T5(Text-to-Text transfer Transformer)와 같은 파인튜닝된 작은 모델이 더 큰 few-shot 모델인 GPT-3를 SuperGLUE와 같은 NLP 벤치마크를 넘어서는 모습을 보입니다. 하지만 추가 데이터의 필요성을 제거하는 것은 많은 응용환경에서 Prompt-based learning을 선호하게 만들 수 있는 장점입니다.
'인공지능(AI) > 자연어처리(NLP)' 카테고리의 다른 글
[NLTK] 자연어 처리를 위한 패키지 (0) | 2023.10.24 |
---|---|
End-to-End Memory Networks, 엔드-투-엔드 메모리 네트워크 (0) | 2022.08.18 |
[LM 평가지표] Perplexity, PPL (0) | 2022.02.04 |
[NLP] 워드투벡터(Word2Vec) (2) | 2021.10.13 |
[NLP] 단어 표현 방법(Word Representation) (0) | 2021.10.13 |