[논문 리뷰] Pre-train, Prompt, and Predict: A Systematic Survey ofPrompting Methods in Natural Language Processing
1 Two Sea Changes in NLP
Sequence tagging은 **자연어 처리(NLP)**에서 사용하는 기법으로, 주어진 입력 시퀀스(문장이나 단어들)에 대해 각 단어 또는 토큰에 레이블을 붙이는 작업을 의미합니다. 대표적인 예로는 다음과 같은 작업들이 있습니다:
- POS 태깅 (Part-of-Speech Tagging): 각 단어에 품사(명사, 동사, 형용사 등)를 붙이는 작업.
- 예: "I love NLP" → "I/PRP love/VBP NLP/NNP"
- Named Entity Recognition (NER): 문장에서 특정한 개체(사람, 장소, 조직 등)를 식별하고 태그를 붙이는 작업.
- 예: "Barack Obama was born in Hawaii." → "Barack Obama/PER was born in Hawaii/LOC."
- Chunking: 문장에서 문법적인 구(phrase)를 식별하는 작업.
- 예: "He reckons the current account deficit will narrow to only £1.8 billion in September." → "He [NP reckons the current account deficit] [VP will narrow] to only £1.8 billion [PP in September]."
반면에 <sep>와 같은 토큰은 **특별한 토큰(special tokens)**으로, 주로 BERT와 같은 트랜스포머 모델에서 문장의 경계를 구분하거나 다른 역할을 수행하는 데 사용됩니다. 예를 들어, BERT에서 <sep>는 두 문장을 구분하기 위해 사용됩니다.
따라서, sequence tagging은 <sep> 같은 특별한 토큰을 의미하는 것이 아니라, 입력된 시퀀스 내 각 단어에 특정 레이블을 부여하는 작업입니다.
거대한 LLM, 특히 GPT-3나 GPT-4 같은 모델들은 sequence tagging 작업을 거치지 않고도 사용자의 질문을 이해하고, 바로 답을 생성할 수 있습니다. 이 모델들은 기본적으로 텍스트의 문맥과 의미를 학습하며, 특정 태깅 과정 없이도 자연어 처리 작업을 수행할 수 있는 능력을 가지고 있습니다.
왜 그런가요?
거대 언어 모델(LLM)은 다음과 같은 이유로 sequence tagging 같은 중간 단계를 생략하고 바로 작업을 처리할 수 있습니다:
- 언어 모델의 학습 방식:
- LLM은 대규모 데이터에서 텍스트의 구조, 의미, 맥락 등을 학습합니다. 이 때문에 문장의 각 단어의 품사나 태그를 별도로 명시하지 않아도 문장 전체의 의미를 이해할 수 있습니다.
- 이러한 모델들은 문장의 의미를 포괄적으로 이해하고 문맥에 맞게 답을 생성합니다. 즉, 문장의 개별 단어에 대해 태그를 지정하는 sequence tagging 과정을 거치지 않더라도, 그 문장이 무엇을 의미하는지 인식할 수 있습니다.
- 예측 기반의 텍스트 생성:
- GPT 같은 모델은 입력된 질문에 기반해 다음 단어나 문장을 예측하는 방식으로 작동합니다. 이 예측 과정에서, 문장의 의미나 구조를 기반으로 직접적으로 답을 생성합니다. 모델이 개별 단어를 이해할 때 품사 태깅이나 NER을 명시적으로 하지 않더라도 문맥을 통해 이해하고 답을 만들 수 있습니다.
- 사전 학습된 지식:
- LLM들은 방대한 양의 텍스트 데이터를 학습했기 때문에, 일반적인 질문에 대한 대답을 이미 잘 알고 있습니다. 질문의 구문을 별도로 태깅하거나 분석하지 않고도 적절한 답을 제공할 수 있는 이유는 이 사전 학습된 정보 때문입니다.
그렇다면 sequence tagging은 언제 필요할까요?
- 특정 태깅 작업이 필요할 때 (예: NER, 품사 태깅)나 텍스트의 각 부분을 구체적으로 분석해야 할 때는 sequence tagging이 필요합니다. 하지만 질문을 이해하고 답을 생성하는 과정에서는 이러한 태깅이 반드시 필요하지 않습니다.
- 특히 거대 LLM들은 대규모로 훈련된 덕분에, 이러한 중간 단계를 생략하고도 문맥과 의미를 기반으로 답을 바로 생성할 수 있습니다.
요약하자면, 거대 LLM은 별도의 sequence tagging 작업 없이도 질문을 이해하고 답을 생성할 수 있는 능력이 있습니다.
NLP의 네 가지 패러다임
이 표는 NLP의 네 가지 패러다임을 나타내고 있으며, 각각의 패러다임에 따라 엔지니어링 방식과 언어 모델(LM) 및 NLP 작업(예: 분류, 시퀀스 태깅, 생성) 간의 관계를 설명하고 있습니다. 각 패러다임에 대한 설명은 다음과 같습니다:
a. 완전 감독 학습 (Fully Supervised Learning, Non-Neural Network)
- Engineering: 비신경망 기반의 완전한 감독 학습 방식에서는 모델이 단어의 정체성, 품사, 문장 길이와 같은 **특징(feature)**을 학습합니다.
- Task Relation: 이 경우, 각 작업(Classification, Sequence Tagging, Generation) 간에는 별도의 연결이 없습니다. 즉, 태스크별로 모델이 개별적으로 학습됩니다.
b. 완전 감독 학습 (Fully Supervised Learning, Neural Network)
- Engineering: 신경망 기반의 완전 감독 학습에서는 **신경망 아키텍처(예: CNN, RNN, Self-attention)**를 사용하여 학습합니다.
- Task Relation: 각 작업 간에 연결이 없으며, 역시 각 작업은 개별적으로 학습됩니다. 다만 신경망을 사용하기 때문에 구조는 더 복잡해집니다.
c. 프리트레이닝 후 파인튜닝 (Pre-train, Fine-tune)
- Engineering: 이 패러다임에서는 목표(objective) 기반의 학습을 진행합니다. 예를 들어, **마스크드 언어 모델링(Masked Language Modeling)**이나 **다음 문장 예측(Next Sentence Prediction)**을 통해 프리트레이닝을 한 후, 각 태스크에 맞게 모델을 파인튜닝합니다.
- Task Relation: 이 경우, 프리트레이닝된 언어 모델이 각 태스크(분류, 태깅, 생성)를 위해 파라미터를 공유하면서 사용됩니다. 프리트레이닝된 모델을 활용해 파인튜닝하는 방식으로, 여러 NLP 작업에 적용할 수 있습니다.
d. 프리트레이닝, 프롬프트, 그리고 예측 (Pre-train, Prompt, Predict)
- Engineering: 이 방법에서는 **프롬프트(prompt)**를 사용합니다. 예를 들어 클로즈(cloze) 작업이나 **프리픽스(prefix)**를 활용하여 모델에 지시를 내리거나 조건을 제공하고, 이를 기반으로 모델이 직접 예측을 수행합니다.
- Task Relation: 여기서는 프롬프트를 통해 언어 모델을 다양한 태스크에 적용할 수 있습니다. 프롬프트는 텍스트 형태로 주어지며, 이를 통해 분류, 태깅, 생성 등의 작업이 하나의 모델에서 수행됩니다. 다양한 태스크 간의 연결이 가능하며, 프롬프트가 중요한 역할을 합니다.
Key Takeaways (중요한 점들):
- a와 b 패러다임에서는 각 작업 간의 연결이 없으며, 작업별로 모델을 따로 학습합니다. 비신경망과 신경망의 차이점은 있지만, sequence tagging, classification, text generation 등의 작업이 서로 분리되어 있습니다.
- c와 d 패러다임에서는 프리트레이닝된 언어 모델을 사용하여 여러 작업을 처리합니다. 특히 c는 파인튜닝을 통해 작업별로 맞춤형 모델을 만드는 방식이고, d는 프롬프트를 통해 하나의 모델에서 다양한 작업을 처리할 수 있도록 합니다.
특히 d 패러다임에서 프롬프트의 사용이 핵심적인 역할을 하며, 여러 NLP 작업을 통합하여 처리할 수 있는 강력한 방식입니다.
2 A Formal Description of Prompting
2.1 Supervised Learning in NLP
2.2 Prompting Basics
2.2.1 Prompt Addition
2.2.2 Answer Search
2.2.3 Answer Mapping
2.3 Design Considerations for Prompting
1. Pre-trained Models (프리트레인 모델)
- 왼쪽 상단에는 프리트레인된 모델의 유형이 나열되어 있습니다. 각 유형은 언어 모델의 훈련 방식에 따른 구분입니다.
- Left-to-Right LM: GPT 같은 모델들이 여기 포함되며, 텍스트를 왼쪽에서 오른쪽으로 예측합니다.
- Masked LM: BERT와 같이 문장에서 일부 단어를 마스킹하고 나머지 문맥을 통해 마스킹된 단어를 예측하는 방식입니다.
- Prefix LM: Prefix 형태의 입력을 통해 모델을 학습시키는 방식입니다.
- Encoder-Decoder: T5, BART 같은 모델로, 인코더와 디코더 구조를 통해 입력 텍스트를 처리하고 출력합니다.
2. Prompt Engineering (프롬프트 엔지니어링)
- 프롬프트 엔지니어링은 모델이 더 효과적으로 텍스트를 처리할 수 있도록 입력을 설계하는 방법을 말합니다. **Prompt Shape(프롬프트 모양)**과 **Answer Engineering(답변 설계)**으로 구분되어 있습니다.
- Shape (모양):
- Cloze: 기존 문장에서 일부를 빈칸으로 만들어 모델이 빈칸을 채우도록 하는 방식(LAMA, TemplateNER 등).
- Prefix: 문장 앞에 접두어를 붙여 맥락을 제공하는 방식.
- Human Effort (사람이 직접 프롬프트를 설계):
- Hand-crafted: 사람이 직접 템플릿을 디자인합니다(LAMA, PET-GLUE 등).
- Automated: 자동화된 도구나 기법을 사용해 프롬프트를 생성(AdvTrigger, AutoPrompt 등).
- Continuous: 연속적인 벡터 공간에서 프롬프트를 사용하는 방식(Prefix-Tuning, LM-BFF 등).
- Answer Engineering (답변 설계):
- Shape (답변의 형태):
- Token: 하나의 토큰으로 답변을 생성.
- Span: 특정 텍스트 구간을 답으로 추출.
- Sentence: 완전한 문장 형태로 답변을 생성.
- Human Effort:
- Hand-crafted: 사람이 직접 답변을 구성하는 방식.
- Automated: 자동화된 답변 생성을 위한 기법.
- Automated 방법:
- Discrete: 고정된 텍스트 형식을 사용한 답변 생성 방식(PE-TC, AutoPrompt 등).
- Continuous: 연속적인 벡터 표현을 사용하는 방식(WARP).
- Shape (답변의 형태):
3. Multi-Prompt Learning (다중 프롬프트 학습)
- Prompt Ensembling: 여러 프롬프트를 조합하여 결과를 개선하는 방식(GPT-3, LM-BFF 등).
- Prompt Augmentation: 프롬프트를 추가하여 학습 데이터의 다양성을 확보하는 방법.
- Prompt Sharing: 여러 작업에 공통적으로 사용할 수 있는 프롬프트를 공유하는 방식.
4. Prompt-based Training Strategies (프롬프트 기반 학습 전략)
- 프롬프트 기반으로 모델을 학습시키는 다양한 전략들이 나열되어 있습니다.
- Parameter Updating (파라미터 업데이트 방법):
- Promptless Fine-tuning: 프롬프트 없이 파인튜닝을 진행하는 방식.
- Tuning-free Prompting: 모델의 파라미터를 업데이트하지 않고 프롬프트만으로 학습.
- Fixed-LM Prompt Tuning: 모델의 파라미터는 고정시키고 프롬프트만 튜닝.
- Prompt+LM Tuning: 프롬프트와 모델의 파라미터를 함께 업데이트.
- Parameter Updating (파라미터 업데이트 방법):
- Training Sample Size (샘플 크기에 따른 학습 방법):
- Few/Zero-shot Learning: 아주 적은 수의 샘플이나 샘플 없이 학습하는 방법.
- Full-data Learning: 전체 데이터를 사용하여 학습하는 방식.