NLP

GPT-1 [Improving Language Understanding by Generative Pre-Training] - 논문리뷰

김다응 2022. 7. 7. 17:10
728x90

 

GPT-1[논문리뷰].pdf
0.52MB

[GPT-1] Improving Language Understanding by Generative Pre-Training

 

Introduction

원시 텍스트에서 학습

  • 지도 학습에 대한 의존성을 완화 시켜야 raw text 에서 학습을 하는 능력이 향상됩니다.
  • 대부분의 딥러닝에는 상당한 양의 라벨링된 데이터가 필요하기 때문입니다.
  • 이런 unsupervised learning 이 시간과 비용은 많이 들지만 상당한 성능 향상을 가지고 있습니다.
  1. 라벨링이 안된 데이터단어 수준 이상의 정보를 활용하기 어렵다.
  • 어떤 optimization objectives 가 text representations 를 학습할 때에 제일 효과적인지 알기 어렵습니다.
  • 학습된 표현을 target task 로 전달하는 효과적인 방법에 대한 합의가 없습니다.
  1. semi-supervised

unsupervised pre-training 이라는 과정과 supervised fine-tuning 이라는 과정의 조합을 통해서 semi supervised 의 접근법을 탐구합니다.

목표는 광범위한 task 에서 최소한의 adaptation을 통해 전달되는 보편적인 표현을 학습하는 것입니다.

 

Related Work

  1. Semi-supervised learning for NLP

해당 논문에서의 연구는 NLP를 위한 semi-supervised learning 에 폭넓게 포함됩니다.

이 기술은 sequence labeling 이나 text classification 과 같은 작업에 적용되면서 상당한 관심을 끌었습니다.

초기 연구에는 labeling 되지 않은 data 의 단어 수준이나 구문 수준의 통계를 계산하였고 이것을 supervised model 에 feature 들로 사용하였습니다.

지난 몇 년 동안 연구자들이 unlabeled corpora 에 대해 학습된 word embedding 을 사용하여 다양한 작업 성능을 향상을 입증해왔지만

그것은 주로 단어 수준의 정보만을 전달하였습니다.

GPT-1 에서의 목적은 그 이상을 달성하는 것입니다.

 

 

  1. Unsupervised pre-training

Unsupervised pre-training 은 위에서 언급한 Supervised learning의 최적화 목표를 수정하는 좋은 initialization point를 찾는 것이 목표인 Semi-supervised learning 의 특별한 점입니다.

이미지 분류와 회귀에서 이 기법의 사용을 적용해보았습니다.

후속 연구에서는 이 Unsupervised pre-training정규화 역할을 한다는 것을 확인하였고 DNN 의 더 나은 generalization를 가능하게 한다는 것을 입증하였습니다.

최근 연구에서는 image classification, speech recognition, entity disambiguation, machine translation 등과 같은 다양한 task에서 신경망을 훈련시키는데 도움이 되게 사용했다고 합니다.

 

 

  1. Auxiliary training objectives

auxiliary unsupervised training objectives 를 추가하는 것은 semi-supervised learning의 대안 형태입니다. 초기의 연구에서는 다양한 auxiliary NLP 테스크를 사용해 semantic role labeling 을 향상시켰으며 더 최근에 와서는 auxiliary language modeling object 를 target task objective 에 추가하면서 sequnce labeling 에 있어 성능 향상을 입증했다고 합니다.

논문의 실험에서도 auxiliary objective 를 사용하지만

unsupervised pre-training 은 이미 target task 와 관련된 여러가지 언어적 측면을 학습하게 됩니다.

 

Framework

training 은 두개의 stage 로 구성됩니다.

첫번째는 Languge model 을 대규모의 text corpus 에서 학습시킵니다.

두번째로 fine-tuning 단계를 거쳐 labeled data를 사용해서 모델을 discriminative task 에 적응시킵니다.

 

 

  1. Unsupervised pre-training

unsupervised pre-training 에서는 토큰이 주어지면 standard language modeling 목적함수로 쓰이고 likelihood 을 최대화 시키려고 합니다.

