파인튜닝의 경우 전체 LM(언어모델)의 파라미터를 수정해야 하며 새로운 태스크를 학습함에 있어서 기존 모델의 전체 copy를 필요로 함
하지만 Prefix-Tuning은 LM의 파라미터는 freeze, 즉 고정시키고 prefix라고 불리는 작은 연속적인 태스크 특화 벡터(continuous task-specific vector)를 최적화
뒤따라오는 토큰들이 prefix를 attend할 수 있도록 함
NLG(natural language generation), 즉 자연어 생성 태스크에서 파인튜닝에 비해 오직 0.1%의 파라미터만 학습하면서도 파인튜닝과 맞먹는, 학습데이터가 적을 때에는 파인튜닝보다 더 좋은 성능을 달성
이전 연구
GPT-3의 in-context learning 이후 사전학습된 모델의 파라미터를 고정시킨 채, 파인튜닝보다 더 가벼우면서도 비슷한 성능을 낼 수 있는 방법에 대한 연구가 활발히 이루어짐
In-context learning은 사람이 작성한(고안한) prompt를 사용
사람이 직접 수동으로(manual) 작성했기 때문에 어떻게 작성하느냐에 따라 성능이 크게 달라짐
하지만 인간이 이해하는 바와 기계가 이해하는 바가 다르기 때문에, 어떻게 프롬프트를 작성해야 모델로부터 좋은 아웃풋을 얻을 수 있는지는 여전히 연구 대상
context window (허용 가능한 인풋 길이)보다 더 큰 학습 데이터셋을 이용할 수 없다는 한계
이러한 한계를 극복하고자 사람이 자연어로 작성한 프롬프트를 사용하는 게 아니라 자동으로 discrete, 즉 자연어로 구성된 프롬프트를 찾으려는 연구도 진행됨
AutoPrompt가 그 중 하나
이는 일련의 discrete trigger words(일종의 자연어 프롬프트)를 각각의 인풋 앞에 붙여 사용하는 방식을 취함
Prefix Tuning
Prefix Tuning은 이전의 연구에서 더 나아가, 인풋의 앞에 prefix, 즉 일련의 연속적인 태스크 특화 벡터(a sequence of continuous task-specific vectors)를 붙이는 방식
prefix 뒤에 이어지는 토큰들은 앞에 나온 prefix를 일련의 가상의 토큰인 것처럼 attend
prefix는 prompt와는 다르게 실제 토큰(=자연어 단어)과 대응되지 않는 free parameter
다시 말해, prefix tuning은 별개의 개별적인 토큰(=단어)들의 최적의 집합을 만드는 게 아님
연속적인 단어의 임베딩(=숫자로 표현된 단어의 특성)을 최적화하는 데에 초점
optimize instruction as continuous word embeddings, whose effects will be propagated upward to all Transformer activation layers and rightward to subsequent tokens.
Prefix는 언제나 인풋의 왼쪽에 위치하기 때문에, 모든 트랜스포머의 activation 레이어와 오른쪽에 뒤이어 나오는 토큰들에 영향을 줄 수 있음
prefix tuning의 가장 큰 장점은 NLG(자연어 생성) 태스크에서 LM(언어모델)의 파라미터 변경 없이도 모델이 적절한 컨텍스트를 취하도록 할 수 있다는 점
예를 들어 "오바마"라는 단어를 언어모델이 생성하도록 만들고 싶다고 가정
이를 위해 컨텍스트로 "버락"이라는 common collocation(연어; 함께 자주 결합되어 사용되는 단어)을 prepend하면 모델은 컨텍스트에 적합한 단어에 더 높은 확률값을 할당
이러한 아이디어에서 출발해 prefix tuning은 downstream LM을 바람직한 방향으로 가이드할 수 있는 upstream prefix(연속적인 벡터)를 최적의 방향으로 학습
"버락"이라는 단어는 discrete한 예시라고 볼 수 있지만, 이와 비슷한 맥락(컨텍스트)을 가진 최적의 연속적인 벡터를 학습하는 것이 바로 prefix tuning의 지향점
prefix tuning은 modular한 특성을 가짐
이를 통해 personalization(개인화)가 가능
즉 각각의 사용자에 별개의 prefix를 사용하여 한 번의 배치에서 여러 명의 사용자/태스크를 처리할 수 있음
성능비교 (결과)
table-to-text, summarization 등의 NLG 태스크 수행
table-to-text의 경우 E2E, WebNLG, DART 데이터 사용, 파인튜닝과 유사한 성능
summarization task에서는 XSUM 데이터를 사용, 파인튜닝보단 약간 떨어지는 성능
데이터가 적을 시에는 두 가지 태스크에 대해 prefix-tuning이 모두 파인튜닝보다 좋은 성능을 보임
P-tuning 논문에서는 학습이 가능한 연속적인 프롬프트 임베딩(trainable continuous prompt embeddings)을 통해, NLU에서 GPT가 BERT만큼, 혹은 그보다 더 나은 성능을 낼 수 있다고 주장
이전 연구
언어모델은 사전학습을 통해 contextualized text representation, grammar, syntactic, commonsence, world knowledge 등을 배운다고 알려짐
즉 문맥이 담고 있는 언어의 정보나 의미론적, 문법적 특성을 배울뿐만 아니라 그 속에 담긴 일반상식이나 세상에 대한 지식까지도 학습
GPT-3는 이렇듯 일방향으로 학습한(uni-directional) 언어모델이 적절한 manual prompt(손으로 작성한 프롬프트)와 결합하면, 언어모델이 갖고 있는 이런 풍성한 정보들을 활용할 수 있다는 것을 증명
하지만 사람이 작성한 프롬프트는 효과적일 수도 있지만 최적의 성능을 내지 못할 수 있으며, 노동집약적
성능은 프롬프트의 의미, 형식, 문법(semantic, format, grammar)과 명확한 상관관계를 가지지 않기 때문
즉, 사람이 생각했을 때 합리적인 프롬프트가 반드시 언어 모델에 효과적인 것은 아님
또한 손으로 작성한 프롬프트에 적용된 마이너한 변화가 굉장히 큰 성능 차이를 야기
이를 해결하기 위해 자동으로 discrete prompt (별개의 자연어 토큰으로 이루어진 프롬프트)를 찾아보려는 연구들이 이루어짐
P-tuning은 여기서 더 나아가 GPT와 NLU 사이의 갭을 메우기 위해 연속적인 공간에서 자동으로 프롬프트를 찾고자 함
automatically search prompts in the continuous space to bridge the gap between GPT and NLU applications
P-tuning
P-tuning은 사전학습된 LM(언어모델)에 인풋으로 프롬프트 역할을 하는 연속적인 파라미터를 사용
discrete prompt searching의 대안으로 gradient descent를 통해 이러한 연속적인 프롬프트를 최적화
leverages few continuous parameters to serve as prompts fed as the input to the pre-trained LM. then optimize the contiuous prompts using gradient descent as an alternative to discrete prompt searching.
Gradient Descent란 딥러닝에서 예측값과 실제 정답 사이의 오차를 최소화하고 최적화된 가중치를 학습하기 위해 사용되는 방법
practical하게 많이 사용하는 Adam 등의 대부분의 optimizer들은 다 Gradient Descent 방법에 그 뿌리를 두고 있음
파란색으로 표시된 Britain이 context, 빨간색으로 표시된 [MASK]가 target, 나머지 노란색 부분이 prompt token
P-tuning에서는 pseudo prompt와 prompt encoder가 미분가능한 방법으로 최적화
다시 말해, discrete하게 접근하는 것이 아니라, 딥러닝의 기본을 이루는 gradient descent와 back propagation을 통해 trainable embedding tensor를 가정하고 더 나은 연속적인 프롬프트를 찾을 수 있도록 함
non-invasive modification to the input. replaces the input embeddings of pre-trained LM with its differential output embeddings
이러한 연속적인 토큰에 "수도(capital)"와 같은 태스크와 관련된 앵커 토큰(task-related anchor token)을 추가하면 성능이 더욱 향상
P-tuning의 challenge: 최적화 문제
단순히 보자면 gradient descent와 back-propagation이라는 쉬운 방법을 적용한 것처럼 보이지만, P-tuning을 적용하기 위해선 해결해야 할 두 가지 문제가 존재
1) discreteness
사전학습 이후에 원래의 워드 임베딩이 이미 굉장히 discrete한 상태이기 때문에, 학습 대상인 h(trainable embedding tensor)를 랜덤하게 초기화한 이후에 SGD로 최적화를 시키면 local minima에 빠지게 됨
모델이 최적의 성능을 내기 위해서는 global minima, 즉 전체 공간을 모두 통틀어서 봤을 때 오차가 가장 작은 값에 도달해야 하는데, local minima는 일부 공간에서의 최소값이기 때문에 여기에 빠지게 되면 global minima를 달성하기 어려움
2) association
연속적인 프롬프트를 위해서는 prompt embedding이 독립적이지 않고 서로 의존적(dependent)이어야
이 두 개의 문제를 해결하기 위해 이 논문에서는 h라는 학습 가능한 임베딩 텐서를 굉장히 작고 가벼운 뉴럴 네트워크로 만들어진 프롬프트 인코더를 이용해 학습
model the h as a sequence using a prompt encoder consists of a very lite neural network
이 뉴럴 네트워크는 LSTM과 ReLU activation으로 이루어진 two-layer perceptron
이러한 프롬프트 인코딩의 결과로 나온 output embedding h를 사용하고 LSTM의 head는 버림
성능비교 (결과)
P-tuning은 벤치마크 데이터로 LAMA와 SuperGLUE를 사용
LAMA의 경우 knowledge probing(지식 조사) 태스크에 사용
예를 들어서 (Dante, born-in, Florence)라는 triple을 cloze 문장으로 변환해 ("Dante was born in [MASK]") 언어모델에게 target을 추론하게 함
이런 경우 fine-tuning 기반의 방법보다 P-tuning이 비슷한 성능을 보이거나 더 좋은 성능을 보임
이러한 결과에 대해 논문은 fine-tuning의 경우 언어모델의 파라미터를 변경함으로써 중요한 정보를 잊어버릴 가능성이 존재하나, P-tuning의 경우 파라미터의 변경 없이 단지 프롬프트를 통해 언어모델이 갖고 있는 정보를 더 잘 가져올 수 있다고 설명
P-tuning은 초기의 프롬프트 임베딩을 패턴 내의 다른 위치에 넣고 사전학습된 모델과 함께 프롬프트 임베딩을 파인튜닝
P-tuning puts initial prompt embeddings in different positions within patterns and then finetunes the prompt embeddings together with the pretrained models.
이러한 경우, P-tuning과 GPT2를 합친 모델이 기존 자연어이해 태스크에 더 강점을 가지고 있다고 알려진 BERT 기반 모델들보다 비슷하거나 더 뛰어난 성능
특히 P-tuning은 low-resource setting, 즉 데이터 등이 부족한 상황에서 더 좋은 성능을 보임
하지만 WiC와 같이 cloze question의 형태로 만들 수 없는 태스트들의 경우 파인튜닝이 더 좋은 성능
Prefix tuning VS P-tuning
비슷한 시기에 비슷한 아이디어를 기반으로 나온 논문들
이 논문에서는 먼저 나온 Prefix tuning과 자신의 P-tuning이 어떻게 다른지를 정리
prefix tuning
NLG(자연어생성), GPT를 위해 고안
프롬프트 토큰을 인풋 시퀀스의 앞에 붙여야 함
continuous prompt token(연속적인 프롬프트 토큰)을 트랜스포머의 모든 레이어에 concat
p-tuning
NLU(자연어이해), 모든 종류의 언어모델을 위해 고안
토큰을 어느 위치에든 삽입할 수 있음
continuous prompt token을 인풋에만 붙여도 됨
어떻게 anchor prompt를 사용할 수 있을지 소개
의의
P-tuning과 함께라면 GPT 또한 NLU 과제 수행 가능
few-shot, fully-supervised 환경에서 GPT, BERT의 성능 향상에 모두 일조 (general method)
fine-tuning없이 단순히 더 나은 프롬프트를 찾는 것만으로도 언어모델이 갖고 있는 풍부한 지식을 활용할 수 있음
특히 P-tuning은 사전학습된 모델의 파라미터들을 변경시키지 않고 단지 더 나은 연속적인 프롬프트를 찾는 것만으로 저장된 지식을 가져올 수 있음
더욱 적은 hand-craft(수작업)로 더욱 좋은 성능의 프롬프트를 자동으로 찾을 수 있음
P-tuning v2 (P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks)