Improving Language Understanding by Generative Pre-Training

홍지원·2022년 1월 5일
0

NLP Study

목록 보기
2/3

논문 pdf
https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf

1 Introduction

  • 다양한 딥러닝 모델
    • 상당한 양의 수동으로 label된 data 필요
    • label된 data 구하기 어려운 문제 존재 → 적용 가능성 제한
  • Unlabeled data 장점
    • 시간, 비용 측면에서 대안 제공
    • 추가적인 supervision을 통해 상당한 성능 향상 가능
  • Unlabeled text 문제점
    • 어떤 optimization objective(목적함수)가 가장 효과적인지 불분명
    • 모델에서 학습된 representation → target task로 transfer하는 가장 효과적인 방법에 대한 합의 X
    • 단어 수준(word level) 이상의 정보 얻기 어려움
      → 효과적인 semi-supervised learning 접근법 개발을 어렵게 만듦
  • Generative Pre-Training(GPT)
    • Semi-Supervised 접근법 사용
      = Unsupervised Pre-Training + Supervised Fine-Tuning
    • 목표
      미세한 조정 → 광범위한 task에 보편적으로 적용할 수 있는 representation 학습
    • 훈련절차
      • 1단계 : 신경망의 초기 parameters를 pre-training 하기 위해 Unlabeled data에 언어 모델링 목적함수(language modeling objective) 사용
      • 2단계 : 1단계에서 얻은 parameters에 Supervised objective 사용하여 fine-tuning 한 후 특정 task에 적용시킴
  • Transformer 구조 사용
    • 다양한 작업에 걸쳐 강력한 성능 제공
    • 멀리 떨어진 요소들 사이의 의존성 문제 해결 (더 구조화된 메모리 제공)
    • 사전 학습된 모델 아키텍처 최소한의 변형 → 효과적인 fine-tuning 가능
  • 4가지 유형의 language understanding task 접근법 평가
    • 자연어 추론(natural language inference)
    • 질의 응답(question answering)
    • 의미 유사성(semantic similarity)
    • 텍스트 분류(text classification)
      → 12개 작업 중 9개의 최신 기술을 크게 개선
      범용모델 : 각 작업에 특화된 모델의 성능 능가

2 Related Work

[Revisited] Background Information

  • Language Model(신경망 기반): 단어 sequence에 확률 할당하는 방식으로 이전 단어가 주어졌을 때, 다음 단어 예측(ex. 검색엔진 자동완성 기능)
  • Generative Model: 데이터가 생성되었을 가능성이 높은 분포의 parameter 값을 찾는 모델
  • Transformer: RNN(long term memory dependency 문제) 방법이 아닌, 입력 값을 병렬적으로 처리
    • 본 논문에서 제시하는 GPT 모델은 transformer의 decoder 부분 만을 12개 사용한 모델
    • cf. BERT 모델은 transformer의 encoder 부분 만을 12개 사용한 모델

Semi-Supervised learning for NLP

준지도학습(Semi-supervised learning)은 시퀀스 레이블링(Sequence Labeling; 태깅과 같이 입력 시퀀스에 대해 레이블 시퀀스를 각각 부여하는 작업) 및 텍스트 분류(Text Classification; 요컨대 스팸 메일 구분과 같이 입력 받은 텍스트의 범주 구분)에 적용되면서 주목을 받음.

초기에는 unlabeled data에서 단어 수준(word-level) 및 구문 수준(phrase-level)을 계량화 하여 통계치(statistics) 산출하는 접근법(supervised model의 feature로 사용하는 방법)을 사용하다가, 점차 unlabeled data로부터 학습한 word embeddings를 활용하는 방향으로 나아감. 그러나, 단어 수준에 대한 정보밖에 얻지 못하고 의미에 대해서는 정보를 얻을 수 없는 문제가 존재함.

최근에는 구문 수준(phrase-level) 및 문장 수준(sentence-level) 임베딩을 통해 텍스트를 다양한 작업에 적합한 벡터 표현으로 인코딩을 시도하는 접근법이 부각됨.

👋 임베딩(embedding)이란?
컴퓨터가 자연어(Natural Language)를 정확하게 이해하고, 효율적으로 처리할 수 있게 자연어를 적절하게 변환하는 작업 → 단어의 의미(semantics)를 벡터화(Word2Vec)