(즉, Ui 이전 단어들을 통해 Ui 번째 단어를 예측하는 것을 최대화 하는 것입니다.)

  • k 는 context window 의 크기
  • 조건부 확률 P 는 parameter Θ 를 가진 신경망을 사용해 훈련됨
  • parameter 들은 경사 하강법을 사용해 훈련됨

논문의 실험에서 transformer 의 변형인 multi layer transformer decoder 를 언어모델에 사용하고

이 모델은 multi-headed self-attention operationinput context token 에 대해 적용하였고

position-wise feedforward layer 를 통해 target token 에 대한 출력 분포를 생성하였습니다. (F.C 모델이지만 Position 마다 개별단어에 적용되기 때문에 position wise feedforward 라고 합니다.)

  • U = (ui-k , ... , ui-1) 은 token 에 대한 context vector
  • n 은 레이어 수
  • We 는 token embedding matrix
  • Wp 는 position embedding matrix

 

 

  1. Supervised fine-tuning

앞 절의 unsupervised pre-training 의 과정 이후 supervised fine-tuning 의 단계를 진행하게 됩니다.

labeled 된 dataset C 를 가정하고 각 인스턴스는 label y 와 함께 x1, ... , xm 과 같은 input token 의 sequence 로 이루어집니다.

input 은 전 단계인 unsupervised pretraining 을 통해 전달되고 transformer 구조의 마지막 블록의 activation 값 h를 얻게 됩니다.

y 를 예측하기 위해 파라미터 Wy 를 가진 추가된 linear output layer 를 사용합니다.

위의 정의에 따라서 아래의 목표함수를 최대화하도록 합니다.

목표함수는 x 의 input seq 가 주어졌을때 y 를 예측하는 확률을 최대화 하도록 하는 것입니다.


Language modeling 은 auxiliary objective 를 포함시키는 것이

  1. supervised model 에서 generalization 를 개선합니다.
  2. 수렴을 가속화 함으로써 학습에 도움이 된다는 것을 발견하였습니다.

논문의 실험에서도 auxiliary objective 를 사용하였고 성능을 높일 수 있었습니다.


최종적으로는 아래의 objective 를 optimize 하게 됩니다.

L2 는 supervised model 에서 labeled dataset 에 대한 것이고

L1 은 unsupervised model 에 대한 것입니다. weight 를 적용하여 이 람다를 가중치로 두어 optimize 한다고 가정합니다.

전체적으로는 fine tuning 단계에서 필요한 추가 매개 변수는 Wy 와 delimiter token 에 대한 embedding 뿐입니다.


  1. 전체 구조

왼쪽은 한개의 Transformer 구조이고 목표함수를 학습시키기 위해 사용하고 있습니다.

오른쪽은 각각 다른 task 들에 대해 pretrained model 에 linear layer 를 추가하여 fine tuning 을 진행하는 과정입니다.

모든 input 들은 token sequences 로 바꾸어 처리합니다. pre-trained model 에 의해 처리될 sequence 와 linear + softmax 레이어가 붙게 됩니다.


  1. Task-specific input transformations

Textual entailment

entailment task 를 위해서 전체 (premise) p 와 가설 (hypothesis) h 토큰을 구분 기호 토큰 ($) 와 연결합니다.

Similarity

유사성을 비교하는 작업에서 두 문장은 고유한 순서가 없습니다.

때문에 가능한 문장 순서 (구분 기호 토큰을 포함)를 모두 포함하도록 입력시퀀스를 수정하고 각각 독립적으로 처리하게 됩니다.

Linear Layer 과정 전에 두개의 시퀀스를 element wise 하게 더하게 됩니다.

Question Answering and Commonsense Reasoning

context document z, question q, 가능한 대답들의 집합인 {ak} 가 주어집니다.

document context 와 question 을 각각의 possible answer 과 연결하여

연결토큰을 추가해 [z;q;$ak] 의 형태로 값을 얻습니다.

그 후 softmax 를 통해 정규화 시켜 가능한 답변에 output distribution 을 제공합니다.


 

Experiments & Results

  1. model specifications

