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

2021. 4. 9. 14:07논문 리뷰

728x90
반응형

Bert란 무엇인가?

Introduction

  • 구글에서 개발한 NLP(자연어처리) 사전 훈련 기술
  • 특정 분야에 국한된 기술이 아니라 모든 자연어 처리 분야에서 좋은 성능을 내는 범용 Language Model 11개 이상의 자연어처리 과제에서 BERT가 최첨단 성능을 발휘
  • 지금까지 자연어처리에 활용하였던 앙상블 모델보다 더 좋은 성능을 내고 있어서 많은 관심을 받고 있는 언어모델

Pre-training을 통해 NLP task를 처리하고자 하는 노력은 이전부터 있었다.

크게 두가지 부류로 볼 수 있는데 feature-based, fine-tuning 방식이다.

Bert는 이 중 fine-tuning 방식에 초점을 맞춰 학습한 모델이며 각각의 특성은 아래의 그림과 같다.

Bert는 fine-tuning 방식이다

각 방식에 예시로 나오는 ELMO, OpenAI GPT를 살펴보자

OpenAI GPT의 경우 BERT와 굉장히 형식이 유사하다. 하지만 attention mask를 이전까지와의 관계를 본다는 것이 차이점이 있다.

 

ELMO의 경우는 LSTM을 사용했는데 위의 그림과 같이 Left-to-Right, Right-to-Left 양방향으로 학습하였다. 하지만 feature-based로 학습을 하다보니 task-specific 한 architecture로 변질된다는 단점이 있다.

 

 

Architecture

Bert는 크게 Pre-training, Fine-Tuning 두가지 프로세스로 나눌 수 있다.

 

 

Bert의 학습방법

Pre-training 학습방법

Bert의 학습방법 왼쪽이 MLM(MaskedLM) 오른쪽이 NSP(Next Sentence Prediction)

 

Bert의 pre-training 학습방법은 두가지다.

 

Masked LM(MLM)

위의 그림과 같이 문장 중 일부의 단어를 가리는 형태로 학습을 진행한다. 15%의 WordPiece를 가려서 학습을 한다. 이때, 80%는 [Mask] token을 주고 학습하고 10%는 random 하게 전혀 상관없는 token을, 10%는 있는 그대로 학습을 진행한다.

 

Left-to-Right로 진행한거보다 훨씬 성능이 좋다.

 

Next Sentence Prediction (NSP)

두개의 문장을 넣어서 학습하는 방법인데, 이는 문장간의 상관도도 같이 학습하기 위함이다.

위의 pre-training 방법 그림의 우측에 나와있는 것 처럼, 두개의 문장을 넣고 다음문장이 맞는지 아닌지 label을 줘서 학습을 한다. 이전의 work들은 문장 전체를 하나로 embedding해서 관계 비교를 했지만 bert는 모든 단어 비교를 통해 문장의 관계를 파악하기 때문에 더 효과적이다.

 

Bert의 input 형태

Bert의 Embedding 과정을 보면 먼저 word 단위로 잘라 tokenize를 시키고 이를 Token Embedding 시킨다.

다음으로 Segment Embedding을 해주는데 이는 [0, 0, 0, 0, 0, 1, 1, 1, 1, 1] 의 형태로 문장이 어디에 속하는지 나타내주는 부분이다. 어디까지가 0번 문장인지, 어디까지가 1번 문장인지 알려주는 형태이다.

Position Embedding은 transformer에서 부여하는 것과 동일하다.

 

Pytorch로 예시 코드를 돌려보면,

 

 

여기서 input_ids는 token들의 embedding 값에 대한 token_id 값들이다.

token_type_ids 부분이 segment Embedding 과정이라고 볼 수 있고, attention_mask 같은 경우는 OpenAI GPT와 비교해서 Bert는 양방향으로 전체를 다 보기 때문에 전부 1로준다. (Attention Is All You Need 논문에서 소개된 transformer 는 mask로 자신의 왼쪽에 있는 요소들만 봐준다)

 

Fine Tuning 학습 방법

Fine Tuning의 학습 방법은 자신이 원하는 task에 맞게 뒷부분을 수정해 사용할 수 있다.

 

 

Experiments

실험 part에서는 11개의 NLP Task에 대해서 비교분석을 해놓았다.

 

모델은 두가지로 나누어서 진행을 했으며,

 

BERTbase : L=12, H=768, A=12, Total Parameters: 110M

 

BERTlarge : L=24, H=1024, A=16, Total Parameters: 340M

 

각 사이즈는 이런 형식으로 구성되어 있으며, base 모델의 경우 OpenAI GPT와 Parameter갯수나 모델 사이즈를 같게 만들었다.

 

GLUE 비교

 

SQuAD v1.1 & SQuAD v2.0

SWAG

 

 

다양한 분야에서 SOTA를 달성할 뿐만 아니라 인간의 정확도를 넘어선 task들도 있었다.

 

학습방법에 대해서도 비교를 해놓았는데 NSP가 없는 가정, MLM방식이 아닌 Left-to-Right 방식을 통해 학습했을때의 결과도 비교를 했는데 기존의 방식을 없애면, 정확도는 떨어졌다.

 

Effect of Pre-Training Tasks

 

728x90
반응형