우리가 접근하는 수많은 데이터 중 대부분은 unlabeled data가 많은데, data labeling 작업을 위해 소모되는 시간/비용은 매우 크기 때문에, unlabeled data를 활용함으로써 효율성을 제고하는 방법으로 준지도학습 채택(labeled data와 unlabeled data를 동시에 사용해서 효율적으로 더 좋은 모델을 만드는 전략)

Unsupervised pre-training

비지도 사전 훈련(Unsupervised pre-training)은 준지도학습의 일종으로, 좋은 초기 파라미터를 찾는 데 목적이 있음. 종전에는 더 좋은 일반화 성능을 내는 역할로써 regularization 정도의 역할을 했으나, 최근에는 신경망 학습 과정에 도움이 되는 방법론으로 제시됨. 이를 통해서 사전 훈련된 언어 모델을 만들어, 이를 다른 task에 추가 학습하여 높은 성능을 얻는 것에 관심을 두게 됨.

The closest line of work to ours involves pre-training a neural network using a language modeling objective and then fine-tuning it on a target task with supervision.

여기서는 transformer 방식으로 unlabeled data를 활용하여 비지도학습으로 pre-training 하기 위해 language modeling objective(목적함수)를 사용함. (Token Embedding Matrix를 만드는 과정 → 나중에 target task에 대해 fine-tuning)

자연어 추론(language inference), 패러프레이징(paraphrase detection), 이야기 완성(story completion) 등 여러 작업(주로, 자연어 생성)을 수행하기 위해 심층 신경망(deep neural networks)을 개선함.

Auxiliary training objectives

Auxiliary unsupervised training objectives를 추가하는 것은 준지도학습의 대안적 형태로, 기존의 목적함수에 각 Task를 학습하기에 적절한 목적함수를 추가하는 방식

종전 연구는 품사 태깅(POS tagging), chunking, 개체명 인식(Named Entity Recognition) 등 다양한 auxiliary NLP Task를 사용해서 semantic role labeling의 성능 개선을 이룩한 것임.

본 연구에서도 auxiliary objective를 사용하지만, 이미 unsupervised pre-training 단계에서 target tasks에 유의한 여러 언어적 특징들을 학습함. 그래도 auxiliary objective를 추가하면, fine-tuning할 때 generalization에 도움이 되어, 학습 성능이 더 좋아짐.


⇒ 본 논문에서는 Unsupervised pre-training 접근법과 Supervised fine-tuning 접근법을 결합한 semi-supervised 접근법 도출에 관심(= unlabeled data를 활용하여 여러 task에 transfer 가능한 task agnostic model 만들기)

3 Framework

💡 학습 단계

  • Unsupervised pre-training : 레이블이 없는 대규모 학습 corpus로 큰 규모의 언어모델 학습(pre-training)
  • Supervised fine-tuning : 라벨링된 데이터를 사용하여 각 task에 맞게 모델을 fine-tuning

3.1 Unsupervised pre-training

Eq 1

토큰 U={u1,...,un}U = \{u_{1}, ... , u_{n}\}의 레이블이 없는 말뭉치가 주어졌을 때, 다음과 같은 우도함수(likelihood)를 최대화하는 방향으로 학습 진행

L1(u)=ilogP(uiuik,...,ui1;Θ)L_{1}(u)=\sum_{i}logP(u_{i}|u_{i-k},...,u_{i-1};\Theta)
  • kk = 윈도우 크기
  • 조건부확률 PP : 파라미터가 θθ인 신경망을 사용하도록 설계
  • 모든 파라미터는 SGD 방식으로 학습

Eq 2

입력 시퀀스 토큰에 transformer의 변형 중 하나인 multi-layer transformer decoder 적용 → 목표 토큰에 대한 분포를 얻기 위해 position-wise feed forward 레이어 적용

h0=UWe+Wphl=transformer_block(hl1)i[1,n]P(u)=softmax(hnWeT)h_{0}=UW_{e}+W_{p}\\ h_{l}=\texttt{transformer\_block}(h_{l-1})\forall i\in [1,n]\\ P(u)=\texttt{softmax}(h_{n}W_{e}^{T})
  • UU : token의 context vector
  • nn : 레이어의 개수
  • WeW_{e} : 토큰을 임베딩하는 matrix
  • WpW_{p} : position embedding matrix
  • h0h_{0} : 필요한 토큰을 positional embedding으로 순서 값을 정해줌 ⇒ transformer block에 입력하여 다음 값을 얻는 과정을 반복하며 학습 진행
  • P(u)P(u) : 학습된 마지막 값을 행렬곱하여 softmax에 통과해 다음 단어를 뽑아냄

