데이터과학/자연어처리

[자연어처리][paper review] BERT : Pre-training of Deep Bidirectional Transformers for Language Understanding

섭구
반응형

BERT(Bidirectional Encoder Representations from Transformer)는 이름 그대로 Transformer의 Encoder를 활용한 Language model 입니다.

BERT는 ELMo, GPT-1과 비슷한 시기 발표된 논문으로, 동일하게 양질의 pre-trained language representation를 얻는 것 과 down-stream task로의 손쉬운 fine-tuning에 중점을 두고 있습니다. 

귀여운 Bert

pre-trained language representation을 down-stream task에 적용하기 위한 방법은 크게 두가지가 존재합니다.

1)feature-based approach

feature-based approach는 기존의 input에 pretrained representation를 feature로서 추가하여 함께 사용하는 방법입니다. 

ELMo는 대표적인 feature-based approach로 ELMo에 대한 자세한 설명은 아래의 리뷰를 참고 부탁드립니다.

 

[paper review] ELMo : Deep contextualized word representations

신경망 기반의 언어모델에서 양질의 Pre-trained word representation을 사용하는 것은 매우 중요합니다. 잘 학습된 word representation을 사용하는 것은 Down-stream task를 해결하기 위한 key-point로서, 모델..

supkoon.tistory.com

 

2) fine-tuning based approach

fine-tuning based approach는 최소한의 task-specific parameter만을 추가하고, 모든 pretrained parameter를 down-stream task에서 fine-tuning 하는 방법입니다. 

대표적인 방법으로는 GPT가 있습니다. GPT에 대한 자세한 설명은 아래의 리뷰를 참고 부탁드립니다.

 

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

많은 딥러닝 모델들은 지도학습 형태로 이루어져 있으며, 일반화를 위한 상당한 양의 labeled data를 필요로 합니다. 따라서 labeled data의 부족은 지도학습 기반 딥러닝 모델의 적용을 어렵게 하는

supkoon.tistory.com

 

GPT,ELMo

언급한 두가지 방법은 general language representation을 위한 pre-training의 목적함수로 단방향 언어모델(unidirection)을 채택하고 있습니다.

GPT는 Transformer를 사용한 구조이기는 하지만, Decoder의 Masked self-attention을 사용하기 때문에 이전 토큰만을 고려하여 언어 모델을 구성합니다. 

$$GPT:\,L = \sum_i logP(u_i|u_{i-k},...,u_{i-1};\theta)$$

ELMo는 biLSTM을 사용하지만, forward, backward와 같은 일련의 방향이 존재하는 언어모델 입니다. 또한 얕은 concatenate를 통해 언어 모델을 구성합니다. 따라서 깊은 양방향 특징을 학습하기에는 최선의 방법이 아닙니다.

$$ELMo:\,L = \sum_i logP(u_i|u_1,...,u_{i-1};\overrightarrow{\theta}) +  logP(u_i|u_{i+1},...,i_N;\overleftarrow{\theta})$$

 

이러한 이유로 단방향의 언어모델은 pre-trained representation의 성능을 저해하는 요소가 됩니다. 특히 fine-tuning approach의 경우, 사전 학습 과정에서 단방향의 언어모델이 다양한 언어 구조의 선택 가능성을 제한할 수 있습니다. 

예를 들면, 이전의 토큰만을 사용하는 GPT의 Transformer를 QA task의 fine-tuning에 사용한다고 할 때, 질문과 답변 사이의 유기적인 관계를 고려하는 능력이 떨어질 것입니다.

 

1.BERT

Model architecture

BERT(Bidirectional Encoder Representations from Transformer)

BERT(Bidirectional Encoder Representations from Transformer)의 기본적인 구조는 Transformer Encodermulti-layer로 쌓아 올린 것입니다(본 눈문에서 L=12).

먼저 Transformer Encoder 구현은 기존의 방법과 거의 동일하므로 자세한 설명은 아래의 리뷰를 참고 부탁드립니다.

 

[paper review] Transformer : Attention is all you need

본 논문은 2017년 발표된 논문으로, 당시에는 RNN, LSTM, GRU를 사용한 복잡한 모델들이 Machine translation과 같은 Sequence Modeling 분야에서 주를 이루고 있었습니다. 이러한 방법들은 순환 신경망을 활용

supkoon.tistory.com

더하여 BERT는 기존의 pre-trained language model이 가진 문제점을 보완하기 위한 두가지 구조적인 특징 Masked language model(MLM), next sentence prediction(NSP)이 존재합니다. 

 

Pre-training

1)Masked language model(MLM)

BERT의 기본적 구조는 앞서 말씀 드린 바와 같이 Multi layer bidirectional Transformer(Encoder)로서, deep bidirectional model 입니다. deep bidirectional model은 GPT와 같은 단방향 구조보다 강력하며, ELMo 등의 얕은 양방향 concatenate 구조보다 깊게 학습이 가능합니다. 

