[BERT] Pre-training of Deep Bidirectional Transformers for Language Understanding 논문리뷰

안녕하세요, 이번 논문리뷰는 BERT 리뷰입니다.

BERT 모델도  Transformer architecture을 따르는 대표적이고 유명한 Encoder-only 모델 중 하나이죠.

아직도 fine-tuning task에서 많이 쓰이고 있는 것 같아 프로젝트를 위해 fine-tuning을 진행해보면서

함께 읽고 리뷰해보았습니다.

 

모르는 개념이나 문장은 claude.ai 와 함께 읽고 공부하였습니다.

부족한 부분이 많을 수 있으니 논문 리뷰에 대한 오류나 오탈이 있다면 언제든 댓글로 정정해주시면 감사하겠습니다.🤗

 

본 논문은 Google AI Language 팀에서 발표하였으며,

2018년 10월 발표되었습니다. 원문은 아래 링크에서 확인하실 수 있습니다.

 

https://arxiv.org/abs/1810.04805

 

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

We introduce a new language representation model called BERT, which stands for Bidirectional Encoder Representations from Transformers. Unlike recent language representation models, BERT is designed to pre-train deep bidirectional representations from unla

arxiv.org


Abstract

BERT : Bidirectional Encoder Representations from transformers

BERT 모델은 말 그대로 양방향 인코더 기능에 집중한 모델입니다.

지난 transformer archietecture 에 대한 논문 리뷰를 하면서 transformer는 Encoder-Decoder로 이루어진 Architecture임을 공부했었습니다.

 

BERT 모델의 경우, 모든 레이어에서 Unlabeled text (masked text 라고도 합니다.)를 양방향 context를 통해 학습을 진행하여 텍스트로부터 representation을 학습합니다.

따라서 결과적으로, Pre-trained 된 BERT 모델의 경우 하나의 layer만 추가하여도 여러 task에 fine-tuning이 가능해졌습니다.

이를 통해 다양한 task에서 SOTA (State of the art)를 달성하였습니다.

(총 11개의 NLP task에서 SOTA를 달성했다고 하네요! 🙃)

 

 

Introduction

언어모델은 시간이 흐름에 따라 문장단위에서 구문 분석까지를 비롯한 많은 NLP task (Natural Language Processing)에서 효과적인 발전을 보여왔습니다. 또 시간이 지남에 따라, 단순한 문장, 구문분석이 아닌 문장이 지닌 디테일한 부분까지를 이해하고 해석하는 task의 중요성이 점점 커져왔었죠.

 

그래서 NLP에서는 Downstream task 에 대한 연구가 시작되었습니다.

사전학습된 모델 (pre-trained model)을 실제 적용하고자 하는 과제에 대한 연구를 진행한 것이죠. 예를 들면 NLP task에서는 문서 분류, 감성 분석, 질의응답, 텍스트 요약, NER(Named Entity Recognition) 등이 있습니다.

 

이러한 Downstream task를 진행하는 방식은 크게 두 가지로 나뉩니다.

  1. Feature-basd
  2. Fine-tuning

먼저 Feature based의 경우 데이터로 부터 유의미한 feature를 설계하고 추출하여 이를 기반으로 학습을 진행합니다. 대표적인 모델로는 ELMo와 같은 모델이 있습니다. 이 경우는 pretrain 된 모델 + feature based 모델이 합쳐진 형태의 구조를 띠고 있습니다.

Fine-tuning의 경우 Pre-trained 된 모델의 parameter를 초기화 하고 새로운 downstream task에 맞게 parameter를 재조정합니다. 대표적인 모델로는 Open AI의 GPT 와 같은 모델이 있습니다.

 

BERT 모델은 fine-tuning 접근 방법에 특화된 양방향성 모델입니다.

