728x90
- reference 
https://arxiv.org/abs/1810.04805

0. Abstract


저자는 새로운 언어 모델 BERT(Bidrectional Encoder Representations for Transformers)를 소개합니다. BERT는 길게 설명한 것처럼 트랜스포머 모델을 이용한 양방향 인코더 표현들입니다.

 

BERT모델은 당시(2018년)의 대표 언어 모델 ELMo, GPT-1 과 다르게 양방향으로 데이터를 학습했습니다. ELMo와 GPT는 단방향으로 학습합니다. 

 

 

BERT모델은 unlabeled data를 통해 pre-train을 합니다. 이후 just one additional output layer 을 통해 fine-tuning 하여 Question Answering(QA, 질문 대답) 과 language inference(자연어 추론) 작업을 위한 모델을 만들 수 있다고 합니다. 이러한 방식은 특화된 구조 수정 없이 가능합니다. 

 

BERT는 컨셉적으로 단순하고 경험적으로 강력합니다. 이는 11개의 NLP에서 최고 성능을 보인다고 논문에서 말합니다. GLEU, MultiNLI, SQuAD 등에서 GPT-1 보다 더 나은 성능을 보여줍니다.

 

1. Introduction


언어 모델을 사전 훈련하는 것은 NLP 개선에 효과적인 것으로 나타났다고 합니다.

  • 문장간 관계를 전체적으로 분석해 예측하는 자연어 추론의 sentence-level task
  • 세밀한 출력을 생성해야하는 named entity recognition 와 question answering 과 같은 token-level task 

 

pre-trained representation 을 downstream task에  적용하는 방식은 두 가지가 있습니다.

 

1.  feature-based 

대표적으로 ELMo가 있습니다. feature-based 접근은 추가적인 특징과 같은 사전 훈련들을 포함한 task-specific architecture을 사용합니다. 

 

2. fine-tuning

GPT(Generative Pre-trained Transformer( OpenAI))와 같은 모델들이 fine-tuning 모델이다. 이 모델은 task-specific parameter의 수를 최소화하며, pre-trained parameter를 최소한으로 수정해서 downstream task를 학습합니다. 

 

2가지의 접근법은 pre-training 동안 같은 목적 함수를 공유하며, 그들은 언어 표현을 배우기 위해 단방향 언어 모델을 사용합니다.

 

ELMo objective function

GPT objective function

 

두 목적함수는 단방향에 대해서 확률을 구하는 함수이다. ELMo는 biLM을 사용하므로 backward forward 에 대해 더했기 때문에 2개의 log 식이 있습니다.

 

주의점: ELMo는 biLM을 사용하므로 양방향처럼 보이지만 ELMo는 단방향(forward, backward)에 대해 단지 concat한 것이므로 deep bidirectional 하다고 볼 수 없으며 얕은(shallow) 양방향으로 단방향이라고 봐야합니다.

 

논문에서는 ELMo와 GPT가 Pre-trained representation을 제한한다고 합니다. 특히 fine-tuning에서 더욱 더 제한된다고 한다. 이유는 모델이 단방향이며, training 동안 사용되는 기술의 선택이 제한된다고 합니다.

 

GPT의 Transformer 안에 self-attention은 제한된 self-attention을 사용하기 때문입니다. 즉, 단방향으로만 attention을 하기 때문에 문맥에 대해서 정확히 파악하지 못한다고 합니다. 이러한 작업은 sentence-level의 작업에 대해 최적의 상태가 아니며 QA(question answering) 같은 token-level 작업에 fine-tuning 하면 안 좋은 결과가 나온다고 합니다.

-> 양방향의 문맥 정보를 포함하는 것으로 이를 해소한다고 말합니다.

 

해소하는 방법으로 BERT를 제안하며 fine-tuning 접근법을 개선합니다.

개선하는 방법으로 Cloze task(빈칸 맞추기) 에서 영감을 받아 Masked Language Model을 pre-training 목표로 하며 단방향에 대한 제약을 완화합니다.

 

MLM 뿐만 아니라, text pair 표현을 함께 사전 훈련 시키는 NSP(Next Sentence Prediction)도 사용합니다.

 

Masked Language Model(MLM) : 토큰의 일부를 Mask 토큰으로 바꾸며 최종 출력에서 문맥을 기반으로 토큰을 예측합니다.

논문을 통해 기여한 점은 다음과 같습니다.

  • 언어 표현에 대해 양방향 사전 훈련의 중요성을 보여줍니다. GPT가 사전 훈련을 위해 단방향 언어 모델을 사용하는 것과 달리 BERT는 양방향 표현을 가능하게 하기 위해 MLM을 사용합니다. ELMo은 독립적으로 훈련된 단방향 언어 모델 2개를 concat하는 얕은 연결을 사용합니다.
  • BERT는 pre-trained representation이 구조를 작업별로 수정해야하는 필요성을 줄인다는 것을 보여줍니다. 

 

2. Related Work


이 부분에서는 일반적인 언어 표현을 사전 훈련하는 데에 긴 역사가 있으며, 널리 사용되는 접근법에 대해 간략하게 설명합니다.

 