하지만 불행하게도, 조건부 확률로 구성되는 기본적인 언어모델은 left-to-right, right-to-left로 학습될 수 밖에 없습니다. bidirectional한 조건부 확률을 사용하여 언어모델을 계산하면 각각의 단어가 스스로를 간접적으로 볼 수 있어 너무 쉬운 예측이 되기 때문입니다.

Masked Language model , 출처(우) : https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270

따라서 저자들은 deep bidirectional representation을 학습하기 위해, 일정 비율의 단어를 Masking 하는 Masked language model(MLM)을 사용합니다.

Masked languaged model은 전체 문장을 reconstruction 하며 학습하지 않고, 일정 비율(본 논문은 15%)로 Masking된 임의의 단어 토큰만을 예측하며 학습합니다.

이 방법은 방향을 갖는 조건부확률로서 언어모델을 구성하지 않습니다. 따라서 보다 원활한 bidirectional pre-training을 가능하게 해줍니다.

 

하지만 MLM한가지 단점이 존재합니다. 

pre-training 과정에서는 Masked Token이 존재하지만, 실제 Fine-tuning 과정에서는 Masked Token이 존재하지 않는다는 것 입니다. 이를 pre-training 단계와 fine-tuning 단계 사이에 mismatch가 존재한다고 합니다.

따라서 저자들은 Masking 과정에서 Generalization을 위한 Trick을 사용합니다. Masking 하도록 정해진 토큰에 대하여 확률적인 variation을 주는 것 입니다.

전체의 15%에 해당하는 토큰이 Masking될 경우를 고려해 보도록 하겠습니다. 저자들이 주장하는 방법은 i번째 토큰 \(T_i\)가 15 % 확률로 masking 된다고 할 때, i번째 토큰에 대해 80%의 확률로 실제 [Masked] 토큰으로 변경하며, 10%의 확률로 임의의 토큰으로, 마지막 10%의 확률로는 그대로 유지하는 방법입니다.

즉, 임의로 선택된 \(T_i\)는 80% 확률로 [Masked], 10% 확률로 랜덤토큰, 10% 확률로 기존 토큰 값을 갖게 됩니다.

 

MLM은 softmax 함수를 통과한 i번째 토큰 \(T_i\)이 원래의 토큰이 되도록 cross-entropy loss를 사용하여 Pre-training을 진행합니다.

 

 

2)next sentence prediction(NSP)

Down-stream task에는 다양한 작업들이 존재합니다.

그 중에서는 문장 사이의 관계에 대한 이해를 바탕으로 하는 고수준의 작업들도 존재합니다. QA(Question & Answering)NLI(Natural language Inference) 같은 작업들이 그 예시가 될 것입니다.

기존의 pre-trained language model들은 문장 관계를 고려하는 down-stream task에서 상대적으로 좋은 성능을 보이지 못했습니다.

pre-training 단계에서 문장 사이의 관계를 포착할 수 있는 능력을 따로 학습하지 않기 때문입니다.

Next Sentence Prediction

따라서 BERT는 MLM에 더하여, pre-training 단계에서부터 문장사이의 관계를 포착하도록 하는 next sentence prediction(NSP)를 진행합니다.

NSP의 원리와 방법은 간단합니다. 두개의 token sequence를 concatenate 한 input으로 BERT를 학습하며, MLM과 더불어 주어진 두개의 문장이 이어지는 문장인지([IsNext]) 아닌지([NotNext])를 판단하는 BInary classification 작업을 추가하는 것 입니다.

이 과정에서는 첫번째 토큰인 [CLS] 토큰을 활용하여 output layer에서 [IsNext], [NotNext]를 예측하도록 학습합니다.

 

Fine-tuning

BERT의 fine-tuning 과정은 앞선 방법들에 비해 상대적으로 매우 간단합니다.

Transformer의 Self-Attention을 사용하기 때문에  down-stream task가 하나 혹은 두개의 문장을 사용할때에 관계 없이 자유롭게 input을 구성할 수 있으며, 보통의 경우 하나의 output layer만을 추가하여 end-to-endfine-tuning이 가능합니다.

Sequence tagging(d)과 QA(c) 같은 토큰 단위의 down-stream task는 토큰의 representation을 output layer로 넘겨주는 형태로 학습이 가능합니다.

또한, 감성분석(b), entailment(a)와 같은 classification task는 NSP 방법 그대로 [CLS] 토큰의 representation을 output layer로 넘겨주어 학습하면 됩니다.

 

Input/output Representation

BERT를 위한 기본적인 Input 구조입니다.

$$h_0 = UW_e + W_p+W_s$$

Transformer의 방법을 그대로 따르기 때문에 역시 Token embedding 후에 Positional embedding을 더하여 줍니다.

