NL-162, Making Pre-trained Language Models Better Few-shot Learners, ACL 2021
◼ Comment
- 이 논문의 인트로까진 흥미로웠고 기대하는 연구를 하나 했는데.. 살짝 기대한 방향과는 다르다.
- 이 논문의 방향은 few-shot 세팅에서 prompt-based 학습을 하면 성능이 좋아진다는 것이다.
- 먼저 테스크를 MLM 방식으로 바꿔서 학습한다.
- 쉽게 긍부정 분류하는 문제라면, "그 영화는 재밌어. 이것은 [MASK]하다" 이런식으로 prompt을 구성해서 [MASK] 토큰이 positive/negative 어느 것으로 예측하는지 보는 것이다.
- 여기서 몇 가지 기술이 들어가는데 [MASK] 토큰이 기본적으로는 모든 토큰들, 즉 vocab size에 해당하는 확률을 도출할 것이다.
- 하지만 label word 풀을 한정시킨다.
- 긍부정이라면 직관적으로 positive, negative로 분류할 수 있겠지만 실제로는 positive/negative을 쓰지는 않는다.
- 실제 쓰는 label word을 찾는 알고리즘이 있다.
- 이는 섹션 5.1참고
- 두 번째 기술로는 어떤 prompt을 사용할지이다.
- "그 영화는 재밌어. 이것은 [MASK]하다"
- "그 영화는 재밌어. [MASK]하다"
- "그 영화는 재밌어. [MASK]한 영화이다"
- 등등의 prompt가 여러 개 구성할 수 있는데 이를 자동으로 찾는 것이다.
- 이는 섹션 5.2참고
- 자동으로 찾은 prompt는 top-1을 single로 사용할 수도 있지만 ensemble 방식으로 사용하면 성능이 좋다고 한다.
- 앙상블이라 학습도 모델을 여러번 해야하고 귀찮아 보이지만, few-shot 환경에서는 큰 리소스가 아니라는 식으로 말한다.
- 마지막으로는 few-shot 학습할 때, demonstrations에 대한 것이다.
- "그 영화는 재밌어. 이것은 [MASK]하다"
- 즉 위 예제를 학습할 때, demonstrations이라고 해서 GPT3에서 few-shot examples을 앞에 넣어주는 것처럼, 뒤에 예제를 넣어준다.
- 따라서 "그 영화는 재밌어. 이것은 [MASK]하다 <예제1> <예제2>" 이렇게 한다는 것이다.
- 관련되선 섹션 6을 보면되고, 테이블3에서 +demonstration을 통해 성능이 조금 향상하는 것을 볼 수가 있다.
- 여기서 demonstrations의 예제는 단순히 무작위 샘플링하는 것보단, 기존의 학습 예제와 비슷한 문장으로 구성하는게 좋다고 한다.
- 따라서 SBERT or RoBERTa 등으로 예제를 선택한다고 한다.
- few-shot에서는 LM-BFF 방식으로 하는 것이 효과적으로 보인다.
- 하지만 막상 manual과 auto prompt / label word 간의 성능차이가 그렇게 두드러지지 않는다.
- demonstrations의 효과도 엄청난 것은 아니다. (미세한 정도)
- 따라서 만약의 task 하나를 해결하고자 하면 그냥 간단히 manual prompt + label word 구성해서 prompt-base FT을 하는게 ROI가 좋지 않을까 싶다..
- 물론 때에 따라선 이 논문의 방법이 큰 효과를 보여주는 case도 있긴 하다.
- 어쨌든 이 논문으로 그냥 few-shot fine-tuning, GPT3의 방식보다는 좋다는 것은 입증된 듯 하다.
- 만약 데이터가 많으면 (full training set) 그림3으로 유츄해보건데 fine-tuning과 prompt-based FT와 성능 차이가 크진 않을 것이다.
0 Abstract
- 최근 GPT3 모델은 natural-language prompt와 몇몇 테스크에서 입력 컨텍스트로 활용함으로써 놀라운 few-shot 성능을 달성한다.
- 그들의 발견으로부터 영감받아, 우리는 few-shot learning을 좀 더 실용적인 시나리오에서 연구하고, 여기서 우리는 좀 더 작은 LM을 사용하고, 이는 fine-tuning이 계산적으로 효과적이다.
- 우리는 LM-BFF을 소개한다.
- better few-shot fine-tuning of language models
- 작은 수의 annotated examples에 대해 finetuning LMs을 위해 간단하고 보완적인 테크닉으로 적절하다.
- Our approach includes
- (1) prompt-based fine-tuning together with a novel pipeline for automating prompt generation; and
- (2) a refined strategy for dynamically and selectively incorporating demonstrations into each context.
- 마침내, 우리는 classification, regression을 포함한 NLP 테스크들에 대해 few-shot performance을 분석하기위해 systematic evaluation을 소개한다.
- 우리의 실험들은 우리의 방법들이 기존의 fine-tuning 과정들보다 low resource setting에서 매우 뛰어나고, 최대 30%, 평균 11%의 절대적인 성능향상이 일어난다.
- 우리의 접근법은 task resources와 domain expertise에 대해 사소한 가정들을 하고 따라서 few-shot learning에 대해 강력한 task-agnostic 방법을 구성한다.
1 Introduction
- GPT-3 모델(Brown et al., 2020)은 수많은 언어 이해 작업에 대한 놀라운 몇 가지 기능을 보여줌으로써 NLP 커뮤니티에서 파장을 일으켰습니다.
- natural language prompt와 task의 몇 가지 설명만이 주어졌을 때, GPT-3은 기본 language model의 weights을 업데이트 하지 않고도 정확한 예측을 할 수 있다.
- 그러나, 놀라울동안, GPT-3은 175B 파라미터들로 구성되고, 이는 실제 applications에서 사용하기 어렵게 만든다.
- 이 연구에서, 우리는 좀 더 실용적인 시나리오인 적당한 크기의 LM의 (BERT, RoBERTa) 사용, 좀 더 작은 examples (few-shot setting)에 접근함을 가정하고, 우리는 LM을 fine-tune한다.
- 이 설정은 다음과 같이 매력적이다.
- (1) 이러한 모델은 일반적인 연구 하드웨어에서 훈련될 수 있습니다.
- (2) 일반적으로 few annotations(예: 32개의 예)을 얻기 쉽고 이에 대해 학습하는 것이 효율적이므로 few-shot settings은 현실적입니다.
- (3) 파라미터들을 업데이트하면 일반적으로 성능이 향상됩니다.
- GPT3의 발견에서 영감받아, 우리는 몇 가지 새로운 전략으로 few-shot learning 능력을 우리의 세팅으로 확장하고, 이는 classification과 regression (처음으로)을 둘 다 고려한다.
- 첫째, zero-shot prediction을 위해 GPT 시리즈에서 처음 개발하고 최근 fine-tuning을 위해 PET에서 연구한 prompt-based prediction의 경로를 따릅니다.
- prompt-based prediction은 downstream task을 masked language modeling problem으로써 다루고, 여기서 model은 직접적으로 task-specific template에 의해 정의된 주어진 프롬프트에 대한 텍스트 응답(레이블 단어라고 함)을 직접 생성합니다 (그림 1(c 참조) )).
- 그러나 올바른 프롬프트를 찾는 것은 기술입니다.
- 도메인 전문 지식과 언어 모델의 내부 작동에 대한 이해가 모두 필요합니다.
- 상당한 노력을 투자하더라도 manual prompts는 차선책일 가능성이 높습니다.
- 우리는 이러한 이슈를 자동으로 prompt generation을 소개함으로써 해결하고, 이는 가장 잘 작동하는 label words을 찾기 위해 무차별 brute-force search을 포함한다.
- 그리고 생성 T5 모델을 사용하여 템플릿을 자동으로 생성하는 새로운 디코딩 목표(Raffel et al., 2020)
- 모두 몇 번의 훈련 데이터만 필요합니다.
- 두 번째로, 우리는 추가적인 context으로써 입증을 통합하는 아이디어를 채택한다.
- GPT3의 'in-context learning' 패러다임은 32개의 랜덤 샘플된 예제를 골라서, 입력으로 concatenate을 한다.
- 이러한 방법은 가장 유익한 demonstrations을 우선시함을 보장할 수 없고, 다른 클래스의 무작위 예제를 함께 혼합하면 배우기 어려울 수 있는 긴 컨텍스트가 생성됩니다.
- 추가적으로, 사용가능한 demonstrations의 숫자는 모델의 maximum input length으로 한정된다.
- 우리는 각 입력에 대해 각 클래스에서 한 번에 하나의 예제를 무작위로 샘플링하여 여러 개의 최소 데모 세트를 만드는 보다 세련된 전략을 개발합니다.
- 또한 입력을 유사한 예제와 쌍으로 연결하여 모델에 보다 차별적인 비교를 제공하는 새로운 샘플링 전략을 고안합니다.
- 8개의 단일 문장 및 7개의 문장 쌍 NLP 작업에 대한 few-shot 성능 분석을 위한 체계적인 평가를 제시합니다.
- 우리는 소량의 학습 샘플이 주어졌을때 관측을 한다.
- (1) prompt-based fine-tuning largely outperforms standard finetuning;
- (2) our automatic prompt search method matches or outperforms manual prompts; and
- (3) incorporating demonstrations is effective for finetuning, and boosts few-shot performance.
- 이 간단하면서도 효과적인 방법은 함께 평가하는 작업 전반에 걸쳐 극적인 개선에 기여하고 표준 미세 조정과 비교하여 최대 30%의 절대적 개선(평균 11%)을 얻습니다.
- 예를 들어 RoBERTa-large 모델은 대부분의 이진 문장 분류 작업에서 약 90%의 정확도를 달성하면서 32개의 훈련 예제에만 의존한다는 것을 발견했습니다.
- 우리는 우리의 접근 방식을 LM-BFF, 더 나은 언어 모델의 더 나은 소수의 미세 조정: 소수의 학습을 위한 강력하고 task agnostic 방법이라고 부릅니다.
2 Related Work
- Language model prompting.
- GPT 시리즈는 프롬프트 기반 학습의 발전을 촉진했으며 우리는 많은 핵심 개념을 따릅니다.
- 우리는 또한 최근 PET 작업에서 큰 영감을 얻었지만 레이블이 지정되지 않은 많은 예가 제공되는 반 감독 설정에 주로 중점을 둡니다.
- 우리는 주석이 달린 몇 가지 예만 감독으로 사용하고 자동으로 생성된 프롬프트와 데모를 통해 미세 조정을 탐색합니다.
- 또한 §3에서 논의할 더 엄격한 프레임워크를 제공하여 평가에서 벗어납니다.
- 마지막으로 사전 훈련된 모델에서 지식을 마이닝하도록 유도하는 작업이 많이 있습니다.
- 이러한 작업과 달리 우리는 다운스트림 작업에 대한 미세 조정 프롬프트를 활용하는 데 중점을 둡니다.
- Automatic prompt search.
- Schick 및 Schutze 및 Schick은 레이블 단어를 자동으로 식별하는 방법을 탐색하지만 이러한 결과 중 어느 것도 직접 선택한 것과 비교하여 더 나은 성능으로 이어지지 않습니다.
- 대조적으로 우리의 방법은 템플릿과 레이블 단어를 모두 검색하며 수동 프롬프트와 일치하거나 능가할 수 있습니다.
- 이 외에도 여러 시도가 있었지만 이러한 접근 방식은 특정 관계를 표현하기 위한 패턴 찾기와 같은 제한된 영역에서 작동하거나 그래디언트 안내 검색에 대해 많은 예가 필요합니다.
- Our approach aims to develop general-purpose search methods that rely only on a few annotations.
- Fine-tuning of language models.
- 최근의 많은 연구는 언어 모델을 미세 조정하기 위한 더 나은 방법에 초점을 맞췄습니다.
- 이러한 작업은 주로 미세 조정을 안정화하기 위한 최적화 및 정규화 기술에 중점을 둡니다.
- 여기서 우리는 표준 최적화 기술을 사용하고 대신에 보다 극단적인 몇 컷 설정에서 더 나은 프롬프트 기반 미세 조정에 주로 노력을 집중합니다.
- 우리는 이러한 연구의 결과가 우리의 결과와 크게 보완될 것으로 기대합니다.
- Few-shot learning.
- 광범위하게 말하면, 우리의 설정은
- (1) semi-supervised learning , where a set of unlabeled examples are given;
- (2) meta-learning , where a set of auxiliary tasks are given; and
- (3) intermediate training , where a related, intermediate task is given.
- 사용 가능한 리소스에 대해 최소한의 가정을 하여 이러한 설정에서 벗어납니다.
- 주석이 달린 몇 가지 예와 사전 훈련된 언어 모델만 가정합니다.
- 우리의 초점은 다른 이점 없이 어디까지 밀어붙일 수 있는지 이해하는 것입니다.
3 Problem Setup
- Task formulation.
- 이 연구에서, 우리는 pretraeind LM L에 접근할 수 있다고 가정하고, 이 모델은 label space Y을 가지는 task D에 대해 fine-tune할 것이다.
- 테스크을 위해, 우리는 class당 K training examples가 task training set Dtrain을 위해 있다고 가정하고, 전체 예제의 수는 K_tot = K × |Y|가 되고 $D_{train} = \{(x^{i}_{in}, y^{i})\}^{K_{tot}}_{i=1}$이다.
- For regression, we partition the data into two “classes” according to being above or below the median value.
- 우리의 목표는 그리고나서 task-agnostic learning 전략을 개발하여 unseen test set로 일반화하는 것이다.
- 모델 selction과 하이퍼파라미터 튜닝에서, 우리는 development set Ddev을 가정하고, 이는 few-shot training과 같은 사이즈이다. (|Ddev| = |Dtrain|)
- 이 구분은 중요합니다. 더 큰 개발 세트를 사용하면 상당한 이점이 있고(부록 A의 실험 참조) 제한된 데이터에서 학습하려는 초기 목표를 무너뜨립니다.
- For all of the following experiments (unless specified otherwise), we take L = RoBERTa-large and K = 16.
- 즉 L 모델에 대해, 클래스당 K개의 학습예제가 있다. 클래스는 |Y|개이다.
- development도 학습데이터 수랑 똑같이 있다.
- 이 상황에서 few-shot training을 한다는 것
- 디폴트로 L=RoBERTa-large, K=16
- Evaluation datasets.
- GLUE 벤치마크, SNLI의 8개 작업 및 기타 인기 있는 6개의 문장 분류 작업(SST-5, MR, CR, MPQA, Subj, TREC)을 포함하여 8개의 단일 문장 및 7개의 문장 쌍 영어 작업에 대해 체계적인 연구를 수행합니다. .
- 모든 데이터 세트 세부 정보는 부록 B에 제공됩니다.
- 단일 문장 작업의 경우 목표는 영화 리뷰가 긍정적인지 여부와 같이 입력 문장 xin = x1을 기반으로 예측하는 것입니다.
- 문장 쌍 작업의 경우 목표는 한 쌍의 입력 문장 xin = (x1, x2)를 가져와서 이들 사이의 관계를 예측하는 것입니다.
- 또한 입력 <S1>을 또는 (<S1>, <S2>)로 바꿔서 참조합니다.
- 우리는 파일럿 실험과 모델 개발을 위해 주로 SST-2와 SNLI를 사용하므로 최소한 우리가 평가하는 다른 모든 데이터 세트에 대해 진정한 퓨샷 설정에 가깝습니다.
- Evaluation protocol.
- 적은 횟수의 성능을 체계적으로 평가하는 것은 까다로울 수 있습니다.
- 작은 데이터 세트에 대한 미세 조정은 불안정성으로 인해 어려움을 겪을 수 있으며 새로운 데이터 분할이 주어지면 결과가 크게 변경될 수 있다는 것은 잘 알려져 있습니다.
- 이를 설명하기 위해 5 different randomly sampled Dtrain and Ddev splits에 대한 평균 성능을 측정합니다.
- 이 문제는 Schick과 Schutze에서도 논의되었습니다.
- 그들은 고정된 훈련 예제 세트를 사용할 것을 제안합니다.
- 우리는 multiple splits을 샘플링하는 것이 더 강력한 성능 측정과 분산 추정치를 제공한다고 주장합니다.
- 우리는 또한 하이퍼파라미터가 상당한 차이를 만들 수 있다는 것을 관찰했습니다.
- 따라서 각 데이터 샘플에 대해 여러 하이퍼파라미터를 스위핑하고 해당 샘플의 Ddev에서 측정된 최상의 설정을 취합니다(부록 C.1 참조).
4 Prompt-based Fine-tuning
- 마스킹된 언어 모델 L이 주어지면 먼저 입력 xin을 토큰 시퀀스 $\tilde{x}$로 변환하고 언어 모델 L은 x~를 hidden vectors 시퀀스 {hk ∈ R^d}에 매핑합니다.
- standard finetuning 중에 일반적으로 $\tilde{x}_{single}$ = [CLS]x1[SEP] 또는 $\tilde{x}_{pair}$ = [CLS]x1[SEP]x2[SEP]를 사용합니다.
- label space Y을 가지는 다운스트림 분류 문제에서, 우리는 task-specific head, softmax(Wo h[CLS])을 정답 레이블의 log-probability을 최대화하도록 학습시킨다.
- 여기서 h[CLS]는 [CLS]의 hidden vector이고 Wo ∈ R^|Y|×d은 fine-tuning의 시작에서 소개된 랜덤으로 초기화된 파라미터들이다.
- 유사하게, regression task에서, 우리는 wo ∈ R^d을 소개하고 wo ·h[CLS] 와 the gold label 사이의 MSE을 최적화한다.
- 두 경우 모두 새 매개변수의 수는 상당할 수 있습니다.
- 예를 들어, 간단한 이진 분류 작업은 RoBERTa-large 모델에 대해 2,048개의 새로운 매개변수를 도입합니다.
- 주석이 달린 소량의 데이터(예: 32개의 예)에서 학습하기가 어렵습니다.
- 마지막 classification or regression layer의 weight만 학습하는것도 데이터에 비해 너무 파라미터가 많다는 것
- 이 문제를 해결하는 대체적인 접근법은 prompt-based fine-tuning이고, L은 "auto-completing" natural language prompts을 직접 처리한다.
- 예를 들어, 우리는 prompt을 가진 input x1을 사용한 binary sentiment classification task은 다음과 같이 형식화한다.
- 그리고 L은 [MASK]에 “great” (positive) or “terrible” (negative)에서 보다 적절한 것을 결정한다.
- 이제 classification 및 regression (§4.1 및 §4.2)에 대한 이 접근 방식을 공식화하고 prompt selection (§4.3)의 중요성에 대해 논의합니다.
4.1 Classification
- M: Y → V은 task label space에서 L의 vocabulary V에 있는 고유의 단어들로 mapping하는 것이다.
- 더 일반적으로, 우리는 일대다 매핑을 고려할 수 있습니다. M: Y → 2^|Y| 레이블을 단어 세트에 매핑합니다. 그러나 우리는 실험에서 유의미한 이득을 찾지 못했습니다.
- 즉, positive라고 하면, positive에 해당하는 sublabel 레이블을 매핑해서 이를 활용한다는 거 같은데.. 별 이득은 없었다?
- 그리고나서 각 xin에 대해서, x_prompt = T(xin)을 다루는 것은 masked language modeling 입력이고, 이는 하나의 [MASK] token을 포함할 것이다.
- 이 방법으로, 우리는 우리의 task을 MLM으로 간주하고, class y ∈ Y의 예측 확률을 다음과 같이 모델링한다.
- When supervised examples {(xin, y)} are available, L can be fine-tuned to minimize the cross-entropy loss.
- 이 접근 방식은 사전 훈련된 가중치 w_v를 재사용하고 새로운 매개변수를 도입하지 않는다는 점에 유의하는 것이 중요합니다.
- 또한 사전 훈련과 미세 조정 사이의 간격을 줄여서 적은 수의 시나리오에서 더 효과적입니다.
- 즉 pre-train할때, [MASK] 토큰을 맞추기 위해 w_v가 학습된다.
- w_v는 vocab에 있는 token들의 차원으로 project 시키는 매핑 매트릭스라고 보면된다.
- fine-tune할때도, word 자체를 예측하도록 학습하기 때문에 w_v가 재사용된다고 하는 것이다.
- 이 때 [MASK] 토큰은 모든 vocab의 word가 될 수 있으나, 여기서는 Y label space의 word들에 대해서만 softmax을 시킨 확률을 계산한다.
4.2 Regression
- 우리는 classification에서 동일한 베이식 셋업을 가정하나, label space Y을 bounded interval [vl, vu]로 취급한다.
- Mettes에서 영감을 받아, 우리는 문제를 각각 vl 및 vu 값으로 두 개의 반대 극 {yl , yu} 사이의 interpolation으로 모델링합니다.
- 예를 들어, 우리는 우리의 이전 sentiment analysis task을 [0, 1] 범위의 regression problem으로 형식화 할 수 있다, 여기서 우리는 “terrible” (vl = 0) and “great” (vu = 1) 사이를 슬라이드한다.
- 이 방법으로 우리는 mixture model로써 y을 표현한다
- 그런 다음 M: {yl , yu} → V를 정의하고 식 (1)과 동일한 모델 p(yu | xin)를 정의합니다.
- 추론된 p(yu | xin)와 observed mixture weight (y-vl)/(vu-vl) 사이의 KL-divergence를 최소화하기 위해 L을 미세 조정합니다.
4.3 Manual prompts: the good and the bad
- 템플릿 T와 label words M(Y)을 구축하는 것이 주요 챌린지이다.
- 우리는 이 두가지를 prompt P라고 부른다.
- 이전 연구들은 templates와 label words을 둘다 hand-craft한다, 이는 보통 domain 전문가와 trial-and-error을 요구한다.
- 테이블 1은 우리의 실험들에서 각 데이터세트에서 선택된 manual templates와 label words을 요약한다.
- 이러한 templates과 label words는 직관에 의해, 그리고 이전 문헌에서 사용된 형식을 고려하여 설계되었습니다.
- 좋은 템플릿 또는 레이블 단어를 구성하는 요소를 더 잘 이해하기 위해 SST-2 및 SNLI에 대한 파일럿 연구를 수행합니다.
- Table 2 shows that different prompts can lead to substantial differences in final accuracy.
- 여기서 positive/negative인데 cat/dog 이런식으로 이상한 words을 줘서 학습시켜도 성능이 fine-tuning보다 좋은데?
- terrible/great 식으로 반대되는 걸 줘도 성능이 더 높다니?
- 특히 템플릿이 고정되면 레이블 단어가 "semantic classes"와 더 잘 일치할수록 최종 정확도가 더 좋아집니다 (great/terrible > good/bad > cat/dog).
- 그럴듯한 레이블 단어(예: 끔찍한/훌륭한)를 바꾸는 극단적인 경우에는 worst overall performance을 달성합니다.
- 또한 동일한 레이블 단어 집합으로 템플릿을 약간만 변경해도 차이를 만들 수 있습니다.
- 예를 들어, SNLI에서, 우리는 [MASK]을 끝에 넣거나, sentence 순서를 바꿨을 때, 우리는 10% 하락을 관측한다.
- 위의 evidence는 좋은 템플릿과 레이블 단어를 선택하는 것의 중요성을 분명히 강조합니다.
- 그러나 특히 템플릿의 경우 검색 공간이 매우 클 수 있으므로 프롬프트를 검색하는 것은 어렵습니다.
- 설상가상으로, 쉽게 과적합될 수 있는 검색을 안내하는 데 사용할 몇 가지 예만 있습니다.
- 우리는 다음에 이러한 문제를 다룰 것입니다.
5 Automatic Prompt Generation
- 우리는 이제 label words와 templates을 자동으로화 하는 프로세스를 탐구한다.
- 우리의 목표는 prompts 디자인을 요구하는 human involvement을 줄이는 것이고 우리가 수동으로 선택한 것들보다 더욱 optimal settings을 찾는 것이다.
- 여기서, 우리는 classification task로 가정을 하나, regression 프로세스도 유사하다.
5.1 Automatic selection of label words
- 우리는 먼저 어떻게 label word mapping M이 fine-tuning 이후에 D_dev에대한 정확도를 주어진 고정된 템플릿 T에서 최대화할지 연구한다.
- 여기서 templates는 default template이 있나?
- 그러나 가능한 모든 assignments을 순진하게 검색하는 것은
- (1) 검색 공간이 클래스 수에서 기하급수적이기 때문에 일반적으로 다루기 어렵습니다.
- (2) 과적합이 발생하기 쉽습니다.
- annotations이 몇 개만 주어지면 가짜 상관관계를 발견하는 경향이 있기 때문입니다.
- 간단한 솔루션으로써, 각 class c ∈ Y에 대해, 우리는 정리된 set V^c ⊂ V을 구축한다.
- V^c는 inital L을 사용한 그들의 conditional likelihood을 기반으로 top k vocabulary words이다.
- 즉 fine-tuning하기전 초기상태의 L이 봤을때 높은 top-k vocab words을 set으로 둔다?
- 다시말해, D^c_train ⊂ D_train 은 class c의 모든 예제의 부분집합이다.
- We take V^c as
- where PL denotes the output probability distribution of L.
- 검색 공간을 더 좁히기 위해 Dtrain에서 제로 샷 정확도를 최대화하는 정리된 공간에서 상위 n개의 할당을 찾습니다(n과 k는 모두 하이퍼 매개변수입니다. 부록 C.2 참조).
- 그런 다음 상위 n개의 할당을 모두 미세 조정하고 순위를 다시 지정하여 Ddev를 사용하여 가장 좋은 할당을 찾습니다.
- 이 접근 방식은 훨씬 간단한 검색 프로세스(무차별 대입)를 사용하고 순위 재지정을 적용한다는 점을 제외하면 Schick 및 Schutze의 자동 언어 검색 방법과 유사합니다.
- 즉 inital L로 n개를 찾고, 이로 fine-tuning해서 다시 top-k로 찾는 방식?
- n과 k는 부록에서 설명한다고 한다.
5.2 Automatic generation of templates
- 다음으로, 우리는 어떻게 다양한 templates {T}을 label words M(Y)의 고정된 셋으로부터 자동으로 생성할지를 연구한다.
- 이 챌린지 문제를 해결하기 위해, 우리는 T5을 사용한다. (large pre-trained text-to-text Transformer)
- T5는 입력에서 T5 mask tokens인 <X> or <Y>로 교체된 missing spans을 채우도록 spre-trained된다.
- 예를 들어, 주어진 입력이 “Thank you <X>
me to your party <Y> “<X>week”일 때, T5는 for inviting <Y> last <Z> ”을 생성하도록 학습된다. - 여기서 “for inviting”은 <X>의 대체이고, "last"는 <Y>가 대체될 것이다.
- <Z>는 머지? end token인건가?
- 이것은 prompt 생성에 매우 적합하다
- 우리는 간단히 D_train으로부터 input sentences을 취하고, T5 모델이 template T을 생성하도록 한다. (미리 정의된 토큰 수를 지정하지 않아도 됩니다.)
- 위 T5 방식대로 하면 생성될 토큰 수를 정하지 않아도 된다는 뜻 인듯
- 입력 예제 (xin, y) ∈ Dtrain가 주어졌을 때, 우리는 Tg(xin, y)로 표기한 다음의 간단한 대화를 고려한다.
- T5 모델 입력은 다음과 같이 된다.
- 그림 2에서 보여주듯이, T5 모델은 placeholders을 채우도록 한다.
- 디코딩 할 때, 우리의 목표는 output이 D_train의 모든 예제에서 잘 작동하는 출력을 찾는 것이다.
- 즉 output template T는 다음을 최대화 한다.
- 이는 다음과 같이 분해된다.
- 우리는 beam search을 사용해서 여러 개의 template 후보들을 디코딩한다.
- 구체적으로, 우리는 beam width (즉 100)을 사용해서 쉽게 다양하게 큰 templates 세트를 획듣한다.
- 우리는 그리고 나서, D_train에대해 각 생성된 템플릿으로 fine-tune하고 D_dev을 가장 좋은 성능을 달성하는 하나의 템플릿을 픽한다. (테이블 3)
- 여기서 보면, fine-tuning과 prompt-based는 기본적으로 few-shot이다.
- prompt-based가 fine-tuning보다 효과가 좋다.
- demonstration은 man과 우위가 auto 왔다갔다 한다.
- 그렇다면 auto을 쓰는게 일반적으로 사람의 리소스가 덜 들것이다.
- top k 템플릿들은 앙상블로써 사용된다. (테이블 4)
- 각 개별 템플릿에서 모델을 미세 조정하는 데 비용이 많이 드는 것처럼 보일 수 있지만 Dtrain의 크기가 작기 때문에 실제로 빠르며 완전히 자동화됩니다.
- 각 데이터 세트에 대한 프롬프트를 수동으로 조정하는 것과 비교하여 사용하기 쉽습니다.
6 Fine-tuning with Demonstrations
- In this section, we study whether we can leverage demonstrations when fine-tuning medium-sized LMs, and find better ways to exploit them.
6.1 Training examples as demonstrations
- 상황 내 학습에 대한 GPT-3의 순진한 접근 방식은 단순히 훈련 세트에서 무작위로 추출한 최대 32개의 예제와 입력을 연결하는 것입니다.
- 이 접근 방식은 다음과 같이 차선책입니다.
- (1) 사용 가능한 데모 수는 모델의 최대 입력 길이로 제한됩니다.
- (2) 서로 다른 클래스의 수많은 무작위 예제를 함께 혼합하면 특히 더 작은 모델의 경우 활용하기 어려울 수 있는 매우 긴 컨텍스트가 생성됩니다.
- 이러한 이슈들을 해결하기 위해, 우리는 간단한 솔루션을 제안한다.
- 각 training step에서 우리는 랜덤으로 하나의 $(x^{(c)}_{in}, y^{(c)}) \in D_{train}$을 각 클래스에 대해 샘플링하고, [MASK]을 가진 T(xin)으로 M(y^c)에 의해 컨버팅한다.
- 우리는 이를 $T(x^{(c)}_{in}, y^{(c)})$으로 표기하고 그들은 concatenate하여 xin에 넣는다. (그림 1c)
- 즉, 예시를 GPT3처럼 랜덤으로 뽑는게 아니라, 클래스 당 하나씩 뽑아서 concat한다.
- concat하는 예시들은 [MASK] 위치에 label word로 채워서 넣는 개념
- 학습 iteration 마다 매번 다른 demonstration 샘플들이 뽑히는 건가?
- Here ⊕ denotes concatenation of input sequences.
- training과 inference동안, 우리는 각 xin에 대해 여러 demonstration sets을 샘플링한다.
- xin 및 데모 예제는 모두 훈련 중에 동일한 세트인 Dtrain에서 샘플링됩니다.
- 테스트 시간에 우리는 여전히 모든 세트에 걸쳐 Dtrain 및 앙상블 예측에서 demonstration sets를 샘플링합니다.
6.2 Sampling similar demonstrations
- 우리는 demonstration examples {(x (c) in , y (c) )}의 구성을 제어하는 것이 좋은 최종 성능을 위해 중요하다는 것을 관찰했습니다.
- 예를 들어 대조적인 demonstrations x(c)in이 (서로서로 또는 쿼리 xin)과 완전히 다른 경우 언어 모델이 의미 있는 패턴을 해독하는 것이 어려워집니다.
- 즉 demonstration examples이 xin과 너무 달라져버리면 모델이 이해하기 어려울 것..
- 결과적으로 모델은 단순히 컨텍스트를 무시하거나 추가 예제로 인해 혼동될 수 있습니다.
- 이 문제를 해결하기 위해 의미적으로 xin에 가까운 예제만 샘플링하는 간단한 전략을 고안합니다.
- 특히 pre-trained SBERT 모델을 사용하여 모든 입력 문장에 대한 임베딩을 얻습니다 (sentence-pair tasks의 경우 두 문장의 연결을 사용함).
- 여기에서는 템플릿이 없는 원시 문장을 SBERT에 공급합니다.
- 각 쿼리 xin 및 각 레이블 c ∈ Y에 대해 레이블 x ∈ Dc_train이 있는 모든 훈련 인스턴스를 쿼리 cos(e(xin), e(x))에 대한 유사성 점수로 정렬합니다.
- 각 클래스의 상위 r = 50% 인스턴스에서 샘플만 데모로 사용합니다.
- xin과 demonstration sets의 예제들과 SBERT로 cosine similarity로 유사성 비교해서 상위 50% 인스턴스만 사용하는식
- 근데 top-1만 사용하는 것 아닌가? 어차피 각 class당 한 개의 demonstration만 사용하는 것이니까
7 Experiments
- We present our main results, and address several research questions pertaining to our LM-BFF approach.
- Implementation details are in Appendix C.
7.1 Main results
- 우리는 실험에서 RoBERTa-large 모델을 사용하고 K=16으로 세팅한다.
- 리마인드: 여기서 K는 label vocab 숫자
- RoBERTa와 BERT을 사용한 비교는 appendix D에서 찾을 수 있다.
- automatic prompt search의 경우 기본 테이블에서 automatic template search만 리포트한다 (지속적으로 가장 잘 수행됨, 표 5 참조).
- auto로 한게 성능이 떨어지지 않는다.
- 근데 하나의 테스크를 푸는 관점에선, manual 폼이 그렇게 힘들지 않으면 그냥 manual 하는게 훨씬 편할거 같은데..
- 이 코드를 돌리는 걸 알아내는것보단 ㅋㅋ
- 결과의 관점에서, 여러 baselines과 비교합니다.
- (1) standard fine-tuning in our few-shot setting;
- (2) standard fine-tuning using the full training set;
- (3) simply taking the most frequent class (measured on the full training set);
- (4) 우리가 manual prompts를 받고 훈련 예제를 사용하지 않고 "즉시 사용 가능한" L을 사용하는 prompt-based zero-shot prediction
- (5) “GPT-3” in-context learning, 동일한 prompt-based zero-shot setting을 사용하지만 무작위로 샘플링된 32개의 demonstrations 로 컨텍스트를 보강합니다 (그리고 여전히 GPT-3이 아닌 RoBERTa-large 사용).
- Single-prompt results.
- 표 3은 수동으로 설계된 프롬프트(표 1) 또는 가장 잘 생성된 프롬프트에서 단일 프롬프트를 사용한 주요 결과를 보여줍니다.
- 첫째, 프롬프트 기반 제로샷 예측은 다수 클래스보다 훨씬 더 나은 성능을 달성하여 RoBERTa에서 사전 인코딩된 지식을 보여줍니다.
- 또한 "GPT-3" 상황 내 학습이 제로샷 예측보다 항상 향상되는 것은 아닙니다.
- 작은 언어 모델은 GPT-3과 같은 기성품을 사용할 만큼 표현력이 부족하기 때문일 수 있습니다.
- 둘째, 프롬프트 기반 미세 조정은 수동 프롬프트를 사용하거나 생성된 프롬프트를 사용할 때 모두 표준 미세 조정보다 성능이 훨씬 뛰어납니다.
- CoLA는 하나의 흥미로운 예외입니다. 입력이 L의 분포를 벗어나는 비문법적 문장일 수 있기 때문입니다.
- 일반적으로 자동 검색 템플릿은 특히 강력한 수동 템플릿을 구성하는 것이 덜 직관적인 작업(예: TREC, QNLI 및 MRPC)의 경우 수동 템플릿보다 비슷하거나 더 높은 결과를 얻을 수 있습니다.
- 마지막으로 상황에 맞는 데모를 사용하면 대부분의 작업에서 일관된 이점을 얻을 수 있습니다.
- 요약하면, 자동 검색된 템플릿과 샘플링된 데모 세트로 미세 조정하는 우리의 결합된 솔루션은 표준 미세 조정에 비해 SNLI에서 30%, 평균적으로 11% 이득을 달성합니다.
- Ensemble results.
- 자동 프롬프트 검색의 장점은 원하는 만큼 프롬프트를 생성하고 개별 모델을 훈련하며 대규모 앙상블을 생성할 수 있다는 것입니다.
- PET(Schick and Schutze ¨, 2021a,b)도 수동 프롬프트로 훈련된 여러 모델을 앙상블합니다.
- 표 4에서는 검색된 프롬프트와 MNLI 및 RTE(우리가 공통으로 평가하는 두 개의 데이터 세트)에 대한 PET의 수동 프롬프트를 직접 비교합니다.
- 결과에서 알 수 있듯이 여러 템플릿이 있는 앙상블은 항상 성능을 향상시킵니다.
- 동일한 수의 자동 템플릿의 앙상블은 PET의 수동 프롬프트의 앙상블과 비슷하거나 더 나은 성능을 달성합니다.
- 자동 템플릿의 수를 늘리면 더 많은 이점을 얻을 수 있습니다.
7.2 Analysis of generated prompts
- 표 5는 수동 프롬프트와 자동 프롬프트를 사용한 결과를 보여줍니다.
- 자동 프롬프트의 경우 템플릿 검색(Auto T), 레이블 단어 검색(Auto L) 및 수동 레이블 단어에서 시작하여 Auto T를 적용한 다음 Auto L을 적용하는 공동 변형(Auto T + L)을 비교합니다.
- 대부분의 경우 Auto T는 수동보다 비슷하거나 더 높은 성능을 달성하며 일관되게 최고의 변형입니다.
- Auto L은 TREC 및 MRPC에서 수동 프롬프트보다 성능이 우수하지만 SNLI에서는 훨씬 더 나쁩니다.
- Auto T + L은 종종 Auto L보다 낫지만 때로는 Auto T보다 낫습니다.
- 표 6은 Auto T 및 Auto L의 예를 보여줍니다(부록 E의 전체 목록).
- Auto T 템플릿은 일반적으로 컨텍스트 및 레이블 단어에 잘 맞지만 편향된 특성을 포함할 수 있습니다(예: SNLI의 "{Yes/No}, no").
- Auto L 단어의 경우 모든 것이 혼합되어 있습니다.
- 대부분이 직관적으로 합리적으로 보이지만 일부 신비한 이상이 있습니다(예: SNLI의 "entailment" 클래스에 대한 "Hi").
7.3 Analysis of demonstration sampling
- 표 7은 SBERT에 의한 선택적 샘플링과 균일 샘플링을 사용한 시연의 성능을 비교합니다.
- 우리는 SBERT가 SNLI 및 MNLI 데이터 세트에 대해 훈련되었음을 인정하므로 RoBERTa-large에서 숨겨진 표현의 평균 풀링을 사용하여 간단한 문장 인코더도 시도했습니다.
- 두 경우 모두 선택적 샘플링을 사용하는 것이 균일한 샘플링보다 성능이 우수하며 컨텍스트에서 데모를 통합하기 위해 유사한 예제를 샘플링하는 것이 중요함을 강조합니다.
7.4 Sample efficiency
- 그림 3은 K가 증가함에 따라 표준 미세 조정과 LM-BFF가 어떻게 비교되는지 보여줍니다.
- SST-2(표 3의 MR, CR 및 MPQA 참조)와 같은 간단한 작업의 경우, 총 32개의 예제만 사용했음에도 불구하고 LMBFF는 이미 성능을 거의 포화 상태였으며 전체 데이터 세트에 대한 표준 미세 조정과 비슷합니다.
- SNLI의 더 어려운 작업에서 LMBFF는 K가 증가함에 따라 계속해서 향상되는 동시에 두 가지가 K = 256 주위에 수렴할 때까지 표준 미세 조정에 대한 성능 격차를 유지합니다.
- 이 결과만 보면 데이터가 많으면 굳이 prompt-based 학습할 필요는 없어 보인다.
- few-shot 정도에선 데이터가 적어도 효과적으로 학습이 가능해보임.
- 물론 이 논문에서 말하길 이 때 어떤 shot examples을 사용할지가 중요함
8 Discussion
- NLP 작업을 MLM으로 재구성하는 것은 소수 학습에 흥미로운 의미를 가지지만 제한 사항도 있습니다.
- 첫째, LM-BFF가 표준 미세 조정을 크게 능가하는 반면, 표 3은 특히 어려운 작업의 경우 수천 가지 예를 통해 전반적으로 성능이 여전히 미세 조정보다 상당히 뒤떨어져 있음을 보여줍니다.
- 또한 표준 미세 조정과 마찬가지로 결과에도 높은 편차가 발생합니다.
- §2에 설명된 대로 몇 가지 최근 연구에서 몇 차례 미세 조정의 불안정성을 해결하려고 시도했으며 이러한 방법이 여기에서도 도움이 될 것으로 기대합니다.
- 자동 프롬프트 생성과 관련하여 그 효과에도 불구하고 우리는 여전히 검색 공간을 확장하거나 약 32개의 예를 기반으로 잘 일반화하는 것이 실질적으로 어렵다는 것을 알았습니다.
- 이것은 부분적으로 수동 템플릿(라벨 단어 검색용) 또는 수동 라벨 단어(템플릿 검색용)와 같은 일부 수동 디자인에 대한 의존도가 높기 때문입니다.
- 이것은 우리가 우리의 검색을 시작하게 해주지만, 우리가 이미 상상했을 수도 있는 검색 공간의 영역으로 편향되기도 합니다.
- 마지막으로 LM-BFF가 다음과 같은 특정 작업을 선호한다는 것을 명확히 하는 것이 중요합니다.
- (1) 자연스럽게 "빈칸 채우기" 문제로 제기될 수 있습니다.
- (2) 상대적으로 짧은 입력 시퀀스를 가지고 있습니다. 그리고
- (3) 많은 출력 클래스를 포함하지 않습니다.
- 문제 (2)와 (3)은 더 긴 맥락의 언어 모델로 개선될 수 있습니다(예: Beltagy et al., 2020).
- 구조화된 예측과 같이 프롬프팅에서 공식화하기 쉽지 않은 작업의 경우 문제 (1)이 더 근본적입니다.
- 향후 작업에 대한 미해결 질문으로 남겨둡니다.
9 Conclusion
- 이 논문에서, 우리는 LM-BFF을 소개하고, 이는 few-shot 예제로 fine-tuning LMs을 위해 간단하지만 효과적인 테크닉이다.
- 우리의 접근법은
- (1) 자동으로 찾은 prompts으로 prompt-based fine-tuning한다.
- (2) 선택된 task demonstrations을 (학습 예제) 입력 컨텍스트의 부분으로 포함한다.
- 우리는 우리의 방법이 기본적인 fine-tuning을 30% 가까이 향상시킴을 보여준다. (평균 11%)
- 우리는 우리의 접근법에 대해 토론하고, 추후 연구의 open questions을 던진다.
Reference
댓글
댓글 쓰기