BERT의 차별적인 특징은 서로 다른분야에서 구조가 통합된다는 것이다. Pre-trained 구조와 마지막 downstream 구조의 차이점을 최소화한다.
BERT는 다층 bidirectional Transformer encoder 구조이며 tensor2tensor 라이브러리로 release된다. Transformer의 사용으로 평범하고 실행이 거의 원본과 동일하기 때문에 backbone 모델의 철저한 분석은 생략할 것이다.
이 작업에서 우리는 층의 개수를 L, 은닉 층의 크기를 H, self-attention heads를 A로 표기한다. 아래의 두 개의 모델을 이용하여 성능을 비교한다.
BERT base 모델은 비교를 위해 OpenAI GPT와 같은 크기를 가지도록 선택되었다. 그러나 모든 토큰이 오직 왼쪽 내용에만 영향을 줄 수 있는 GPT Transformer와 대조적으로 BERT Transformer는 bidirectional self-attention을 사용한다.
BERT가 다양한 down-stream 작업을 다루기 위해서, 입력 해상도는 하나의 토큰 안의 단일 문장과 질문과 답변 같은 두 쌍의 문장 둘 다를 분명하게 표현한다. 이러한 작업을 통해 언어적 문장보다는 문장은 인접한 내용의 임의의 폭이 될 수 있다. 문장은 BERT의 입력 토큰들을 참고하고, 단일 문장 또는 두 문장이 합쳐진 것들이 될 수 있다.
본 논문에서는 3만개의 토큰 사전과 함께 WordPiece embeddings를 사용한다. 모든 sequence의 첫번째로, 토큰은 항상 special classification token ([CLS]) 이다. 마지막 은닉층에 해당하는 토큰은 분류 작업을 위한 aggregate sequence representation 으로 사용된다. 두 번째로, learned embedding을 문장 A에 속하는지, B에 속하는지 표시하는 모든 토큰에 추가한다. input embedding을 E로, special [CLS] token 의 마지막 hidden vector를 C ∈ RH, 그리고 마지막 hidden vector의 입력 토큰을 Ti ∈RH 으로 표현한다. 주어진 토큰을 위해, 입력 해상도는 그에 상응하는 token, segment, 그리고 position embeddings를 합산함으로써 구성되어진다. 이 구조의 시작화는 위 그림과 같다.
본 논문에서는 BERT를 사전학습 하기 위해 이전방식에서 사용된 left-to-right 또는 right-to-left 언어 모델을 사용하지 않는다. 대신에, 두 개의 unsupervised tasks를 사용한다. 이 과정은 첫 번째 그림의 왼쪽 부분에 묘사되어있다.
<Test #1: Masked LM>
직관적으로, 이 과정은 left-to-right 모델 또는 left-to-right, right-to-left를 합친 얕은 모델과 비교해서 깊은 양방향 모델을 엄격하게 더 강하게하는데 합리적이다. 불행하게도, 각각의 단어들이 자기 자신을 직접적으로 볼 소 있도록 하고 여러개의 층의 내용에서 대상 단어를 예측할 수 있는 bidirectional conditioning 방식에 비해, standard conditional 언어 모델들은 오직 left-to-right 또는 right-to-left 방식으로만 학습될 수 있다.
Deep bidirectional representation을 학습하기 위해, 본 논문에서는 간단한 입력 토큰의 랜덤한 비율로 마스크를 씌우고, 마스크 처리된 토큰들을 예측한다. 이러한 과정을 masked LM (MLM)으로 부를 것이다. standard LM 에서는 mask tokens들과 상응하는 마지막 hidden vectors 들은 vocabulary를 통해 출력 softmax에 입력된다. 본 논문의 실험에서 각각의 문장의 모든 WordPiece tokens들의 15%만 랜덤으로 마스크를 했다. Denoting auto-encoders 방식과 대조적으로, 입력 전체를 복구하기 보다는 오직 마스크된 단어만 예측한다.
이것이 bidirectional pre-trained model을 얻을 수 있게 할지라도, [MASK] token이 fine-tuning 과정에서 나타나지 않기 때문에 pre-training과 fine-tuning 사이에 불일치를 만들고 만다. 이것을 완화시키기 위해, 마스크된 단어를 실제 [MASK] token으로 항상 대체하지 않는다. 학습 데이터 생성기는 예측을 위해 랜덤하게 token positions의 15%를 선택한다. i 번째 토큰이 선택될 때, 해당 토큰을 80% 확률로 [MASK] token, 10% 확률로 랜덤한 토큰, 나머지 10% 확률로 그대로 i 번째 토큰으로 대체한다. 그 후 cross entropy loss를 통해 original token을 예측하는데 사용된다.
<Task #2: Next Sentence Prediction (NSP)>
Question Answering (QA)와 같은 downstream 작업들과 Natural Language inference (NLI) 들은 두 문장사이의 관계를 이해하는 것에 기반을 두고 있고, 언어 모델에 의해 간접적으로 포착된다. 문장의 관계를 이해하는 모델을 학습하기 위해서, 모든 단일언어 말뭉치로부터 생성될 수 있는 binarized next sentence 예측 작업을 위해 pre-train 한다. 구체적으로, 각각의 pre-training 예시를 위해 문장 A와 B를 선택했을 때 50%확률로 B가 실제로 A를 따라 다음 문장이 되고, 나머지 50% 확률로 NotNext로 라벨된 뭉치로 부터 랜덤한 문장이 된다. 첫 번째 그림과 같이 C는 next sentence prediction (NSP)를 위해 사용된다.
NSP 작업은 representation learning objectives와 밀접하게 관련되어 있다. 그러나, 이전 작업에서, 오직 sentence embeddings들만이 downstream 작업으로 전송되며, 여기서 BERTsms end-task 모델 파라미터를 초기화 하기위해 모든 파라미터를 전송한다.
Pre-training Data
Pre-training 절차는 존재하는 언어 모델의 과정을 대부분 따른다. Pre-training corpus를 위해, BooksCorpus(800M words), 그리고 English Wikipedia (2,500M words)를 사용한다. Wikipedia에서 text 구절만 추출하고, 나머지 목록이나 테이블 그리고 헤더들은 무시한다. Billion Word Benchmark 같은 뒤섞인 sentence-level corpus를 사용하는 것 보다 document-level corpus를 사용하는 것은 긴 인접 묹장을 추출하기 위해 중요하다.
Transformer의 self-attention mechanism 으로 인하여 BERT가 적절한 입력과 출력을 교체함으로써 Single text 또는 text pairs 같은 많은 downstream 작업들을 설계할 수 있으므로 Fine-tuning 과정은 간단하다. text pairs applications의 경우 한가지 흔한 패턴은 bidirectional cross attention을 적용하기 전에 독립적으로 text pairs들을 encode 하는 것이다. BERT는 self-attention mechanism을 이용하여 이 두 간계를 통합하며, self-attention과 함께 encoding으로 합쳐진 text pair는 두 문장 사이의 bidirectional cross attention을 효과적으로 포함한다.
각각의 작업에서 BERT의 task-specific 입력과 출력을 간단하게 연결하고, 모든 파라미터를 미세조정 한다. 입력에서, pre-training의 문장 A와 문장 B들은 아래와 유사하다.
1) sentence pairs in paraphrasing (의역의 두 문장)
2) hypothesis-premise pairs in entailment (가설과 전제)
3) question-passage pairs in question answering (질문과 답변)
4) a degenerate text-∅ pair in text classification or sequence tagging.
출력에서, token representations들은 sequence tagging 또는 question answering 같은 token-level tasks들을 위해 출력 layer에 들어간다, 그리고 [CLS] representation은 entailment 또는 sentiment analysis 같은 classification을 위해 출력 layer에 사용된다. Pre-training 과정과 비교하면, fine-tuning은 비교적 간단하다. 논문의 모든 결과는 single Cloud TPU 환경에서 최대 1시간, GPU 환경 에서 수시간 동안 복제가 가능하다.