3.2 Supervised fine-tuning

Eq 3, 4, 5

Eq 1으로 pre-training을 완료 후 학습된 파라미터를 목표 과제에 맞게 fine-tuning

P(yx1,...,xm)=softmax(hlmWy)P(y|x^{1},...,x^{m})=\texttt{softmax}(h_{l}^{m}W_{y})
  1. 레이블이 있는 데이터셋 C를 사용한다고 가정했을 때
    ⇒ 입력 x1, ... , xm과 레이블 y로 구성
  2. 입력들은 사전 학습된 모델의 입력으로 제공 후 마지막 tranformer block의 출력인 h_l_m으로 출력
  3. h_l_m를 W_y를 파라미터로 하는 linear output 레이어에 입력 → 레이블 y 예측

최종적으로 Eq 4를 최대화 : fine-tuning 단계에 언어모델을 보조 objective로 포함시킴으로써 supervised model의 일반화(범용성)을 향상시키고, 수렴을 가속화

L2(C)=(x,y)logP(yx1,...,xm)L_{2}(C)=\sum_{(x,y)}logP(y|x_{1},...,x{m})

또한, 가중치 λ에 대해 아래 목적함수를 최적화 :

L3(C)=L2(C)+λL1(C)L_{3}(C)=L_{2}(C)+\lambda \ast L_{1}(C)

3.3 Task-specific input transformations


기존에는 task 학습시 각 task에 맞는 특정 구조를 학습 → 많은 양의 task 별 맞춤화 과정 필요 + 추가적인 구조 요소에 대해 이전 학습을 적용하지 않음 ⇒ Traversal-style approach

Traversal-style approach

  • 문서 분류 문제와 달리 질의응답, 텍스트 함의 인식 등의 문제는 여러 개의 문장으로 구성되어 입력 구조가 다르므로 모델에 넣을 수 있는 형태로 구조 변환 필요(=traversal-style approach)
  • 구조화된 입력을 delimeter로 각 문장을 구분하여 하나로 연결하여 ordered sequence로 변환(pre-trained model이 처리 가능한 형태)
  • task에 따라서 모델의 구조를 바꿀 필요가 없어짐
  1. Textual entailment : 전제 pp와 가정 hh를 delimiter 토큰 $로 연결
  2. Similarity : 두 개의 텍스트 사이에 순서가 없으므로 텍스트 두 개를 가능한 경우의 수 만큼 연결하여 총 2개 생성 → 각각 Transformer에 입력으로 사용
  3. Question Answering and Commonsense Reasoning : 문맥 순서 zz, 질문 qq, 가능한 답변의 집합 aka_{k}로 구성 → [zz ; qq; $; aka_{k}]로 연결하고 입력의 갯수는 가능한 답변의 갯수만큼 생성

4 Experiment

4.1 Setup

  1. Unsupervised pre-training
  • training language model로 BooksCorpus dataset 사용 > 연속적인 텍스트가 많아 long-range information 조절을 배울 수 있음
  • alternative dataset으로는 1B Word Benchmark (ELMo) > 같은 크기지만 sentence level- destroying long-range structure로 섞여 있음
  1. Model specifications

    ParameterDescrption
    State dimensiondecoder: 768, inner state: 3072
    Batch size64 random sample 512 token/sample
    Schedule100 epachs
    OptimizerAdam
    Learning Rate0~2000 step까지 2.5e-4까지 증가, 이후 cosine 함수를 따라 0으로 서서히 감소
    Warmup_steps4000
    RegularizationL2(ww=0.01)
    ActivationGELU(Gaussian Error Linear Unit)
  2. Fine-tuning details

  • reuse hyperparameter settings from unsupervised pre-training
  • add dropout to the classifier with a rate of 0.1
  • learning rate=6.25*e-5, batchsize 32

