[paper] BERT

hyunsooo·2021년 12월 24일
0
post-custom-banner

출처 : BERT 논문

Abstract

BERT(Bidirectional Encoder Representations from Transformers)는 모든 layer에서 왼쪽, 오른쪽 문맥에 대해 공동으로 훈련하여 unlabeld한 텍스트로부터 bidirectional하게 사전 훈련하도록 설계되었다. 사전학습된 BERT는 추가적으로 한개의 layer로 fine-tuning하여 광범위의 task들에서 SOTA모델을 만들 수 있다.

Introduction

Pre-trained language representations를 downstream-tasks에 적용하기 위한 2가지 방법이 있다.

1. feature-based approach

추가적인 features로 pre-trained representation을 포함하여 사용하는 방법이다.
대표적인 예로 ELMo가 존재한다.

2. fine-tuning approach

GPT처럼 최소한의 task-specific parameter를 추가하고 downstream-task에서 모든 pre-trained parameters를 fine-tuning하는 방법이다.

이 두가지 approach는 같은 objective function을 사용하며, general representation을 학습하기 위해 단방향 언어모델 사용한다.

ELMo는 biLSTM이지만 양방향RNN과는 다른 구조를 가지고 있고(단방향 concat 단방향), 또한 얕은 concatenate로 구성이 뙤어 있으며 GPT의 경우 Decoder(transformer)의 Maked Attention을 사용하여 이전의 토큰만 고려한 언어 모델이다.
이와 같은 이유로 단방향의 언어모델로 깊은 양방향 특징을 학습하거나 pre-trained representation의 성능을 제한한다.

이 연구에서는 BERT모델로 fine-tuninng based approach의 성능을 향상시켰다.
BERT는 Cloze task에서 영감을 얻은 "masked language model(MLM)"을 사전학습의 objective로 사용하여 이전에 언급한 단방향적인 제약을 완화했다.

이 모델은 input token들 몇개를 무작위로 mask token으로 바꿔주고 objective는 문맥을 기반으로 maked word를 원래 사전 id로 예측한다. left-to-right pre-training model과는 달리 MLM은 representation이 left와 right 문맥 둘다를 사용할 수 있게 한다.
추가적으로 "next sentence prediction(NSP)" task를 사용한다.

  • BERT는 MLM을 사용하여 shallow concatenation이 아닌 deep하 bidirectional 모델이 언어표현에 있어서 더 중요하다는 것을 증명한다.

  • BERT는 sentence-level과 token-level에 대해 SOTA를 달성한 최초의 fine-tuning에 기반한 표현 모델이다.

ELMo, OpenAI GPT 등 상세한 정보는 관련 논문 읽어보기.

BERT

BERT는 pre-training, fine-tuning의 2가지 step이 존재한다.

  • pre-traning동안 모델은 unlabeled의 data에 대해 학습된다.

  • fine-tuning동안 모델은 처음으로 사전학습된 파라미터들로 초기화되어 진다. 그리고 파라미터 모두 downstream task의 labeled data를 통해 fine-tuning 되어진다.

Model Architecture

BERT 모델은 Transformer의 encoder구조에 기반을 둔 구조이다.
(L : number of layers, H : hidden size, A : number of self-attention, 4H : feed-forward/filter size)

  • BERT-BASE : L=12, H=768, A=12, Total params=110M
  • BERT-LARGE : L=24, H=1024, A=16, Total params=340M

unidirectional보다 bidirectional의 효과를 보여주기 위해 openAI GPT와 같은 파라미터 크기를 선택했다.

Input/Output Representations

BERT를 다양한 downstream task에 다룰 수 있도록 만들기 위해 단일 sentence와 sentence 쌍(QA)를 하나의 token sequence로 표현해야 한다.

  • WordPiece embedding을 사용하며, BERT의 경우 30,000개의 token을 사용했다.

  • 모든 sequence에 처음은 항상 special token([CLS])이다. 이 token의 최종 hidden state는 sequence의 통합적인 표현으로 classification을 하는데 사용된다.

  • sentence pair들은 single sequence로 함께 packed되어 지며 문장들을 구분하기 위한 2가지 방법을 사용한다. 첫번째로, special token([SEP])을 사용하고 어디 sentence에 속하는 token인지 가르키는 segment embedding을 모든 token에 더해준다.