기존의 LM 들은 undirectional하기 때문에 Pre-training 시 모델 architecture 선정에 제약이 존재했습니다. 예를 들어 GPT 모델의 경우, 이전 토큰들에만 영향을 받아 self-attention이 가능하죠. 이런 제약은 NLP task에서 양방향 context의 이해가 필요한 task의 경우 큰 제약점으로 존재했습니다.

 

이런 단점들을 BERT 모델에서는 MLM(Masked Language Model)을 이용하여 해결하고자 합니다.

input 의 token에서 몇 개를 랜덤하게 masking(가린다고 생각하면 이해하기 쉬울 것 같습니다.) 하여 original vocabulary를 예측할 수 있도록 하는 것이죠. 기존의 Left-to-Right(GPT와 같은) 모델과는 달리 양방향 context를 통해 representation 추출이 가능하기 때문에 Bidirectional Transformer가 가능해집니다.

Differences in pre-training model architectures

 

BERT

Overall pre-training and fine-tuning procedures for BERT

 

BERT 모델의 Question-Answering 에 대한 Pre-training, Fine-Tuning 과정 예시입니다.

Pre-training 과정 중에 BERT 모델은 각각의 다른 pre-training task 에 맞게 unlabeld data로 훈련을 진행합니다.

이후 Fine-tuning 과정을 거치기 위해, Pre-train에서 학습된 parameter 값들로 fine-tuning 모델의 parameter들을 모두 초기화 한 후, 특정 downstream task를 위해 labeled data를 이용하여 fine-tuning을 진행합니다.

 

따라서 위 그림에서도 확인할 수 있듯, BERT 모델의 특징은 pre-trained model과 downstream task에 맞게 fine-tuning된 모델의 구조가 큰 차이가 없이 나타난다는 것입니다.

 

Model Architecture

BERT 모델은 Multi-layer Bidirectional Transformer Encoder Based 모델입니다.

본 논문에서 $L$을 Number of layer, $H$를 Hidden size, $A$를 Number of self-attention heads 로 정의하였습니다.

 

 논문에서 소개된 BERT 모델은 두 가지 종류입니다.

  • BERT_base (L = 12, H = 768, A = 12, Total Parameter  = 110M)
  • BERT_large (L = 24, H = 1024, A = 16, Total Parameter = 340M)

(BERT base 모델의 경우 OpenAI의 GPT 모델과 비교하기 위해 비슷한 모델 사이즈를 이용하였습니다. GPT = 117M)

 

 

Input/Output Representations

BERT 모델이 Downstream task에 적합하기 위해, 모델에서는 한 token sequence 안에 single sentence + pair of sentence (예를 들면 <Question, Answer> 이런 식으로)를 Represent 합니다.

따라서 한 sequence 안에 한 sentence 혹은 여러 sentence가 패킹된 형태일 수 있는 것이죠.

(여기서 의미하는 "Sentence"는 실제 언어학적 문장이 아닌, 연속된 텍스트 (span)구간을 의미합니다.)

 

본 연구에서는 WordPiece Embeding 을 이용하였습니다.

WordPiece Embedding의 경우 기존의 단어 수준의 Embedding의 단점을 극복한 Embedding 모델인데, 단어를 의미있는 sub word unit으로 분할하여 Sub word 자체를 Embedding 하는 방법입니다. 따라서 단어 내 형태소 정보를 반영할 수 있으며, 기존의 Word embedding과는 달리 토큰 단위의 embedding이 가능합니다.

 

BERT 모델의 input representation의 특성은 아래 설명부터 중요합니다.

각각의 sequence 마다의 첫 번째 토큰은 항상 Special classfication token 인 [CLS] 토큰으로 이루어져있습니다.

Classification task를 예로 들면, CLS 토큰에 해당하는 Final hidden state가 시퀀스 전체를 대표하는 Aggregate sequence representation으로 쓰이게 되는 것이죠.

 

문장쌍 또한 single sequence 로 패킹됩니다.

본문에서는 문장들을 두 가지 다른 방식으로 분류합니다.

