→ Zero-shot setting에서 Binary claffication을 수행할 때, 모델의 성능을 높히기 위해서 좋은 manual prompt를 찾는 방법에 대해서 연구한 논문
→ 어떻게 하면 MANUAL PROMPT를 더욱더 견고하게 만들까 고민한 논문이라고 보면 될듯
Introduction
•
Prompt내에 있는 단어나, Prompt가 있는 위치에 따라서 모델 성능 편차가 심하다.
•
특히 instruction에 대한 민감도가 떨어지기 때문에 MANUAL PROMPT는 ZERO-SHOT SETTING에서 POOR PERFORMANCE를 보일 때가 많음.
위에서 언급한 MANUAL PROMPT의 문제를 해결하기 위해서 다음의 연구가 진행되어왔음
→ FEW SHOT SETTING을 차용해서 PROMPT를 자동으로 생성
•
ZERO-SHOT SETTING에서 FEW-SHOT SETTING을 차용해서 PROMPT를 생성할 수 없음
(ZERO-SHOT에서는 PROMPT랑 ANSWER까지 한번에 생성하도록 ZERO-SHOT를 할 수 없음 (여러가지의 demonstration에 대한 접근 권한이 없다..) → 사용자가 PROMPT를 주는게 ZERO-SHOT이니깐)
•
자동으로 생성하는 PROMPT가 HUMAN INTENTION을 그대로 따를지는 알 수 없음
(인간이 의도를 가지고 넣어준 PROMPT도 못 따르는 마당에)
→ (아마도 MANUAL) LM를 FT해서 PROMPT를 평가
조금 더 USABILITY가 좋은 MANUAL PROMPT를 만들기 위해서
→ BASE PROMPT가 있다는 가정하에
→ AUGMENTATION을 통해 CANDIDATE PROMPT를 만든다. (AUTOMATIC 맞음)
(KEYWORD에 SENSITIVE하게 반응하는 PROMPT를 만들자 (RANKING MODEL로 평가)
… 다음 문장이 긍정인지 부정인지 판별해줘 : (이 PROMPT는 다음에 오는 문장에 포함되는 부정.긍정 키워드를 잘 잡으면 ROBUST한 PROMPT)
)
→ ROBUST한 PROMPT를 가져와서 ZERO-SHOT TEST, DIFFERENT DOMAIN에서 좋은 성능
PROMPT BASED LEARNING
→ FEW-SHOT LEARNINGING인데 DEMONSTRATION보다는 PROMPT의 설계에 따라서 performance차이가 많이 난다고 보는 연구 분야 같음
→ 좋은 Prompt를 어떻게 찾을까에 대한 연구를 하는 분야.
PROMPT라고 하면 X,Y를 NATURAL LANGAUAGE로 변형한 모든 형태를 일컫는 것으로 보이며, 구체적으로는 다음의 것들을 모두 포함하는것으로 보임
•
Instruction
•
Template
•
Keyword (The movie was terrrible/horrible)
METHODOLOGY
→ Zero-shot Performance가 좋아지도록 Base Prompt를 (1) Augmentation하고 (2) Selection해내는 과정이 이 논문의 주요 방법론
→ Input Mapping은 Label을 Model의 Vocab으로 Mapping 시켜주는 Function
#### (1) Augmentation
1.
subordinate conjunctions (접속사): 접속사를 추가해줘서 Input과 Prompt 사이의 dependency를 modeling. (모델이 자연스럽게 언어를 해석하면서 label을 예측하도록)
2.
positioning: prompt 순서 변경 (사실상 vanilla)
3.
paraphrasing: input + masked prompt + label에 MLM을 통해 비슷한 prompt를 여러개 생성. (label 고정. mask한 token과 예측한 token들 pos 같도록 제약 추가)
#### (2) Ranking & Selection
- Intuition: Sentence(Input)내 Keyword가 바뀌면 Label Prediction도 영향을 받아야 한다.
(ex) "battery life was great" with "terrible” → label flip
1.
Mapping Token을 포함한 Input Sentence i를 가져온다.
2.
i에 Mapping Token B가 포함되어 있다고 할 때, 아래를 총 |Z|회 반복
a.
B를 유의어로 대체
b.
B를 Label Token + 유의어로 대체
3.
모든 i번째 문장에 prompt를 붙혀서 score(p)를 계산
#### 구한 Best Score Prompt 기반으로 Prediction
(→ Input Mapping에 있는 단어들로만 softmax 계산하면 문제가 쉬워지는데.. 코드가 없음)
→ Top-Rank Score Prompt 기반으로 Zero-shot 태워서 Aggergation
Experimental Results
•
Base-prompt 1 : "<sentence>. It was [MASK]”
•
Base-prompt 2: "<sentence>. The sentence was [MASK]”
#### Results
•
접속사가 효과가 좋음 (Top-Rank) : 접속사를 추가하는것만으로도 Casual Modeling하는데 도움이 되는 것으로 보임
•
다른 방법들과 다르게 Model Scale Law 적용가능
•
ZS-SC는 Prompt 생성한 모델이랑 분류하는 모델이랑 같음
•
K가 증가한다고 해서 항상 성능이 증가하는 것은 아니지만, 아래 (BERT-LARGE)Ablation에서 보이는것처럼 K가 증가하면 top-rank가 독립적으로 만들 수도 있는 실수들을 어느정도 보완해줄 수 있음