추가적으로 BERT는 NSP를 위해 두개의 문장을 함께 사용합니다.

따라서 추가적으로 각각의 문장을 구분해 주기 위한 Segment embedding을 더해 줍니다.

저자들은 Segment embedding를 학습 가능한 parameter로 설정하였습니다.

 

2.results

본 논문은 언어모델 BERT의 검증을 위해 11개의 NLP task에서 fine-tuning을 진행하였습니다.

 

result 1. 

첫번째 실험은 GLUE benchmark dataset에서 평가한 결과입니다.

GLUE는 General Language Understanding Evaluation의 약자로 다양한 general language understanding task를 포함하고 있습니다. 실험 결과 BERT Base,Large 모두 기존의 방법보다 좋은 성능을 보였음을 알 수 있습니다.

특히 BERT-Large는 다른 어떤 모델보다 특히 우수한 성능을 보였습니다.

 

result 2.

두번째 실험은 QA dataset인 SQuAD에서 실험한 결과입니다.

본 데이터셋은 답을 포함하는 Wikipedia의 context 지문을 통해 QA 작업을 학습하는 데이터셋 입니다.

역시 BERT 모델들이 기존의 모델보다 우수한 성능을 보였습니다.

가장 좋은 성능을 보인 모델은 BERT-Large 모델을 앙상블하고 TriviaQA dataset을 통해 먼저 fine-tuning한 모델로, 인간보다도 좋은 판단 능력을 보여줬습니다.

 

result 3.

세번째 실험은 SQuAD 2.0 dataset에서 진행하였습니다. SQuAD 2.0은 답이 지문에 없는 경우를 포함하고 있습니다.

인간의 능력에는 미치지 못하였지만, 기존의 baseline에 비해서는 매우 우수한 성능을 확인할 수 있습니다.

 

result 4.

네번째 실험은 SWAG(Situations With Adversarial Generation) 데이터셋으로 이어지는 문장을 고르는 sentence pair inference task입니다. 역시 BERT 모델이 기존의 모델보다 우수한 성능을 보였으며, BERT_Large는 전문가에 필적하는 결과를 보여주었습니다.

 

result 5.

다섯번째 실험은 Ablation study입니다. 제안한 방법의 유무(Ablation)를 통해 효과를 검증하였습니다.

1) BERT-Base는 MLM과 NSP를 모두 사용한 일반적인 BERT 모델 입니다.

2) No NSP는 MLM만을 사용하여 학습한 모델입니다.

3) LTR & No NSP는 BERT가 아닌 Left-To-Right 의 단방향 모델을 학습한 결과입니다.

 

2,3의 비교를 통해 MLM의 효과를 확인할 수 있으며, 1,2의 비교를 통해 NSP의 효과 또한 확인할 수 있습니다.

 

result 6.

Model size에 따른 성능 비교입니다. 모델 크기에 따라 성능이 증가한다는 것을 확인할 수 있습니다.

 

 

result 7.

마지막 실험은 BERT를 기존의 방법대로 Fine-tuning Approach로 사용했을때와 

ELMo와 같은 Feature-based approach로 사용하였을 때의 결과를 비교한 결과입니다.

Feature-based approach는 아래의 경우를 모두 고려하여 실험을 진행하였습니다.

1)Embedding만 사용

2)두번째 부터 마지막 Hidden을 사용

3)마지막 Hidden 만을 사용

4)마지막 4개의 Hidden을 가중합

5)마지막 4개의 Hidden을 concat

6)모든 12개의 층의 값을 가중합

 

Feature based approach로 실험을 진행한 결과, 전체 layer를 가중합 하는 것 보다 마지막 4개 layer를 concatenate하는 방법이 가장 성능이 좋았습니다. 또한 fine-tuning의 성능과도 거의 차이가 없었다는 점이 주목할 만한 부분입니다.

 

마무리

BERT는 Transformer의 Encoder를 사용하여 양질의 pre-trained language representation를 얻을 수 있는 것과 동시에 down-stream task로의 손쉬운 fine-tuning이 가능한 bidirectional language model 입니다. 이 과정에서 기존의 pretrained language model과는 다르게 MLM과 NSP같은 방법이 효과적으로 적용되었습니다. 그 결과 BERT는 11개의 NLP Task에서 약간의 fine-tuning만을 가지고 매우 우수한 성능을 달성할 수 있었습니다. 또한 일부 task에 있어서는 인간에 필적하는 결과를 냈습니다.

매우 우수한 성능을 자랑하는 모델인 만큼 검증을 위해 다양한 실험을 수행한 것이 대단하게 느껴졌습니다.

다양한 언어모델에 대한 논문을 읽으며 리뷰를 진행하는데, 기존에 공부를 했을 때 보다 깊은 이해를 얻고 있는 것 같아 만족스럽습니다.

 

반응형