먼저, 두 번째 Special token 인 [SEP] 토큰을 이용해 분류합니다. 

그리고 두 번째로 각 토큰이 Sentence A에 해당하는지, Sentence B 에 해당하는지를 나타내는 학습된 임베딩을 모든 토큰에 추가합니다. (Segment Embedding)

 

결론적으로 주어진 토큰에 대해, input representation은 해당 토큰, segment, position embeding을 더해서 구성됩니다.

BERT input representation

 

다음으로는 BERT를 사전학습하기 위해 사용한 두 가지 방법에 대해서 알아봅시다.

 

Task #1. Masked LM (MLM)

첫 번째 방법은 MLM (Masked LM)입니다.

기존의 Conditional Language Model 들의 경우 오직 left-to-right, 혹은 right-to-left 형식의 단방향으로만 훈련을 진행했습니다.

그 이유는, Bidirectional conditioning의 경우 좌우 컨텍스트를 모두 참고하기 때문에 간접적으로 자기 자신의 정보 또한 보게 되어 multi-layer network에서 보면, 목표 단어에 대한 정보를 이미 얻게 되었으므로 모델이 목표단어를 예측하는 것이 너무 쉬워지기 때문에 모델이 제대로 일반화 되지 않는다는 문제점이 발생합니다.

 

따라서 BERT 모델에서는 이를 해결하기 위해 input token을 random하게 masking 합니다.

그리고 모델이 이 masking 된 토큰을 예측할 수 있도록 하는 것이죠. 이 과정을 Masked LM (MLM) 이라고 합니다.

 

본 연구에서는 각 Sequence를 15%씩 WordPiece token으로 Masking 하였습니다.

Denoising Auto-encoder와는 대조적으로 전체 input을 재구성하기보다는 masked word에 대한 예측만이 이루어집니다.

 

이렇게 Bidirectional pre-trained model을 얻었음에도 불구하고, fine-tuning 과정 동안에는 [MASK] 토큰이 주어지지 않아 Pre-training 모델과 fine-tuning 모델간의 mismatch가 발생하게 됩니다.

 

이를 완화하기 위해서 본 연구에서는 masked word를 항상 실제 [MASK]토큰으로 변경하지 않았습니다.

출처 : https://wikidocs.net/115055

 

Masked LM을 수행하는 과정은 아래와 같습니다.

  1. 먼저, Training data generator가 랜덤으로 15%만의 token position을 선택합니다.
  2. 만약 i번째 토큰이 선택되었다면, i번째 토큰을 80%의 확률로 [MASK]토큰으로 대체시키고 10%의 확률로 랜덤 토큰으로 대체합니다. 또 10%의 확률로 토큰을 그대로 둡니다. 
  3. 그 다음, $T_i$는 원래 토큰을 Cross Entropy loss를 예측하는데 사용합니다.

위 그림 예시처럼, 예를 들어 "My dog is cute. he likes playing" 이라는 문장이 있다고 가정할 때 "dog"라는 단어가 masked token으로 변경되었으며 BERT 모델이 원래 단어를 예측하고자 함을 확인할 수 있습니다. 여기서 final hidden layer의 벡터들은 예측과 학습에 사용되지 않고 오직 [MASK]토큰만 예측과 학습에 사용됨을 알 수 있습니다.

 

출처 : https://wikidocs.net/115055

 

또한 다음 그림과 같이 나머지 10%, 10%의 확률로 랜덤하게 바뀐 토큰 king과 원래의 토큰으로 유지된 play 또한 MLM Classifier를 이용하여 BERT 모델이 토큰 예측과 학습을 진행하는 것을 확인할 수 있습니다.

 

Task #2. Next Sentence Prediction(NSP)

두 번째 방법은 다음 문장 예측 (Next Sentence Prediction)입니다.

많은 Downstream task 에 있어서 중요한 점은 두 문장 사이의 관계를 이해하는 것입니다.