2.1 Unsupervised Feature-based Approaches(비지도 특징 추출 기반 방법)

단어를 광범위하게 적용 가능한 표현을 학습하는 것은 연구 분야이며, 방식은 2가지가 있습니다. 비신경망과 신경망 2가지 방식이 있습니다. Pre-trained word embedding은 NLP 시스템의 핵심 부분이며, 처음부터 학습된 임베딩보다 뚜렷한 개선을 제공합니다. 임베딩 벡터를 사전 훈련시키기 위해 Left-to-Right 의 모델링 목표가 사용되며, Left-to-Right 문맥에서 올바른 단어와 올바르지 않은 단ㅇ어를 구별하는 목표도 사용되었습니다.

 

이런 접근법들은 단어 임베딩-> 문장 임베딩 -> 단락 임베딩 -> 문서 임베딩과 같은 더 큰 단위로 일반화되었습니다. 문장 표현을 훈련시키기 위해 다음 문장을 랭킹하는 목표, 이전 문장의 표현이 주어진 상태에서 다음 문장의 단어를 왼족에서 오른쪽으로 목표, 또는 autoEncoder에서 파생된 목표를 사용했습니다.

 

ELMo와 전신은 단어 임베딩을  다른 차원에서 전통적인 단어 임베딩 연구를 일반화합니다.

-> 다시말해 단방향이 아닌 양방향으로 임베딩하여 다의어인 단어에 대해 문맥에 대해 이해하며 다의어 문제를 해소하려고 했습니다.

 

2.2 Unsupervised Find-tuning Approaches (비지도 미세 조정 방법)

2.1과 마찬가지로, unlabeled text에서 word embedding parameter만 pre-train 합니다. 문장이나 문서 Encoder들이 unlabeled text로 부터 pre-trained 해 학습 기반의 하류 작업(downstream task)에 미세 조정됩니다. Encoder들은 Context를 고려한 토큰 표현을 생성합니다. 이러한 접근법은 처음부터 학습해야하는 매개변수의 수가 매우 적다. 이 장점은 GPT가 GLUE 에서 최고 성능을 달성했습니다. GPT와 같은 모델은 사전 훈련시키기 위해 단방향으로의 모델링과 AutoEncoder가 사용되었습니다.

 

2.3 Transfer learning from Supervised Data (지도 데이터로부터의 전이 학습)

큰 데이터셋을 가진 지도학습 작업으로 부터 효과적인 전이를 보여주는 작업이 있었다. 예를 들어, 자연어 추론과 기겨번역이 있다. Computer Vision 영역에서도 대규모 pre-trained Model은 전이 학습의 중요성이 ㅇ비중되었고, 이것들은 pre-trained Model을 fine-tuning 하는 것입니다.

 

3. BERT


이 섹션에서는 BERT와 구체적인 구현에 대해 소개합니다.

 

BERT의 framework 2가지 단계

  • pre-training
    • 훈련과정은 unlabeled data로 훈련됩니다.
  • fine-truning(downstream task)
    • pre-trained parameter로 초기화되어있는 Model을 labeled data로 학습을 하여 fine-tuning 과정을 진행합니다.

그림1. BERT framework의 2가지 단계

위 그림을 보면 오른쪽의 Fine-tuning 된 Model들의 구조는 output layer을 제외하고 큰 차이가 없는 것을 알 수 있다.

 

Model Architecture

Model Architecture은 Transformer을 기반으로 하는 다층 양방향 Tranforemr Encoder이다. 

Transformer의 블록을 L, Hidden size를 H, Self-Attention head 를 A 로 표기합니다.

  • BERT(BASE) (L = 12, H=768, A=12, Total Parameter = 110M)
  • BERT(LARGE) ( L=24, H=1024, A=16, Total parameter = 340M)

2가지를 구현했으며 BERT(BASE)는 GPT와 비교하기 위해 동일한 모델 크기를 선택했습니다.

 

차이점 : BERT는 양방향 Transformer, GPT는 단방향 Transformer을 사용합니다.

 

 

그림 2

Input/Output Representations

입력에 대해 알기 위해서 BERT에서의 Input Representation 에 대해 알아야할 필요가 있습니다.

  • Sentence : 문장의 언어학적 정의보다는 연속된 텍스트의 임의의 구간을 의미합니다.
    • 위의 그림을 보게되면 ##ing와 같은 임의의 구간을 볼 수 있습니다.
  • Sequence : BERT에 들어가는 single sentence or two sentence를 의미합니다.

 

WordPiece Embedding(약 30,000개의 토큰 어휘)을 사용

 

[CLS] 토큰

  • 모든 Sequence의 첫번째 토큰으로 사용하며 Sequence의 시작을 알리는 토큰
  • CLS 토큰에 대응되는 final hidden state는 분류문제를 해결을 위해 sequence representation을 종합한 정보를 가지고 있습니다.