해당 논문에서 BooksCorpus 데이터셋을 사용해 언어 모델을 학습했다고 하였습니다.(7000권 이상의 양)

이 데이테셋에서는 긴 길이의 연속적인 텍스트가 포함되어있어 long range information 을 학습할 수 있습니다.

논문에서의 모델이 original transformer work 의 과정을 거의 따랐고

12개의 transformer decoder 를 masked self attention heads 와 함께 학습하였습니다.

 

 

  1. supervised fine-tuning

natural language inference, question answering, semantic similarity, text classification 을 포함한 작업에서의 연구를 진행하였습니다.

 

 

  1. Natural Language Inference

recognizing textual entailment 라고도 알려져 있는 이 작업은 주어진 문장의 쌍을 읽고 entailment, contradiction, neutral 이 세가지의 상태를 판단하는 것이다.

어휘적/구문적 모호성, 공동 참조 등 다양한 텍스트의 현상들 때문에 어려운 작업이라고 합니다.

GPT 모델의 성능을 다른 모델과 비교하여 평가한 결과입니다.

자신들의 모델이 수치상으로 다른 모델과 비교하였을 때 뛰어나며

언어적 모호성과 언급했던 현상들에 대해 잘 처리했음을 보여주고 있습니다.

 

 

  1. Question answering and commonsense reasoning

question answering and commonsense reasoning 이라는 task 에서 해당 모델의 성능 지표를 평가하였습니다.

평가를 하는 데이터셋은 RACE 와 Story Cloze 이며

해당 데이터셋이 다른 데이터셋보다 더 많은 추론 유형 질문이 있습니다.

이것은 논문에서의 모델이 추구하는 long-range context 를 파악하는 능력을 평가하는데 적합합니다.

가장 뛰어난 성능을 보여주고 있으며 long range context를 효과적으로 처리하였다고 말하고 있습니다.

추가적으로 같이 세미나 리뷰하시는 분께서 짚어주신 부분 중에 multiple choice 에 해당하는 부분이 어떻게 학습되는건가에 대해 의문점을 공유해주셨는데

multiple choice 는 Q(context) : 사과의 색깔은? A 1 : 빨강, A2 : 초록, A3 : 노랑 에 대해 어떤것이 정답일지 하나의 target 을 추정해나가는 task 라고 이해하였습니다.

linear 의 끝 부분 저 하나 하나는 softmax 를 거친 후에 각각의 확률이고 해당 확률이 제일 큰것이 원핫 인코딩 되어 CE를 통해 학습된다고 생각하였습니다.

sparse_categorical_crossentropy 를 사용하면 linear 각각에 대한 전체 확률중에 정답으로 추정되는 값 하나를 얻을 수 있을것이라고 생각합니다. (이부분에 대해서 추가적인 의견이나 정답을 알고계신분은 댓글로 의견 공유해주시면 감사드리겠습니다)

 

 

  1. Semantic Similarity

Semantic Similarity 는 두 문장이 주어졌을 때 의미적으로 동일한지의 여부를 예측한는 것입니다.

challenge 라고 불릴만한 요소들은 부정에 대한 이해도, 구문적 호소성등이 존재합니다.

표를 통해 성능 차이를 확인할 수 있습니다.

 

 

  1. Classification

Classification, Semantic, Similarity 크게 두가지의 다른 task 로 진행되었습니다.

CoLA 데이터셋에서는 주어진 문장이 문법적으로 맞았는지 틀렸는지 판단하는 task 를 수행하고

SST-2 데이터셋에서는 주어진 문장에 대해 긍정, 부정을 판단하는 binary classification 을 수행하였습니다.

 

Analysis

  1. Impact of number of layers transferred

layer 의 개수에 따라 언급했던 NLI 와 RACE 에 대한 성능 지표를 보여줍니다.

 

 

  1. Zero-shot Behaviors

LSTM 모델과의 Zero-shot 을 비교했을 때 성능이 뛰어남을 보여주고 있습니다.

구체적으로는 성능이 안정적이고 꾸준하다는 것이고 LSTM 은 zeroshot 에서 큰 분산을 보이게 됩니다.