본 연구에서는 단일언어 corpus로 부터 간단하게 생성할 수 있는 이분화된 Next Sentence prediction에 대해서 Pre-training을 진행하였습니다.

 

구체적으로 방법은 아래와 같습니다.

  1. Sentence A, Sentence B를 선정한다.
  2. 50%의 Sentence B는 실제로 Sentence A 다음으로 오는 문장이고 IsNext라고 라벨짓는다.
  3. 나머지 50%는 corpus에서 랜덤하게 뽑힌 문장이고 NotNext라고 라벨링한다.

나중에 실험 결과에서도 볼 수 있듯,

아주 단순한 이진 라벨링이지만 QA와 NLI(Natural Language Inference)와 같은 Task에서 아주 좋은 성능을 보였습니다.

 

representation-learning objectives라는 연구에서와 유사한 개념이지만, 이전의 연구와는 달리 BERT는 모든 파라미터를 전이하여 end-task모델의 파라미터를 초기화합니다.

 

본 연구에서 진행한 Dataset은 아래와 같습니다.

 

  1. BooksCorpus (800M의 단어로 이루어진 말뭉치 데이터셋)
  2. English Wikipedia (약 2500M개의 단어)

 

Fine-tuning

마지막은 fine-tuning 방법입니다.

BERT 모델은 Transformer Architecture의 Encoder 구조만을 따른다고 했었죠?

이 때문에 transformer의 self-attention 기법을 이용하여 손쉽게 많은 Downstream task에 대해 fine-tuning이 가능합니다.

 

기존의 연구에서는 bidirectional cross attention을 진행하기 위해 각각의 text pair들을 독립적으로 인코딩 한 후 cross attention을 진행하였다면,

BERT 모델의 경우 Self-attention 을 이용하여 두 단계를 한번에 진행합니다.

 

Self-attention으로 연결된 텍스트 쌍을 인코딩하게 되면, 두 문장사이의 Bidirectional Cross attention이 효과적으로 포함되기 때문입니다.

BERT를 이용해 Fine-tuning을 하기 위해서는 BERT 에 적절한 input / output을 연결하고,

end-to-end로 fine-tuning을 진행하면 됩니다.

pre-training에서 받아온 Sentence A, Sentence B는 Downstream 과제의 문제쌍(Paraphrasing), 가설-전제(Entailment), 질문-문단(QA)등에 상응하게됩니다.

 

Fine-tuning BERT on Different Tasks

 

위 그림은 다른 Task들에 적용한 BERT 모델의 Fine-tuning 과정입니다.

왼쪽  두 경우는 Sentence 를 한번에 input으로 넣는 Sequence-level task가 되고, 오른쪽 두 경우는 단일 Sentence의 token사이의관계를 분석하는 Token-level task가 됩니다. 

 

 

Pre-training과 비교했을 때 Fine-tuning은 Computing budget 측면에서 매우 효율적입니다.

같은 pre-training모델에서부터 파라미터를 추출하여 진행하기 때문에 Single Cloud TPU에서 1시간 이내로 학습을 마쳤다는 결과가 있네요.

 

 

 

Experiments(Fine-tuning Tasks)

GLUE Test Result

먼저 GLUE Benchmark에 대한 결과입니다.

GLUE : The General Language Understanding Evaluation Benchmark 입니다.

 

첫 번째 입력 토큰 [CLS]에 해당하는 final hidden vector를 aggregate representaion으로 사용하였습니다.

새로운 파라미터는 Classification layer weight $W$이며, $W \in R^{(K*H)}$ 이며 여기서 $K$는 Number of Labels 입니다.

$log(softmax(CW^{T}))$와 같이 Standard classification loss를 계산할 수 있습니다.

 

위 결과 표에서 볼 수 있듯, 비슷한 모델 사이즈를 가진 OpenAI GPT 대비 벤치마크 점수가 평균적으로 높게 측정된 것을 확인할 수 있습니다.

 