문장을 구분하는 2가지 방법

  • [SEP] 토큰
    • Sequence 안에 있는 sentence를 분리하는 토큰
  • Segment Embedding
    • 문장 A에 속하는지 문장 B에 속하는지 나타내는 학습된 Embedding

 

주어진 토큰에 대해 표현은 token_Embedding + Segment_Embedding + positional Embedding을 합산한 방식으로 표현됩니다.(그림 2)

 

3.1 Pre-training BERT


이 섹션에서는 BERT가 pre-training 을 하기 위해 기존의 단방향의 언어 모델을 사용하지 않고 2개의 비지도 학습 작업을 통해 BERT를 pre-trianing 합니다. 

 

Task #1 : Masked LM


저자는 직관적으로 깊은 양방향 모델이 단방향 모델과 양방향 얕은 모델보다 강력하다고 믿는다고 합니다.. 얕은 양방향 모델(ELMo)은 간접적으로 자신의 미래 단어를 볼 수 있기 때문에 목표단어를 쉽게 예측할 수 있다고 하여 강력하지 않다고 말합니다.

 

그림 3

깊은 양방향 표현을 학습하기 위해 위의 그림과 같이 토큰의 일부를 비율을 정해 임의로 마스킹하고 마스크된 토큰을 예측하는 과정을 진행합니다.

 

이 절차를 "Masked LM(MLM)"이며 이는 Cloze task에서 영감을 받았다고 합니다.

마지막 final hidden vector들은 softmax를 통해 어휘에 대한 확률로 출력됩니다.

 

 

이전 인코더와의 차이점

denoising auto-encoder와 달리 전체 입력을 재구성하지 않는다는 것 입니다. denoising auto-encoder는 입력에 노이즈를 추가하여 입력을 재구성하지만 MLM은 입력을 재구성하지 않고 masking만 하기 때문입니다.

 

masking 방식은 bidirectional pre-trained model을 얻을 수 있게 해주지만  pre-training과 fine-tuning 사이에 mismatch가 발생한다는 것입니다. fine-tuning 동안 MASK 토큰이 나타나지 않기 때문입니다.

 

이를 완화하기 위해 논문에서는 다음과 같은 해결책을 제시한다. (토큰 중 15% masking을 임의로 합니다.)

  1.  80%의 확률로 [MASK] 토큰으로 대체합니다.                                       ex) my dog is hairy -> my dog is [MASK]
  2.  10%의 확률로 무작위 토큰(MASK토큰을 제외한 토큰)으로 대체합니다. ex) my dog is hairy -> my dog is tall
  3.  10%의 확률로 대체하지 않은채로 토큰을 사용합니다.                             ex) my dog is hairy -> my dog is hairy

이후, cross entropy loss를 통해 원래의 토큰을 예측합니다. 밑에 그림은 절차에 대한 변형을 비교합니다.

그림 4

80% 10% 10% 가 근소하지만 가장 좋은 결과를 얻을 것을 확인할 수 있습니다.

 

Task #2 : Next Sentence Prediction(NSP)

많은 NLP 작업은 질문응답(QA)와 자연어 추론(NLI) 와 같은 downstream task 두 문장 사이의 관계를 이해하는 것이 핵심이며, 언어 모델링으로는 직접 포착되지 않습니다. 이를 위해 BERT는 binarized NSP를 통해 훈련합니다. 

 

훈련과정(pre-training)

  • 문장 A와 B를 선택할 때, 50%확률로 B는 A의 다음문장(IsNext)이며 나머지 50%는 다음 문장(NotNext)이 아닙니다.
  • 이후 그림 1에서 C는 IsNext와 NotNext에 대해 판단을 하며 다음 문장 예측에 사용됩니다.
  • 학습은 C에서 Label을 통해 학습합니다.

 

3.2 Fine-tuning BERT


Fine-tuning 과정은 간단하게 진행할 수 있다. Transformer의 self-attention 매커니즘으로 BERT의 downstream taske를 모델링 할 수 있도록 해주기 때문입니다. (단일 텍스트와 텍스트 페어와 상관 없음)

 

각각의 task 마다 task-specfic input과 ouput을 통해 BERT의 parameter들을 처음부터 끝까지 fine-tuning 할 수 있게 됩니다.

1. sentence pairs in paraphrasing (문장 재구성에서의 문장 쌍)

2. hypothesis-premise pairs in entailment (추론에서의 가설-전제 쌍)

3. questing-passage paris in question answering (질문 응답에서의 질문과 답변)

4. degenerate text-none pair in text classification or sequence tagging (텍스트 분류 및 시퀀스 태깅에서의 텍스트-해당하는 답변에 대한 쌍)

 

출력 레이어에서, token-level은 sequence tagging or Question Answering 와 같은 출력입니다.

CLS 는 추론 및 감정 분석과 같은 분류를 위한 것입니다.

 

fine-tuning은 pre-training에 비해 상대적으로 시간이 저렴합니다. 논문에서 모든 결과는 TPU에서 1시간, GPU에서는 몇 시간 이내에 사전 훈련이 끝납니다.

 

다음 내용은 다음 포스팅에서 이어서 하겠습니다.