PPT: Pre-trained Prompt Tuning for Few-shot Learning 논문 리뷰를 통해
1) soft prompt에 해당하는 방법론을 간단히 정리하고,
2) 논문에서 제시한 prompt-tuning과, 연구 진행했던 'Clipcap' 모델의 아이디어인 prefix-tuning을 비교해보려고 한다.
언어모델을 downstream task에 활용하는 방법은 크게 두 가지 main stream으로 나누어볼 수 있다.
: "In context learning", 즉 Few-shot learning이 가능하기 때문이다.
예를 들어, GPT3의 text generation 과정에서는
다음과 같이 입력으로 task description, examples, prompt를 주면,
원하는 문장을 얻을 수 있다.
GPT는 Auto-regressive model로, 이전에 예측한 토큰들을 기반으로 다음 토큰을 예측하는 방식으로 학습을 진행한다. 또한 GPT3는 대량의 Unlabeled Corpus를 통해 pre-train 되었기 때문에, 이미 많은 지식을 담고 있다.
따라서 다음과 같이 예시와 prompt를 주었을 때, 추가적인 Fine-tuning 과정 없이 downstream task를 잘 수행할 수 있다.
즉, prompt를 이용하여 추가적인 파인튜닝 없이 PLM을 효율적으로 사용할 수 있다는 점이 In-Context Learning의 contribution이라고 볼 수 있다.
Prompt-Tuning은 두가지 이점이 있다.
하지만, 위에서 볼 수 있득이, Prompt-Tuning (soft prompt) 단독으로는 few-shot setting에서 Fine-Tuning보다 훨씬 나쁜 성능을 보여, 다양한 low-resource scenarios에서 Prompt-Tuning의 적용을 방해할 수 있다는 것을 발견했다.
따라서, 본 논문에서는 soft prompt와 hard prompt를 결합한다.
MAIN IDEA
downstream task를 몇 가지 Group으로 묶은 후에, 각 그룹을 이용하여 prompt를 pre-train 한 다음, 이를 각 downstream task의 soft prompt의 초기값으로 사용하자!
Prompt 사용 목적 : PLM이 가지고 있는 지식을 Prompt를 통해 효율적으로 활용하기 위함!
Prompt를 활용한 related works를 hard/soft prompt로 나누어서 확인해보자.
hard prompt : 사람이 해석 가능한 토큰이 추가된 형태.
soft prompt : 사람이 해석 불가한 실수값, 연속적인 벡터값으로 이루어진 토큰이 추가된 형태.
hard prompt ex) PET
Hard Prompt를 이용해서 Input을 MLM형식으로 변형한다.
이진 감성분류 task를 수행할 때, 위와 같이 positive로 labeled 된 data instance가 들어온다면, 이에 'It was __'라는 hard prompt를 추가하게 된다. 이 변형된 input을 PLM에 넣어서 masked token에 어떤 단어가 올 것인지 예측시킨다. PLM내의 vocab에서 이에 대한 logit값 반환하게 되는데, 이 중 great와 bad에 대한 logit 값만 softmax에 넣어서 확률값을 추출한다.
great와 bad에 대한 logit 값만 추출하는 이유?
위 그림과 같은 Verbalizer를 사용하기 때문이다. 기존의 y값으로 사용되는 logit값 0,1은 언어모델이 예측하기 힘들기 때문에 이 값들을 언어모델의 vocab 내의 특정 단어인 great, bad와 매핑해주는 작업이 필요하다.
great, bad 각각의 확률을 구한 다음, 원래 데이터셋의 class label인 Positive를 One-hot encoding하여 이 두 가지 벡터의 Cross Entropy Loss를 통해서 언어모델의 파라미터들을 업데이트 하는 것이다.
Labeled Training Set T에 PLM Ensemble을 통해 Unlabeled Dataset D에 soft labeling 한 후, Soft labeled dataset으로 Classifier 학습한다.
- 단점 1) Soft-labeled dataset을 만들기 위해 PLM을 Pattern의 개수만큼 Fine-tuning해야 함
- 단점 2) 최종 Classifier에는 PLM에 Task-Specific Head를 추가해 PLM과 Task-Specific Head의 파라미터를 모두 update 해야 함
- 단점 3) Hard prompt를 manual하게 만들어서 사용하기 때문에, 도메인지식이 필요하고 , 많은 Trial-and-Error를 수반한다.
무엇보다도, PET은 Full-Model Tuning을 사용하므로 PLM을 효율적으로 사용했다고 보기 어렵다.
: 기존 Pre-trained LM의 파라미터는 고정시키고, Transformer layer 별로 Learnable Soft Prompt를 추가한다.
: 기존 PLM 파라미터는 freeze하고, Soft Prompt인 hi만 업데이트(prompt encoder 추가)
: 기존 PLM 파라미터는 freeze, Input text에 Learnable Soft Prompt 추가
Few-shot learning에서 Prompt tuning의 성능을 높이기 위해 Soft Prompt를 pre-train 한다.
그 다음 Classification task들을 세 downstream task로 묶은 후, 각 그룹을 이용해 soft prompt를 pre-train 하고, 각 task의 soft prompt 초기값으로 사용한다.
위의 그림은 sentence pair tasks에서 사용되는 Prompt Tuning의 예시이다. P는 soft prompt를 나타낸다.
본 논문에서는 다운스트림 Task 그룹을 세 개로 정의한다.
- Sentence Pair
- Multiple Choice
- Single Sentence Classification
각 task 별 pre-train을 진행 한 다음, task format을 unifying한다.
이를 통해 pre-trained soft prompt를 임의의 도메인이나 훨씬 더 많은 label이 있는 Single-Text Classification Task에 사용이 가능하다.
- Prefix-tuning은 transformer layer마다 prefix를 추가한다. (구조를 약간 조작)
또한 MLP를 통해 Prefix-tuning을 진행하므로, training 파라미터 수가 증가할 수 밖에 없다.
- 이에 반해 Prompt tuning은 인풋 text 앞에 soft prompt를 추가하는 비교적 단순한 구조이다.
PLM을 구조적으로 조작하는 과정이 없어 효율적으로 PLM 사용 가능!
PPT 논문에서는 pre-training 단계에 soft prompt를 추가하여 prompt를 pre-train 할 것을 제안
Few-shot learning에서 Prompt tuning의 성능을 높이기 위해 Soft Prompt를 pre-train
그 다음 Classification task들을 세 downstream task로 묶은 후, 각 그룹을 이용해 soft prompt를 pre-train 하고, 각 task의 soft prompt 초기값으로 사용하여 좋은 성능 달성