괴물 언어모델 GPT-1에서 더 강력해진 GPT-2 파헤치기
1. 기본적인 특징
GPT-1에서 발전된 형태
‘Just a really big transformer’
특별한 구조 변경없이 transformer self attention block을 더욱 쌓아올려 모델 크기를 키웠다
pre-train task로 주어진 text의 다음 단어를 맞추는 language modeling
“language model은 model의 구조나 parameter를 변경하지 않고도 zero shot setting에서 downstream task를 수행할 수 있다.”
정확히 말하면 훈련 시 다양한 스킬이나 패턴을 인식하는 방법을 학습함으로써 추론 시 downstream task에 빠르게 적응하도록 하는 방법이다.
GPT-2에서는 이러한 방법을 "in-context learning" 방식으로 진행했는데, 사전학습 모델에 풀고자 하는 task를 text input으로 넣는 방식이다.
하나의 문단이 주어지면 다음 단락도 써내려가는 놀라운 능력을 보여줬다.
나도 읽어봤는데 괜찮은데?
2. motivation
일반적으로 주어진 문장 I love this movie가 긍정인지 부정인지 예측하려면 <CLS> token을 이용해 binary classification을 했다.
How are you?에 대응하는 대화 시스템을 만들 때는 질문을 모두 읽어 이해한 뒤에 다음 단어를 차례대로 생성하는 language modeling을 활용
기본적으로 NLP task들은 task에 따라 모델 구조들이 위와 같이 상이했다.
‘The Natural Language Decathlon: Multitask Learning as Question Answering’에서 “모든 종류의 자연어 처리 task들은 질의응답 형태로 바꿀 수 있다” 는 가능성을 제시하고 다양한 NLP task를 QnA형태로 학습 연구한 사례들을 제시했다
예를 들어 i love this movie. 가 긍정인지 부정인지 예측하는 task는
저 문장을 준 뒤에 what do you think about this document in terms of positive or negative sentiment? 질문 혹은 do you think whether this sentence is positive or negative?에 대한 대답을 생성하라는 task와 같다.
문단에 대한 요약 문제도 문단을 준 뒤에 what is the summarization of the paragraph?라는 질문에 대한 대답을 생성하라는 task로 바꿀 수 있다.
번역 문제도 마찬가지다. ‘i love you’라는 문장을 주고 what is the translation in korean?이라고 물어보고 답을 생성하라고 시키는 문제와 같다.
3. dataset의 선정
train data로 40GB의 대용량 데이터
train dataset의 quality를 높여 효과적으로 지식을 학습하고자 했다.
reddit에 질문을 하면 각종 답이 나올텐데 그 중 외부링크가 포함된 답이 있을 수 있다.
특히 대답이 높은 득표(high karma)를 받았다면 주어진 외부 링크가 잘 쓰여진 글이라고 생각하여 투표를 했을 것이기 때문에 그런 데이터를 위주로 모았다.
3 karma로 기준을 잡았다는데 3 karma는 받기 힘든가???
4. preprocessing
BERT의 word piece embedding처럼 Byte pair encoding 알고리즘을 이용하여 subword 수준에서 vocabulary를 구축하여 전처리를 수행
5. model의 구조적 특징
layer normalization의 위치를 옮겼다. 각 block의 input으로 옮기고, 마지막 self attention block 이후에 layer normalization을 추가했다.
residual layer의 수 N에 따라 layer의 가중치를 $\frac{1}{\sqrt{N}}$로 scaling한 weight initialization을 했다?
layer의 index에 반비례하여 layer가 위층으로 갈수록 layer weight initialization을 작게하여 영향력을 감소시켰다고????
A modified initialization which accounts for the accumulation on the residual path with model depth is used. We scale the weights of residual layers at initialization by a factor of 1/ √ N where N is the number of residual layers
모델의 깊이에 따라 residual path에 누적하여 사용할 수 있는 변형된 가중치 초기화방법을 사용했다.
어떤 특정 layer까지 도달할때 거쳐간 layer의 수가 N인것 같고 그러한 N에 반비례해서 각 layer의 가중치를 초기화하겠다.
그러니까 상단 layer의 초기화 가중치는 적게 주어 영향력을 줄이겠다는 것이다.
5. Conversation Question Answering dataset
7개의 주제를 가지는 document에 대한 질의응답 데이터
모든 NLP task를 QnA로 바꿀 수 있다는 점에 착안하여 CoQA로부터 task를 수행
그러나 특이한 점은 대용량의 데이터로 pre-train후 해당 데이터로 fine-tune하는 과정을 거쳐 수행하는 것이 일반적인데 GPT-2는 Zero shot setting으로도 실험을 해보았다.
pre-train을 한 GPT-2를 supervised training없이 바로 task에 실험해보았다는 의미다.
Fine tune BERT가 89 F1 score를 받은 것에 비해 Zero shot setting GPT-2는 59 F1 score를 받았다. 물론 성능이 떨어지지만 어느정도 기대이상의 가능성을 보여주었다.
6. summarization
CNN and Daily mail dataset을 이용하여 GPT-2로 summarization 성능을 실험해보았다.
너무 길어서 읽어보진 않았는데 잘 했겠지
주어진 text 뒤에 TL;DR이라는 token으로 summarization을 유도했다.
text를 읽어가고 TL;DR이라는 token을 만나면 그 뒤부터 100 token summarization을 시도하는 것이다.
task hint를 주냐 안주냐가 성능에 의미있게 차이를 주는 모양
GPT-2’s performance drops by 6.4 points on the aggregate metric when the task hint is removed which demonstrates the ability to invoke task specific behavior in a language model with natural language.
generation과정에서 Top-k random sampling(beam search말하는 듯?)을 사용했다고 한다. k=2에서 greedy decoding보다 더욱 추상적인 요약을 잘했다고 한다.
7. translation
이번엔 주어진 언어에서 다른 언어로의 번역 성능을 알아보고 싶은 것이다.
In order to help it infer that this is the desired task, we condition the language model on a context of example pairs of the format english sentence = french sentence and then after a final prompt of english sentence = we sample from the model with greedy decoding and use the first generated sentence as the translation.
(영어문장)~(프랑스어 문장)으로 학습을하고나서 test과정에서 (영어문장)만 주고 in French 뒤부터 생성하는 문장을 번역문장으로 보겠다는 것이다.
여러가지 실험에서 기존 모형에 비해 떨어지는 성능을 보였지만 기대이상이었다???라고 논문에서 말하는 것같은데 zero shot setting도 아닌것 같은데 왜지?
정확히는 학습 데이터에 task description을 주냐 안주냐에 따른 in-context learning이라고 언급했다.
참조
https://littlefoxdiary.tistory.com/44
https://paperswithcode.com/method/gpt-2
'딥러닝 > NLP' 카테고리의 다른 글
BERT의 Transfer learning 활용 예시 알아보기 (0) | 2022.10.25 |
---|---|
현대 NLP 모델의 근간이 되는 BERT의 기본적인 특징 (0) | 2022.10.24 |
NLP의 transfer learning 기본 개념(zero shot, one shot, few shot) 익히기 (0) | 2022.10.20 |
NLP의 최신 트렌드 - GPT-1 파헤치기 (0) | 2022.06.28 |
transformer의 마지막 encoder-decoder multi head attention (0) | 2022.05.18 |