Pretrain, Prompt and Predict
원문: Liu, Pengfei, et al. "Pre-train, prompt, and predict: A systematic survey of prompting methods in natural language processing." ACM Computing Surveys 55.9 (2023): 1-35.
본 글은 Pretrain, Propmt and Predict [ACM-2023] 논문을 기반으로 한 저의 개인적인 이해를 정리한 글입니다. 실제 논문의 구성 및 내용과 약간의 차이가 있을 수 있습니다.
(+ 추가로 이번 글은 논문의 일부만을 다루고 있으며, 필요시 내용을 추가하도록 하겠습니다.)
미리보기
- 언어모델을 사용하는데 있어서 prompt를 이용하는 패러다임의 등장에 대한 내용 소개
- 언어모델을 사용하는데 있어서 prompt를 이용하는 방식에 대한 내용 소개
1) Two Sea Changes in NLP
언어모델의 이해
- 언어모델이란 문장과 같은 단어 시퀀스에 확률을 할당하는 모델을 의미함
- 이때 확률은 각 단어 또는 단어 시퀀스가 얼마나 자연스러운지를 의미함
- 그리고 자연스럽다는 "언어모델이 학습과정에서 본 텍스트의 언어패턴 또는 단어패턴과 유사한가"라고 정의할 수 있음
- 즉, 확률은 특정 단어 또는 단어 시퀀스가 모델이 학습 시 본 언어패턴에 얼마큼 자주 등장하는지의 영향을 받아 계산됨
언어모델을 이용하는 연구의 흐름
1. Task-specific 모델 설계
- Fully supervised learning을 수행하며 모델은 input-output examples로 구성된 데이터셋만으로 학습을 수행함
- Fully supervised 데이터셋은 (수가 부족하여) high quality model을 학습하는데 불충분한 경우가 많으며, 자연어 분야에서도 마찬가지로 이를 이용한 방식은 정교한 모델을 만드는데 어려움이 있음
- 또한 이 방식의 경우 비교적 shallow한 모델을 이용하며, 이 당시 모델들은 길이가 긴 문장의 문장 전체 context를 파악하는데 어려움이 있었음
2. Pre-training + Fine-tuning
- Large corpus data를 이용하여 unsupervised learning으로 언어모델을 pre-training 한 후, task specific한 data를 가지고 fine-tuning을 수행
- fine-tuning 시 별도의 task specific objective function으로 초기화된 fine-tuning layer를 학습함
- 그러나 언어모델의 크기가 매우 커지면서 task를 수행하기 위해 모델 파라미터를 업데이트하는 데에는 메모리가 많이 소요되며, inference 단계에서 각 task를 수행하기 위해 task별 전체 모델의 파라미터 copy를 따는 것은 매우 비효율적임
3. Pre-training + Prompt
- Large corpus data를 이용하여 학습된 언어모델을 가지고 바로 task를 수행함
- Ideal한 경우, pre-trained 모델의 모든 파라미터를 freeze한 뒤 natural language prompt를 이용하여 모델이 task를 인지하고 수행하도록 하며, 별도의 task-specific layer나 task-specific training 없이 하나의 언어모델을 온전히 unsupervised fashion으로 학습함
- prompt를 이용하면 구체적인 지시가 가능하며, task를 명확히 전달할 수 있다면, task를 잘 수행할 수 있음
- 또한, 모델은 고정한 상태에서 prompt로 task를 지시하는 방식의 효과로 하나의 모델이 여러 task를 수행할 수 있음
- 추가 학습이 필요한 경우, prompt tuning과 같은 방법을 이용하면 fine-tuning보다 적은 수의 파라미터를 학습하면서 충분한 성능을 낼 수 있음
Pretrain + Fine-tuning → Pretrain + Prompt
- GPT-3의 등장 이후 모델의 크기가 만병통치약처럼 여겨지게됨. 즉, LM의 크기를 키워서 잘 학습시키면 대부분의 언어 관련 task를 잘 수행할 수 있다는 것이 주 연구 기반이었음
- 그래서 LLM을 general corpus에서 pre-training 한 후 downstream task에 대해 fine-tuning을 실시함
- 그런데 모델의 크기가 점점 커지면서 trillion scale이 되다보니, 일부 파라미터만 업데이트하는 fine-tuning 방식이 거의 도움이 되지 않게 됨
(trillion scale로 인한 transfer ability 문제)
- 그래서 fine-tuning의 대체로 prompt를 이용하여 downstream task를 수행하고자 함