Pre-training BERT

pre-train BERT는 2가지의 unsupervised tasks를 수행한다.

Task #1: Masked LM

deep bidirectional하게 학습하기 위해 무작위로 input token들의 몇퍼센트를 mask씌운다. 그리고 이 masked된 token을 예측하게 된다.
위와 같은 절차를 여기서는 masked LM(MLM)이라고 한다.

  • 전체 token을 predict하는 LM과 달리 [MASK] token만 예측하는 작업을 수행한다.

  • mask token의 최종 hidden state는 FC(vocab)층과 softmax을 통과하여 예측이 수행된다.

  • sequence의 15%의 비율을 MASK로 변환한다.

    • 15% 중 80% : [MASK]토큰으로 변환
    • 15% 중 10% : random token으로 변환
    • 15% 중 10% : original token으로 유지
  • 이렇게 하는 이유는 [MASK]만 사용할 경우 [MASK]토큰이 fine-tuning단계에서는 나타나지 않으므로 pre-training과 fine-tuning 단계에서 불일치하는 문제가 있기 때문에 모든 토큰을 [MASK]로 사용하지 않는다.

Task #2: Next Sentence Prediction(NSP)

LM에 의해서 두 문장 사이의 관계를 포착할 수 없기 때문에 NSP를 통해 두 문장 간의 관계를 이해하기 위한 task이다.

  • pre-training example에서 sentence A, sentence B를 선택할때

  • 50% : sentence B가 실제 A다음 문장 (labeled as IsNext)

  • 50% : 무작위로 추출된 문장 (labeled as NotNext)

  • [CLS]의 hidden state는 NSP를 수행하기 위해 사용된다.

Pre-training data

  • 사전 학습의 절차는 기존 LM의 문헌을 따른다.

  • BERT는 사전학습 corpus로 BooksCorpus(800M words), English Wiki(2,500M words)를 사용했다.

  • long contiguous sequences를 추출하기 위해 Wiki에서 text passages만 추출했다.

Fine-tuning BERT

Transformer의 self-attention은 BERT가 적절한 input과 output을 교환하여 다양한 downstreamm tasks 모델링 할 수 있도록 허용하기 때문에 fine-tuning은 간단하다.

text pair를 사용하기 위해 일반적인 방법은 bidirectional cross attention을 하기전 text를 독립적으로 encode하지만 BERT 이 두 단계를 통합한 self-attention을 사용한다.

  • 두 문장 사이의 bidirectional cross attention을 위해 text pair를 concat해서 인코딩한다.

  • 각 작업별 input과 output을 BERT에 연결하고 모든 parameter를 end-to-end로 fine-tuning시킨다.

BERT의 fine-tuning에 대해서는 아래의 섹션들에 설명이 되어 있다.

Experiments

이 섹션에서는 NLP task에 대한 BERT의 fine-tuning에 대해서 설명한다.

  • 위 그림으로 sentence-level과 token-level을 어떻게 사용하는지 알 수 있다.

GLUE

The General Language Understanding Evaluation(GLUE)

  • 9개의 GLUE데이터셋에 대해 전부 SOTA를 달성했다.

  • [CLS]의 final hidden state(C)는 CRHC \in \mathbb{R}^H이고 classification을 위한 weight는 WRK×HW \in \mathbb{R}^{K \times H}로 여기서 KK는 분류하고 싶은 카테고리의 개수이다.

  • 분류를 위한 확률값은 softmax(CWT)softmax(CW^T)로 계산된다.

  • batch size : 32 , epochs : 3, learning rate : 5e-5, 4e-5, 3e-5, 2e-5

SQuAD v1.1

