BERT는 Tramsformer 의 양방향 인코더를 사용해 token의 representation을 학습한다. 최근 언어모델(GPT, ElMo)과 달리, BERT는 모든 계층에서 왼쪽과 오른쪽 context를 공동으로 조절하여 레이블이 없는 텍스트로 부터(unsupervised learn) 심층 양방향 표현을 pre-traning하도록 설계되었다.
결과적으로 사전 훈련된 BERT 모델은 작업별 아키텍처 수정없이 Q&A 및 언어 추론과 같은 광범위한 작업에 대한 state-of-the-artf model을 만들기 위해 하나의 추가 출력 계층으로 fine-tuning할 수 있다.
언어 모델 사전 훈련은 많은 자연어 처리 작업을 개선하는 데 효과적인 것으로 나타났다. 다운스트림¹ 작업에 사전 훈련된 언어 표현(PLM, pre-trained language model)을 적용하기 위한 방법은 현재 크게 2가지로 구분된다.
feature-based
ELMo
특정 task를 수행하는 network에 pre-trained language representation을 추가적인 featrue로 제공. 즉, 두개의 network를 붙여서 사용한다고 보면 된다.
fine-tuning
두 방식 모두 pre-training하는 과정에서는 동일한 objective(목적함수)를 사용하고, 동일하게 undirectional language model(단방향 언어모델)을 사용한다.
BERT pre-training의 새로운 방법론은 크게 2가지로 나눌 수 있다. 하나는 Masked Language Model(MLM), 또 다른 하나는 **Next Sentence Prediction(NSP)**이다.
기존 방법론: 앞서 소개한 ELMo, OpenAI GPT는 일만적인 language model을 사용하였다. 이는 앞의 n개의 단어를 가지고 뒤의 단어를 예측하는 모델을 세우는 것이다(n-gram). 하지만 이는 필연적으로 undirectional할 수 밖에 없고, 이러한 단점을 극복하기 위해 ELMo에서는 Bi-LSTM으로 양방향성을 가지려고 노력하지만, 굉장히 shallow한 양방향성(단방향 concat 단방향)만을 가질 수 밖에 없었다.
Masked Language Model(MLM) : MLM은 input에서 무작위하게 몇개의 token을 mask시킨다. 그리고 이를 Transformer 구조에 넣어서 주변 단어의 context만을 보고 mask된 단어를 예측하는 모델이다.
OpenAI GPT도 Transformer 구조를 사용하지만, 앞의 단어들만 보고 뒷 단어를 예측하는 Transformer decoder 구조를 사용한다. 이와 달리 BERT에서는 input 전체와 mask된 token을 한번에 Transformer encoder에 넣고 원래 token값을 예측하므로 deep bidirectional하다고 할 수 있다. BERT의 MLM에 대해서는 뒤의 Pre-training Tasks에서 더 자세히 설명한다.
Next Sentence Prediction(NSP) : 두 문장을 pre-training 시에 같이 넣어줘서 두 문장이 이어지는 문장인지 아닌지 맞추는 것이다. pre-training시에는 5:5 비율로 실제로 이어지는 두 문장과 랜덤하게 추출된 두 문장을 넣어줘서 BERT가 맞추게 시킨다. 이러한 task는 실제 Natural Language Inference와 같은 task를 수행할 때 도움이 된다.
ELMo, OpenAI GPT와 같은 모델이 존재. 추후 다루겠음