또한 BERT Large 모델에서 BERT Base 모델 대비 아주 적은 데이터셋 크기에서 상당히 뛰어난 성능을 보이는 것을 확인할 수 있습니다.

 

SQuAD v2.0 Results

 

두 번째는 QA(Question and Answering) 에 대한 벤치마크인 SQuAD 에 대한 결과입니다.

주어진 문단에서 질문에 대한 답을 찾는 벤치마크인데, SQuAD 1.1의 경우 주어진 문단 내에 반드시 답이 존재한다고 가정한 벤치마크라면 2.0의 경우 이러한 가정을 완화하여 보다 일반적인 상황을 반영한 벤치마크입니다. (답변이 없을 수도 있는 경우를 포함하였습니다.)

 

이 결과 또한 Human(expert)보다 뛰어난 Benchmark 결과를 얻은 것을 확인할 수 있습니다.

 

 

이처럼 BERT 모델은 Fine-tuning을 통해

QA, 텍스트 분류, 텍스트 이해, 다국어 등 다양한 벤치마크에서 매우 뛰어난 성능을 보인 것을 알 수 있습니다.

 

 

Ablation Studies

 

Ablation over the pre-training tasks using the BERT base architecture

 

먼저 NSP(Next Sentence Prediction)에 대한 결과입니다. 여기서 의미하는 LTR은 Left to Right 입니다.

BERT base 모델에서 NSP를 제외한 결과 스코어 성능이 저하된 것을 확인할 수 있습니다. 두 번째 경우는 LTR & No NSP로, Left to Right 결과를 사용하기 때문에 MLM 대신 LTR을 사용하여 실험한 것을 확인할 수 있습니다.

 

Semantic textual similarity를 비교하는 데이터셋인 MRPC(Microsoft Research Paraphrase Corpus)의 경우 LTR을 적용하였을 때, 확실히 다른 데이터셋에 비해 성능이 확연이 저하되는 경향을 확인할 수 있습니다.

 

BiLSTM을 붙인 경우 여전히 Bidirectional model로 Pre-train된 경우 대비 여전히 성능이 안좋은 것을 확인할 수 있고 GLUE task에서 좋지않은 성능을 보였습니다.

 

 

Ablation over BERT model size

 

다음은 BERT의 파라미터 수 변화에 따른 결과입니다.

확실히 모델 사이즈가 커짐에 따라 성능이 향상되는 것을 확인할 수 있습니다. 😅

 

여기서 의미하는 LM(ppl)은 제외된 학습 데이터에 대해 마스크된 언어모델의 perpexlity(평균 잔여 엔트로피)입니다.

값이 작을수록 언어모델이 데이터를 잘 모델링했다는 것을 의미합니다. 역시나 모델 사이즈가 커짐에 따라 일반화 성능이 좋아지는 것을 확인할 수 있습니다. 

 

 

Conclusion

결론적으로, BERT 모델은 양방향 컨텍스트 정보를 통한 사전학습된 지식을 충분히 활용해서 다양한 Downstream task에서 탁월한 transfer learning 성능을 보이는 것을 확인할 수 있었습니다. 따라서 적은양의 label 데이터로도 높은 정확도를 나타내는 것을 확인할 수 있습니다.

 


프로젝트 일환으로 w2v(wav2vector) 음성 모델에 대한 fine-tuning을 진행하면서

BERT와 같은 Encoder-only 모델의 fine-tuning 방법과, 이점에 대해 알아보고자 논문리뷰를 진행해 보았습니다.

NLP task 뿐만 아니라 음성분야에서도 많이 쓰이고 LLM 연구를 위해서도 꼭 알아할 논문이라고 생각됩니다.

BERT에 대해 공부하고 어떤 형태로 모델이 구성되었는지, 어떻게 학습된 모델인지를 알아볼 수 있는 좋은 경험이었습니다.

궁금한점이나 오류에 대한 댓글은 언제든 환영입니다🤗