The Stanford Qeustion Answering Dataset(SQuAD)

  • SQuAD는 question과 passage이 input sequence로 사용되고 지문에서 정답을 맞추는 task이다.

  • BERT는 question을 A embedding, passage를 B embedding으로 처리한다.

  • fine-tuning 동안 start token SRHS \in \mathbb{R}^H, end token ERHE \in \mathbb{R}^H을 학습시킨다.

  • 질문에 적절한 정답을 찾기 위한 방법으로 정답의 시작부분과 끝 부분을 찾는 방법으로 진행된다.

  • passage의 output들에 대해 start토큰을 찾기 위한 확률을 구하고 이 작업을 end토큰을 찾기 위한 방법으로 똑같이 진행하여 task를 수행한다.

  • Pi=eSTiΣjeSTjP_i = \frac{e^{S \cdot T_i}}{\Sigma_j e^{S \cdot T_j}}

SWAG

The Situations With Adversarial Generations(SWAG)

  • SWAG데이터 셋은 문장이 주어지고 4가지 문장 중 가장 자연스럽게 이어지는 문장을 찾는 데이터셋이다.

  • input sequence로 주어진 문장(given sentence)와 4가지 후보들을 각각 concat하여 사용한다.

  • BERT는 SWAG task를 위해 GLUE task의 방법을 적용한다.

  • CLS의 토큰 (CRH)(C \in \mathbb{R}^H)를 input seqence와 dot-product하여 softmax한 값을 사용한다.

Ablation Studies

이 섹션에서는 BERT의 요소 중 상대적으로 중요한 요소를 이해하기 위해 하나씩 제거하며 파악한다.

Effect of Pre-training Tasks

같은 data와 fine-tuning scheme, hyperparameter를 사용하여 2가지의 pre-traning을 평가해 deep bidirectionality의 중요성을 알아본다.

No NSP: NSP를 제외하고 MLM만 사용한 model

LTR & No NSP : MLM대신 left-to-right(LTR) LM을 사용며 NSP를 사용하지 않은 model. 이 모델은 GPT와 비교할 수 있는 모델이지만 더 많은 데이터를 사용했다.

  • NSP를 제거하는 것은 NLI task에 대해 성능을 해친다.

  • 모든 task에서 LTR모델은 성능이 안좋은데 특히 SQuAD task에서는 token hidden state들이 오른쪽의 문맥정보를 가지고 있지 않기 때문에 MLM모델 보다 성능이 더 안좋아진다.

  • 성능 향상을 위해 BiLSTM을 추가한 모델은 SQuAD 평가가 증가하지만 다른 task의 성능이 저하되는 것을 볼 수 있다.

Effect to Model Size

이 섹션에서는 모델의 size에 따른 영향을 알아본다.

  • 모델의 크기가 커질수록 정확도가 상승한다.

  • 기계번역과 언어모델과 같이 큰 스케일의 task에 대해서는 모델 사이즈가 증가할수록 성능이 향상되는 것으로 알려져 있다.

  • 이 연구에서는 충분히 사전학습된 모델은 작은 규모의 task에도 좋은 성능을 나타낼 것이라 주장한다.

Feature-based Approach with BERT

지금까지 BERT는 pre-trained model에 classification layer를 추가하여 파라미터들을 fine-tuning하는 방법을 보여줬다. 하지만 feature-based approach에서 pre-trained된 모델에서 고정된 feature를 사용하는데 이 방법은 몇가지 이점이 있다.

  • 모든 task가 transformer의 encoder에 의해 쉽게 표현되지 않기 때문에 task-specific한 모델 구조 추가가 요구된다.

  • 비용이 많이드는 feature들을 미리 계산한 후, 그 위에 간단한 모델을 사용하여 다양한 실험을 할 수 있는 계산상의 이점이 있다.

  • 2가지 approach를 비교하기 위해 CoNLL Named Entity Recognition(NER)을 사용한다.

  • CoNLL은 200k word에 person, location, organization, miscellaneous, other로 태깅되어 있는 데이터로 classifier평가를 한다.

  • BERT 마지막 layerdp BiLSTM을 사용하여 해당 layer만 학습시켜 feature approach로 사용했다.

  • 위의 표에서 알 수 있듯이 fine-tuning approach의 BERT모델이 SOTA를 달성했다.

  • feature-based approach의 성능또한 우수했기 때문에 BERT는 fine-tuning과 feature-based 둘다 적용하기 효과적인 모델이다.

profile
지식 공유
post-custom-banner

0개의 댓글