여기서 LSTM w/ aux LSTM 에 관련하여 왜 굳이 LSTM 과 성능을 비교하여 평가하는것일까 라는 의문을 던져주셨고 관련해서 공부하다 다시한번 저 LSTM w/aux 에 대해 정리를 하게되었습니다.

LSTM w / aux 는 Transformer 구조를 다 없애고 lstm 구조를 사용하겠다는 것입니다. 즉 Tramsformer 가 사용된 부분을 싹다 lstm 으로 교체하겠다는건데 (저는 aux LM -> fine tuning을 LSTM 으로 하겠다는건가? 라고 완전히 잘못 이해하고 있었습니다) 선배님의 도움으로 학습 pretrained 부분에 transformer 들을 lstm 으로 바꾸고 finetuning 은 aux lm 을 사용하여 학습을 하는것이다. 라고 다시한번 정확히 이해하게 되었습니다 :)

 

 

3) Ablation studies

auxiliary LM objective 를 fine-tuning 단계에서 제외하여 성능을 측정하였습니다. auxiliary objective 가 NLI 와 QQP task 에서 도움이 됨을 확인할 수 있습니다. 전반적으로 큰 데이터셋일수록 benefit 을 받음을 시사할 수 있습니다.

Transformer 와 LSTM 을 각각 사용해 성능을 비교하였고 Transformer 가 LSTM 에 비해 평균적으로 5.6 만큼 높았습니다.

MRPC 에 대해서만 LSTM 이 더 우수하다고 언급하고 있습니다.

pretraining 의 과정의 유무에 따른 성능 비교를 살펴보면

pretraining 과정이 없다면 full model 에 비해 14.8% 만큼 성능이 저하되는 것을 확인할 수 있었습니다.

 

Conclusion

generative pre-trainingdiscriminative fine-tuning 을 통해 강력한 자연어 처리 모델을 만들기 위한 프레임 워크를 도입하였습니다.

corpus 에 대한 pretraining 을 통해서 long range 의존성 처리 능력을 학습하고 다양한 discriminative tasks 으로 해결하였습니다.

12개의 데이터셋 중에 9개에서 sota 를 도달하였습니다.

discriminative task에 대해 성능을 높이기 위해 unsupervised pre training 을 하는 것은 오래 동안 기계 학습의 목표였습니다.

실제로 이것이 가능하다는 것을 보여주며 어떤 모델과 데이터셋에 잘 동작하는지 설명하였습니다.

 

느낀점

최신 논문을 리뷰하다보니 지금 나와있는 많은 딥러닝 논문들 중에 중요한 큰 틀들이 눈에 조금은 들어왔던 것 같습니다.

논문을 리뷰하면서 최종 목표 함수 부분에 대해 의문이 남아있었는데

fine tuning 시 1000건의 데이터만을 가지고 모든 layer 들을 random initialization 하여여 학습 및 평가를 진행하는 것이었습니다.

최종적으로 작은 데이터로 학습된 pretrained 모델이 좋은 random initializaiton 을 제공해주는 것인데

이미 잘 학습이 된 pretrained 는 아주 작은 가중치를 두고 다시 학습을 진행하고 donwstram 에 해당하는 부분에는 더 큰 가중치를 두어 학습을 진행하는 것이었습니다.

pretrained 된 부분도 학습을 조금은 진행하여 finetuning 을 하게 되는것이었습니다.

이 부분을 같이 고민하고 공유할 수 있게되어 굉장히 의미가 있었고 후에 코드를 조금 상세히 리뷰해볼 수 있었으면 더 확실한 이해가 가능했을 것 같은데 아쉬웠습니다.

또 기본기가 탄탄했다면 추가적으로 해당 모델에서 어떠한 부분이 바뀌면 더 좋은 성능을 낼것이다 라는 다양한 아이디어를 가질 수 있었을텐데 이 부분은 더 노력해야할 부분인 것 같습니다

구글 부캠에서 훌륭하신 팀원분들과 많은 선배님들의 도움으로 논문 리뷰를 정말 알차게 진행할 수 있었습니다. 감사합니다 :)