4.2 Supervised fine-tuning

  1. Natural Language Inference
  • 두 문장의 관계를 맞히는 task
  • Label: Contradiction(모순), Neutral(무관), Entailment(연관)
  • 5개의 데이터셋 중 4개에서 다른 모델들을 최대 5.8% 능가한 결과
  • 다른 모델보다 다중 문장을 잘 추론하고 언어의 모호성을 잘 다룸

  1. Question answering and commonsense reasoning
  • 지문과 질문이 주어졌을 때, 알맞은 답을 찾아내는 task
  • RACE dataset : 중고등학교 중간, 기말시험과 관련된 영어 지문
  • Story Cloze Test : 여러 문장의 이야기에서 적절한 엔딩을 고르도록 진행
  • 다른 모델보다 우수한 성능으로, 긴 길이의 지문을 효과적으로 다룰 수 있음을 입증
  1. Semantic Similarity
  • 두 문장 간의 유사도를 계산하여 점수로 산출하는 task
  • 개념을 바꾸어 말하거나, 부정 표현을 이해하고 구문적 모호성을 다룰 수 있는지 확인
  • 3개의 dataset 중 2개에서 state of the art results 달성했다. STSB는 1.0% 높은 점수를 획득했고 QQP에서는 4.2%의 엄청난 향상을 이루었다.
  1. Classification
  • CoLA: 문법적으로 맞았는지 분류
  • SST-2: 문장의 sentiment를 분류
  • CoLA에서는 이전 최고점인 35.0을 큰 격차로 뛰어넘었고, SST2에서도 91.3%의 accuracy score을 수립했다.

Semantic Similarity & Classification 결과

전체 점수는 GLUE benchmark에서 72.8로 과거 최고점인 68.9를 넘는 결과를 얻었고, 12개의 dataset 중 9개에서 new state of the art results를 세우며 작은 dataset부터 큰 dataset까지 우수한 기능을 한다는 것이 입증

5 Analysis

해당 논문은 다양한 개수의 레이어를
unsupervised pre-training ➡️ supervised target task로 tranfer 할 때의 성능 분석

  1. Impact of number of layers transferred
    📈 왼쪽 그래프 : MultiNLI와 RACE에서의 성능 확인가능

    • Transfer 하는 층의 개수가 많을수록 성능이 더 좋아진다.
    • pre-trained model의 각 층이 target task를 해결하기 위한 다양한 특성들을 각각 학습
  2. Zero-shot Behaviors
    📉 오른쪽 그래프 : Supervised fine-tuning을 하지 않은, pre-training 만의 성능 확인가능

    • Pre-training을 더 많이 할수록 다양한 task의 성능이 함께 증가한다.
    • language modeling을 수행하면서 다양한 nlp task 를 위한 특성들을 함께 학습한다.

      [가설1] Language model pre-training이 효과적인 이유
      language model의 성능을 향상시키기 위해서 다양한 nlp task를 학습한다.

  3. Ablation studies
    동일한 모델에 대한 3가지의 다양한 실험 진행

  • Fine-tuning 과정에서 보조적인 LM task (Auxiliary Objective(sub-task)) 유무의 비교
    • Fine-tuning 과정에서 보조적인 LM task를 제외해서 성능을 확인했다. 데이터셋이 큰 경우 이런 보조적인 objective의 영향을 많이 받지만, 작은 데이터셋의 경우는 영향을 적게 받는다는 것을 알 수 있었다. → Fine-tuning은 데이터 셋이 클 때 더 효과적
  • Transformer의 사용 여부
    • Transformer의 성능을 확인하기 위해서 transformer 대신 2048개의 unit으로 구성된 한 개의 LSTM 층을 추가했다. 평균적으로 5.6 점 정도의 점수 하락을 확인할 수 있었다. (MRPC 데이터셋에 대해서는 LSTM이 더 좋은 성능을 제공)
  • pre-training 여부 비교
    - 기존의 모델을 바로 supervised target task에 학습시킨 경우 성능을 확인했다. Pre-training을 진행하지 않은 경우, 모든 task에 대해서 성능이 떨어진다는 것을 확인할 수 있었다.

6 Conclusion

1️⃣ 본 논문은 생성적 사전학습과 특정과제에 특화된 미세조정을 통해 학습된, 과제에 대해 별다른 지식이 없으며 자연어이해 능력이 뛰어난 단일 모델(framework)를 소개한다.

2️⃣ 넓은 분야의 다양한 말뭉치에 대해 사전학습을 진행하여 중요한 일반지식과 질답, 의미유사성 평가, 함의 확인, 문서분류 등의 task에서 성공적으로 전이되는 장거리 의존성을 처리하는 능력을 학습하여 12개 중 9개의 과제에 대해 state-of-the-art를 달성하였다.

3️⃣ 본 논문은 상당한 성능향상이 정말로 가능하며 어떤 모델(Transformers)과 dataset(장거리 의존성을 포함하는 텍스트)가 이 접근법에 가장 좋은지에 대한 조언을 제공한다.

profile
문과인듯 이과아닌 문과같은 사람

0개의 댓글