T5에 prompt tuning 했더니 GPT3 의 few-shot prompt design 보다 좋더라
파란색은 GPT-3
빨강, 주황, 초록은 T5
초록은 추가로, 모든 task에 대해 single frozen model을 reuse 하도록 했는데, 이래 됨.
Prompt Tuning 은 inference 시나리오에서도 효과적임. prompt만 저장해 두면 되기 때문.
해당 논문 contribution.
prompt tuning 을 제안하고 LLM (Large Language Models) 에 대한 효과 분석
많은 design choice 에 대한 ablation study
prompt tuning 이 domain shift problems 도 해결함.
prompt ensembling 을 제안함
Prompt Tuning
T5의 원칙대로 text-to-text 즉, text-generation으로 모든 task 수행
classification 도 generation task 로!
보통 prompting은 model parameter는 froze 시켜놓고, input 의 앞부분에 token 들을 붙여서 수행한다.
GPT-3 에서는, prompt token들의 representation P = {p1, p2, . . . , pn} 가 frozen 모델의 embedding table이었다.
그러다 보니, optimal prompt 를 찾아나가려면 prompt token들을 manual하게 사용해보거나 non-differentiable 하게 search 하는 방법이 필요했다.
Prompt-Tuning 에서는 pompt P 가 model parameter 로 국한되는 제한을 풀어버린다.
Prompt Design 은 고정된 embedding, 고정된 vocab에서 prompt token을 선택해야한다.
Prompt Tuning은 fixed special token prompt을 사용하는 것인데, 요 special token 들의 embedding은 learnable 한 것이다.
n개의 token이 주어졌을 때 {x1, x2, . . . , xn} T5는 token embedding 부터 수행한다.
embedding 이 만들어지고, prompt tuning 을 위해서 soft-prompt embedding 이 만들어진다. 그러고 나선 간단하게 concat 시켜준다. 업데이트 되는 건 오직 P_e 뿐. token embedding은 업데이트 되지 않는다.
Design Decisions
prompt token을 initialize 어떻게 할 지, 고민을 하게 되는데, 3가지 방법이 있다.
random initialize
word embedding 중에 랜덤하게 가져와서 initialize
verbalizer 처럼 classification output 을 갖고 initialize 하기
prompt 길이 또한 중요한 옵션이다. embedding 개수가 늘어나는 거라, computation을 고려해야 한다. 관련 실험결과는 result에서 다루자.
Unlearning Span Corruption
GPT-3 와 다르게, T5 는
encoder-decoder 구조를 사용
span-corruption objective 로 학습됨 (masked span reconstruction)
예를 들어, Thank you for inviting me to your party last week 문장이 있다면 T5에서 input, output은 다음과 같음
input: Thank you <X> me to your party <Y> week
output: <X> for inviting <Y> last <Z>
이렇게 학습시키는게 효율적이긴 하지만, 멀쩡한 input을 본 적 없기 때문에 frozen single model을 만들기에는 적합하지 않음.
finetuning 으로는 충분히 좋은 성능을 내고 있지만, 우린 zero-shot을 해봐야 하지 않겠냐.
그래서 3가지를 실험해 보았다.
Span Corruption : pretrained T5 활용
Span Corruption + Sentinel : pretrained T5 + downstream 도 전부 sentinel로 만들어버리기.
LM Adaptation : T5 를 갖고 LM objective 로 pretraining 을 쬐끔만 더 했음.
LM-objective ==> 아래 그림 처럼 다음 output 예측하는 오래된 방식.
Results
Ablations
a) prompt token length 는 20이면 충분해 보인다.
b) Initialize 는 random 하게만 안 하면 된다.
c) LM 을 조금 섞어주는게 좋다
d) LM은 50k 정도만 더 해주면 되더라.
Zero-Shot performance
Domain Shift Problem
Prompt Tuning 과 함께라면, QQP로 학습하고 MRPC 로 eval 하든, 거꾸로 하든 잘 된다!
Prompt Ensemble
single frozen T5-XXL model 에서 만들어낸 five-prompt tuning 성능. 5개 prompt 각각의 mean, best 성능을 뛰어넘는다.
paper code code2
T5에 prompt tuning 했더니 GPT3 의 few-shot prompt design 보다 좋더라 파란색은 GPT-3 빨강, 주황, 초록은 T5 초록은 추가로, 모든 task에 대해 single frozen model을 reuse 하도록 했는데, 이래 됨.
Prompt Tuning 은 inference 시나리오에서도 효과적임. prompt만 저장해 두면 되기 때문.
해당 논문 contribution.
prompt tuning
을 제안하고 LLM (Large Language Models) 에 대한 효과 분석prompt tuning
이 domain shift problems 도 해결함.prompt ensembling
을 제안함Prompt Tuning
T5의 원칙대로
text-to-text
즉, text-generation으로 모든 task 수행 classification 도 generation task 로!보통 prompting은 model parameter는 froze 시켜놓고, input 의 앞부분에 token 들을 붙여서 수행한다. GPT-3 에서는, prompt token들의 representation
P = {p1, p2, . . . , pn}
가 frozen 모델의 embedding table이었다. 그러다 보니, optimal prompt 를 찾아나가려면 prompt token들을 manual하게 사용해보거나 non-differentiable 하게 search 하는 방법이 필요했다.Prompt-Tuning 에서는 pompt P 가 model parameter 로 국한되는 제한을 풀어버린다. Prompt Design 은 고정된 embedding, 고정된 vocab에서 prompt token을 선택해야한다. Prompt Tuning은 fixed special token prompt을 사용하는 것인데, 요 special token 들의 embedding은 learnable 한 것이다.
n개의 token이 주어졌을 때
{x1, x2, . . . , xn}
T5는 token embedding 부터 수행한다. embedding 이 만들어지고, prompt tuning 을 위해서 soft-prompt embedding 이 만들어진다. 그러고 나선 간단하게 concat 시켜준다. 업데이트 되는 건 오직 P_e 뿐. token embedding은 업데이트 되지 않는다.Design Decisions
prompt token을 initialize 어떻게 할 지, 고민을 하게 되는데, 3가지 방법이 있다.
prompt 길이 또한 중요한 옵션이다. embedding 개수가 늘어나는 거라, computation을 고려해야 한다. 관련 실험결과는 result에서 다루자.
Unlearning Span Corruption
GPT-3 와 다르게, T5 는
예를 들어,
Thank you for inviting me to your party last week
문장이 있다면 T5에서 input, output은 다음과 같음 input:Thank you <X> me to your party <Y> week
output:<X> for inviting <Y> last <Z>
이렇게 학습시키는게 효율적이긴 하지만, 멀쩡한 input을 본 적 없기 때문에 frozen single model을 만들기에는 적합하지 않음. finetuning 으로는 충분히 좋은 성능을 내고 있지만, 우린 zero-shot을 해봐야 하지 않겠냐. 그래서 3가지를 실험해 보았다.
Span Corruption
: pretrained T5 활용Span Corruption + Sentinel
: pretrained T5 + downstream 도 전부 sentinel로 만들어버리기.LM Adaptation
: T5 를 갖고LM objective
로 pretraining 을 쬐끔만 더 했음.LM-objective ==> 아래 그림 처럼 다음 output 예측하는 오래된 방식.
Results
Ablations
a) prompt token length 는 20이면 충분해 보인다. b) Initialize 는 random 하게만 안 하면 된다. c) LM 을 조금 섞어주는게 좋다 d) LM은 50k 정도만 더 해주면 되더라.
Zero-Shot performance
Domain Shift Problem
Prompt Tuning 과 함께라면, QQP로 학습하고 MRPC 로 eval 하든, 거꾸로 하든 잘 된다!
Prompt Ensemble
single frozen T5-XXL model 에서 만들어낸 five-prompt tuning 성능. 5개 prompt 각각의 mean, best 성능을 뛰어넘는다.