BERT(Bidirectional Encoder Representations from Transformers)는 모든 층에서 양방향 문맥 정보를 동시에 학습하는 언어모델이다.
학습은 두 단계로 진행된다.
먼저 라벨이 없는 대규모 텍스트를 활용하여 사전학습(pretraining)을 진행하고, 이후에는 단 하나의 output layer만 추가해 각 task에 맞게 finetuning함으로써 다양한 task에 적용한다.
이러한 방식 덕분에 BERT는 별도의 task-specific 아키텍처 없이도 다양한 NLP 태스크에서 우수한 성능을 보인다.
( * task-specific architecture : 특정 작업(task)에 맞게 딱 그 작업만을 위해 별도로 설계된 구조)
대표적으로 다음과 같은 성과가 나타났다.
- GLUE score: 80.5% (+7.7%p 개선)
- MultiNLI accuracy: 86.7% (+4.6%p 개선)
- SQuAD v1.1 Test F1: 93.2 (+1.5p)
- SQuAD v2.0 Test F1: 83.1 (+5.1p)
이처럼 BERT는 구조적으로는 단순하지만, 다양한 NLP tasks에서 매우 강력한 성능을 발휘하는 모델임을 보여준다.
Language model pre-training은 다양한 NLP tasks 성능을 향상시키는데 효과적이다.
사전학습된 언어 표현 모델(pre-trained language representations)을 downstream tasks에 적용하는 두 가지 전략이 있다.
기존의 ELMo(피처 기반)와 GPT(파인튜닝 기반) 모두, 사전학습 단계에서 단방향 언어 모델 objective를 사용했다.
즉, 일반적인 언어 표현을 학습하기 위해 단방향 언어 모델(unidirectional LM) 기반 objective를 따른다.
추가적으로 설명하자면,
BERT는 본질적으로 양방향 모델이지만, 사전학습 단계에서는 문장 내 일부 단어를 MASK로 가리고 문맥을 통해 어떠한 단어가 들어갈지 맞추는 학습법인 MLM(Masked Language Modeling) 방식을 사용하여 학습된다!
(이 내용은 BERT pre-training 섹션에서 자세히 다룰 예정이다.)
기존 언어 모델은 left-to-right 기반의 단방향(unidirectional) 구조로, 현재 단어를 예측할 때 앞쪽 문맥만을 활용한다. 이러한 구조는 문장 전체 문맥을 이해해야 하는 sentence-level task에서는 성능이 떨어지고, 특히 QA와 같이 토큰 수준에서 양방향 문맥을 이해해야 하는 중요한 tasks에서는 성능 저하로 이어질 수 있다.
이러한 기존 fine-tuning 기반 접근 방식의 한계를 극복하기 위해 BERT (Bidirectional Encoder Representations from Transformers)가 제안되었다.
기존 언어 모델이 left-to-right(단방향) 정보만 활용했던 것과 달리, BERT는 pre-training 단계에서 양방향 문맥 정보를 동시에 학습할 수 있도록 설계되었다.
이를 가능하도록 하는 핵심 요소가 Masked Language Modeling (MLM) 기법이다.
MLM 기법은 입력 문장에서 일부 단어를 MASK로 가린 후, 해당 위치의 단어를 양방향 문맥을 통해 예측하도록 학습시킨다. 이를 통해 모델은 앞 뒤 문맥을 모두 고려한 표현을 학습하게 된다.
또한 BERT는 Next Sentence Prediction (NSP)라는 task도 도입하였다.
이는 단순히 두 문장이 이어지는지 여부를 맞히는 데 그치지 않고, 문장 쌍 간의 의미적 관계를 학습할 수 있도록 설계되었다.
BERT는 다음과 같은 세 가지 핵심 기여를 통해 기존의 언어 모델 한계를 극복하였다.
기존 언어 모델들이 단방향 정보만 활용했던 한계와 달리, BERT는 Masked Language Model (MLM)을 통해 더 깊은 양방향 표현 학습을 가능하게 하였다.
기존 모델은 과제별로 별도 구조를 설계해야 했지만, BERT는 하나의 모델을 기반으로, 다양한 과제에 fine-tuning만으로 SOTA 성능을 달성하였다. 이로써 하나의 범용 언어 표현 모델로서 가능성을 보여주었다.
마지막으로 다양한 NLP 과제에서 성능이 향상 되었다.
앞서 나왔듯이 총 11개의 자연어 처리 과제에서 기존 최고 성능을 갱신하였다.
언어 표현을 사전학습하는 접근은 NLP에서 오래된 주제이며, 특히 word-level에서 일반화된 표현을 학습하는 연구는 오랜 기간 활발히 진행되어왔다.
사전학습된 word embedding은 현대 NLP system의 필수 요소이며, scratch에서 학습한 임베딩에 비해 성능이 뛰어나다. 이 과정은 크게 non-neural 기반 방법과 neural 기반 방법으로 나뉜다.
대표적인 학습 objective는 다음과 같다.
- Left-to-right language modeling
- dis-criminate correct from incorrect words (in left and right context)
이러한 단어 수준의 임베딩 학습 방식은 문장(sentence) 및 문단(paragraph) 임베딩 수준으로 확장되었다.
Kiros et al. (2015): 이전 문장을 인코딩하고, 그 표현을 사용하여 다음 문장의 단어를 left-to-right 방식으로 생성하는 학습 objective을 제안하였다.
Logeswaran and Lee (2018), Jernite et al. (2017): 후보 문장 중 다음 문장을 올바르게 맞히는 ranking objective을 사용하였다.
Le and Mikolov (2014): 문단 전체의 임베딩을 학습하는 Paragraph Embedding 방식을 제안하였다.
Hill et al. (2016): denoising autoencoder objective를 활용해 문장 표현을 학습하도록 하였다.
ELMo와 그 이전 모델들은 기존 word embedding 접근을 다음과 같이 확장하였다:
이렇게 학습된 표현은 기존 task-specific 모델과 통합되어 질문 응답(QA), 감정 분석(Sentiment Analysis), 개체명 인식(NER) 등 다양한 NLP 과제에서 SOTA 성능을 달성했다.
Melamud et al.: 양방향 문맥을 활용하여 단일 단어를 예측하는 task로 contextual representation 학습하였다.
Fedus et al. : cloze task를 통해 test generation 모델의 robustness를 개선할 수 있음을 보였다.
초기 연구 : unlabeled text로부터 단어 임베딩만 사전 학습하였다.
최근 연구 : 단어에서 더 나아가, 문장이나 문서 수준 인코더를 unlabled text로부터 사전학습하고 그 다음 supervised downstream task에 맞춰 파인튜닝되며, 결국 이 인코더들은 contextual token representation을 생성한다.
이 방식의 장점은 완전히 처음부터 학습해야 하는 파라미터가 적다는 점이다.
실제로 OpenAI GPT는 GLUE 벤치마크에서 sentence-level tasks에 대해 SOTA 성능을 달성하기도 하였다.
large datasets를 사용한 supervised task에서 학습한 모델이 다른 NLP task로 효과적으로 transfer될 수 있다!
ex) NLI, Machine Translation, lmageNet

BERT는 Pre-training 단계와 Fine-tuning 두 단계로 구성된 사전학습 기반 모델이다.
사전학습 동안 모델이 unlabeled data로 훈련된다.
BERT 모델은 pre-trained parameters로 초기화되며,
이후 downstream task의 labeled data를 활용해 모든 파라미터를 전체적으로 파인튜닝한다.
각 downstream task는 same pre-trained parameters로 초기화되었다고 하더라도, fine-tuning 과정에서 각 task마다 개별적으로 학습된 모델이 생성된다.
BERT의 distinctive feature는 pre-training 시점과 fine-tuning 단계에서 아키텍처 차이가 거의 없다는 것(minimal difference)이다.
즉, task에 따라 별도의 구조를 새로 설계할 필요 없이, 같은 모델을 그대로 fine-tuning하여 다양한 task에 적용할 수 있다는 장점이 있다.
BERT는 multi-layer bidirectional Transformer encoder 구조를 갖는다.
multi-layer bidirectional Transformer encoder + tensor2tensor library
이 구현은 Vaswani et al. (2017)의 Transformer 구조를 기반으로 하며, tensor2tensor 라이브러리를 활용해 구현되었다.
Transformer 구조 자체는 널리 알려져 있기 때문에 BERT의 구현도 거의 비슷하므로 자세한 설명은 생략하고자 한다.
주요파라미터
number of layers (L), hidden size (H), the number of self-attention heads (A)
두 가지 model size
- 1) (L=12, H=768, A=12, Total Parameters=110M)
- 2) (L=24, H=1024, A=16, Total Parameters=340M)
는 공정한 비교를 위해 OpenAI GPT와 동일한 모델 크기로 선택되었다.
하지만, BERT Transformer는 Unidirectional self-attention한 GPT와 달리 bidirectional self-attention이라는 차이점이 있다.
따라서 BERT는 각 토큰이 왼쪽 context만 참조할 수 있는 self-attention 구조인 GPT와 달리, 양방향 문맥을 모두 참조할 수 있어 더 깊은 의미 이해가 가능하다.
BERT는 다양한 down-stream task를 처리하기 위해, 단일 문장과 문장 쌍 둘 다 하나의 token sequence로 명확하게 표현할 수 있는 Input Prepresentation 방식을 사용한다.
여기서 sentence는 반드시 문법적 문장이 아니라 연속된 텍스트일 수 있고,
그리고 sequence는 BERT에서 주어지는 input token sequence 전체를 뜻하며, 단일 문장이거나 두 문장을 합쳐 구성된 경우도 포함된다.
BERT는 입력 문장을 다음과 같은 순서로 전처리와 임베딩을 진행한다.
WordPiece embedding 사용하며 30,000 token vocabulary를 갖는다.
모든 입력 sequence의 첫 번째 token은 special token(CLS)로 시작한다.
각 입력 토큰의 최종 임베딩(input representation, 입력 벡터)은 토큰 임베딩 + 세그먼트 임베딩 + 포지션 임베딩 3가지의 임베딩 합으로 이루어진다.

traditional left-to-right or right-to-left language models을 BERT를 pre-trained하는데 사용하지 않았다. 대신에 two unsupervised tasks를 사용하여 pre-trained 하였다.
직관적으로 보면 당연히 단방향 모델보다 deep bidirectional model이 훨씬 강력하다. 근데 문제가 뭐냐면 기존 standard conditional language model은 left-to-right 또는 right-to-left 단방향으로만 학습할 수 있다. 왜냐하면 bidirectional conditioning이 되면 자기 자신을 간접적으로 볼 수 있기(see itself) 때문이다! 이렇게 되면 모델이 답을 미리 알고 맞히는 셈이 되기 때문에 학습이 무의미해진다.
그래서 BERT는 input token을 무작위로 마스킹(mask)하고, 그 위치의 단어를 예측하는 방식으로 문제를 해결한다. (MLM 방식)
구체적인 구조를 살펴보자면, 입력 시퀀스에서 WordPiece 토큰의 15%를 무작위로 선택해 마스킹하고, 마스킹된 위치에 대응되는 final hidden vector를 softmax에 넣어 단어를 예측하는 방식이다.
자세히 보면,
1. 입력 토큰 시퀀스를 구성후,
2. 전체 WordPiece 토큰 중 15%를 무작위로 마스킹하고,
3. Transformer 인코더를 거쳐, 각 토큰마다 hidden vector를 얻고,
4. 마지막으로 마스킹된 위치에 해당하는 hidden vector를 softmax layer로 전달한다.
그러면 이 softmax는 전체 voca에 대해 확률을 뽑아내고, 가장 높은 확률 단어가 모델의 예측 단어인 것이다.
(실제로 입력 시에는 마스킹되어 있어서 [MASK] 자리에 뭔지 몰르지만,
하지만 예측(추론)할 때는 그 위치를 포함한 전체 문맥의 앞뒤 정보를 모두 이용해서 예측한다!)
BERT의 MLM 방식은 학습 시 일부 토큰을 무작위로 가려놓고 예측하게 만드는 구조이다.
근데 문제는 [MASK] 토큰은 pre-training에는 등장하지만, fine-tuning 때는 등장하지 않아서 mismatch 발생한다!
그래서 BERT는 이 mismatch를 줄이기 위해, [MASK]로만 무작정 대체하지 않고 확률적으로 처리한다.
80% -> [MASK]로 대체
10% -> 랜덤한 다른 단어로 대체
10% -> 원래 단어 그대로 유지
이렇게 함으로써, 모델은 [MASK]라는 토큰에만 의존하지 않도록 하여 자연스러운 입력 상황에서도 예측 성능을 유지할 수 있게 한다!
QA와 NLI와 같이 중요한 downstream tasks은 두 문장 사이의 관계를 이해하는게 중요하다.
근데 기존 language modeling만으로는 이러한 관계를 직접적으로 학습하는데 어려움이 있다.
그래서 BERT는 이러한 sentence간의 관계를 잘 학습하기 위해 NSP를 도입하였다.
NSP 구성 요소를 살펴보자면,
그리고 NSP 판단할 땐 [CLS] 토큰에 해당하는 최종 hidden vector(C) 하나만 가지고 분류한다. 문장 전체를 요약한 벡터 하나로 IsNext / NotNext 판단하는 방식이다.
추가적으로 기존 연구와의 차이점을 보면,
기존 방식은 pretraining 후에 sentence embedding만 downstream task에 전달한 반면, BERT는 pretraining에서 학습한 전체 모델 파라미터를 downstream task에 그대로 넘겨서 fine-tuning한다.
덕분에 사전학습된 전체 파라미터를 downstream task에 그대로 활용할 수 있어, 전이학습의 정밀도와 유연성이 크게 향상된다!
Transformer의 self-attention mechanism 덕분에, BERT가 input/output 형식만 적절히 바꿔주면 다양한 downstream tasks를 modeling할 수 있다!
기존에는 text 쌍을 독립적으로 encode하고, bidirectional cross-attention을 적용하였다.
하지만 BERT는 text 쌍을 하나의 sequence로 concat하여 encoding한 후, 그 결과에 대해 self-attention을 수행함으로써, 두 문장이 동시에 bidirectional cross attention을 효과적으로 이루어지게 하였다.
각 downstream task에 대해 BERT는 단순히 task-specific한 입/출력만 맞춰주고, 전체 파라미터를 end-to-end로 fine-tuning하면 된다.
입력에서는, pretraing에서의 sentence A, B 구조가 다양한 task에 유사하게 적용된다. 예를 들어,
(1) sentence pairs -> Paraphrasing
(2) hypothesis-premis (가설-전제 쌍) -> Entailment (문장 포함 관계)
(3) question-passage pairs (질문-지문 쌍) -> QA
(4) degenerate text - ∅ pairs -> Text classification or Sequence tagging
출력에서는,
(1) 토큰 수준 task (ex. sequence tagging, question answering): 각 토큰의 representation이 그대로 output layer에 전달되어 예측 수행한다.
(단어 하나하나가 예측 결과가 필요하니, 각 단어의 벡터를 사용한다.)
(2) 문장 수준 task (ex. entailment, sentiment analysis): [CLS] 토큰의 최종 hidden vector 하나를 output layer에 넣어 분류를 수행한다.
(문장의 전체 의미가 중요하지 개별 단어 하나하나가 중요한 건 아니므로,맨 앞의 [CLS] 토큰에 해당하는 hidden vector 하나를 문장 대표로 쓴다.)
BERT의 fine-tuning은 pre-training에 비해 상대적으로 inexpensive하다.
왜냐면 이미 거대한 데이터로 학습된 모델을 살짝만 조정(fine-tune)하면 되기 때문이다!
논문에서 보여주는 모든 결과는 Cloud TPU 기준 1시간 이내, 또는 일반 GPU 몇 시간 내에 재현 가능하다.
BERT를 11개의 다양한 NLP task에 fine-tuning한 실험 결과를 이 섹션에서 소개한다.
GLUE benchmark는 다양한 자연어 이해(NLU) task로 구성된 데이터셋이다.
GLUE fine-tuning시, Section 3에서 언급한 input 구성 방식을 그대로 따랐고, [CLS] 토큰의 final hidden vector 'C'를 문장 전체를 대표하는 벡터로 사용하였다.
오직 새롭게 도입된 파라미터는 classification layer weights인 W이다.
(W ∈ ℝᴷˣᴴ (K는 레이블 수, H는 hidden size))
이때 log(softmax(CWᵀ))를 통해 분류 손실을 계산한다.

학습 설정은 다음과 같이 설정하였다.
그리고 모델은 small datasets에서는 fine-tuning이 불안정한 경우도 존재하여, random restarts을 여러번 수행하였고, 그 중 Dev set에서 성능이 가장 좋은 모델을 선택했다.
위 결과표를 보면(Table 1), , 모두 모든 task에서 이전 시스템들을 압도적으로 outperforming한 모습을 볼 수 있다.
특히 주목할 점은, 와 OpenAI GPT가 모델 아키텍처 측면에서 거의 동일함에도 불구하고, 성능 차이가 크다는 것이다.
이는 BERT의 pre-training 방식이 성능에 핵심적인 영향을 준다는 사실을 보여준다.
예를 들어, GLUE에서 가장 크고 널리 알려진 task인 MNLI에서 BERT는 무려 4.6%의 절대 정확도 향상을 달성하였다.
또한 공식 GLUE leaderboard 기준, OpenAI GPT는 72.8점을 기록한 반면, 는 80.5점을 기록하여 명확한 우위를 보였다.
마지막으로 실험 결과에서 는 특히 학습 데이터가 매우 적은 task들에서 보다 훨씬 뛰어난 성능을 보였다.
Stanford Question Answering Dataset은 총 10만개의 QA pairs으로 구성된 데이터셋이다.
각 샘플은 Wikipedia로부터 질문과 지문이 주어지며, 정답은 지문 내 text span으로 구성된다. 즉, 지문 속 어디에 정답이 있는지 모델이 직접 찾아야 하는 구조이다.

입력 방식으로, question과 passage를 하나의 시퀀스로 붙이고, 각각 segment A, B를 적용한다.
([CLS]question tokens[SEP]passage tokens[SEP])
BERT는 QA 태스크에서 정답의 시작 위치와 끝 위치를 예측하기 위해 두 개의 벡터 S, E를 fine-tuning 시에 새로 도입한다.
각 토큰의 hidden vector 에 대해, 시작 위치의 확률은 로 계산한 점수에 softmax를 적용해 구한다.
이와 유사한 방식으로, 끝 위치의 확률은 에 대해 softmax를 적용해 계산한다.
최종적으로, (j>=i) 조건을 만족하는 모든 토큰 쌍 중에서
가 가장 높은 span을 정답으로 예측한다.
학습의 목적 함수는 정답 시작 위치와 끝 위치에 대한 log-likelihood의 합이다.
학습 세팅: 3 에폭, learning rate 5e-5, 배치사이즈 32로 설정하였으며,
결과를 요약해보자면,
이처럼 BERT는 다음 세 가지 측면에서 기존 시스템 대비 확실한 성능 향상을 보여주었다.

SQuAD v2.0은 SQuAD 1.1을 확장하여, 질문에 대한 정답이 존재하지 않을 수도 있는 경우를 포함한다.
BERT는 정답이 없는 경우, [CLS] 위치를 시작과 끝으로 간주한다. 이에 따라 softmax를 계산할 때 [CLS] 위치도 후보로 포함되며, start/end 확률 공간은 [CLS]를 포함해 확장된다.
일반적인 정답 span :
“정답 없음” 판단용 점수 :
그리고 쵲종 예측 시, 다음과 같은 조건을 따져야 한다.
이 조건을 만족하면 정답이 있다고 판단하고 span을 예측하고, 그렇지 않다면 답이 없다(null answer)고 예측한다!
여기서 는 dev set에서 F1 score가 최대가 되는 임계값으로 설정한다.
추가적으로, 다음과 같이
SWAG (Situations With Adversarial Generations)는 총 113k개의 문장 쌍 완성 예제로 구성된 상식 기반 추론 데이터셋이다.
여기서 task는 주어진 문장(문맥) A가 있을 때, 그 뒤에 올 가장 자연스러운 문장 B를 4개 보기 중 고르는 선택형 문제이다.
SWAG 데이터셋을 fine-tuning할 때, 우리는 총 4개의 입력 시퀀스를 만든다. 각각은 주어진 문장 A와 가능한 후속 문장 B를 하나씩 붙인(concatenated) 형태다.
BERT를 이 task에 fine-tuning할 때는, 각 문장 A와 4개의 문장 B 후보를 하나씩 연결해서, 총 4개의 입력 시퀀스를 만든다.
(즉, 각각의 입력은 “문장 A + 문장 B” 형태로 구성됨)
그리고 모델 구조 측면에서 새로 추가된 파라미터는 오직 하나의 벡터다.
이 벡터는 각 시퀀스의 [CLS] 토큰에서 나온 hidden vector C와 내적(dot product) 되어, 각 선택지에 대한 점수(score) 를 계산한다.
이렇게 계산된 4개의 점수에 softmax를 적용해서, 가장 자연스러운 문장 B (즉, 정답) 을 선택하게 된다.
학습은 다음 조건으로 진행된다:
실험 결과, BERT Large 모델은 기존 SOTA 모델인 ESIM+ELMo보다 +27.1%, OpenAI GPT보다 +8.3% 더 높은 성능을 기록했다.
BERT의 어떤 구성 요소가 실제 성능에 얼마나 기여하는지 검증한 Ablation Study이다.

간단히 살펴보자면,
BERT의 deep bidirectionality의 중요성을 확인하기 위해, 다음 조건들을 동일하게 고정해 두 가지 pre-training objectives를 비교한다.
추가 조건으로, fine-tuning 시에도, left-only constraint 유지된다. 그 이유는 이를 제거하면 pre-train/fine-tune mismatch이 발생하여 downstream 성능이 저하되었기 때문이다.
추가적으로 이 모델은 직접적으로 OpenAI GPT와 비교가능하지만, 단, BERT의 더 큰 pre-training 데이터셋, 입력 표현 방식(input representation), fine-tuning 방식 사용한다.
NSP 없이(No NSP) pre-training하였을 때 성능이 떨어지고,
"LTR & No NSP" 모델은 모든 태스크에서 성능이 더 나빠졌다.
그리고 MRPC, SQuAD에서 큰 하락이 있다는 것을 알 수 있다.
특히 SQuAD와 같은 task에서 LTP model이 token prediction 부분에서 성능이 낮은 모습을 보였다. 왜냐하면 token-level hidden states가 우측 문맥(right-side context)을 전혀 볼 수 없기 때문이다.
그래서 성능 향상을 위해, LTR 모델 위에 randomly initialized BiLSTM을 추가하였다. 이를 통해 결과적으로 SQuAD 성능은 다소 향상되는 모습을 보였으나, 여전히 BERT의 bidirectional 구조보다 성능이 낮다. 특히 GLUE tasks에서는 오히려 성능이 떨어졌다.
ELMo처럼 LTR + RTL 모델을 따로 훈련한 후 결과를 concat할 수도 있지만,
5.2절에서는 BERT 모델 size 변화가 fine-tuning 성능에 어떤 영향을 주는지를 실험적으로 보여주었다.
GLUE tasks에 대한 결과는 Table 6와 같다.

GLUE 태스크에서의 성능을 비교해보면, 모델이 커질수록 정확도는 꾸준히 증가하였다.
이 특징은 MRPC처럼 학습 샘플이 적은 태스크(3,600개)에서도 동일하게 나타난다. 즉, 소규모 supervised task에도 대형 모델이 효과적임을 보여준 사례다!
또한 일반적으로 모델이 커지면 어느 순간 diminishing return이 발생할 것으로 예상되지만, BERT는 이미 꽤 큰 모델임에도 불구하고, 더 키우자 또 성능이 좋아졌다.
원래 기계 번역이나 언어 모델링 같은 대규모 task에서 모델이 커질수록 성능이 향상되는 것은 알려져있었지만,
BERT를 통해 extreme model sizes에서도 모델 크기를 키우면 성능이 크게 향상되는 모습을 처음으로 입증하였다.
이전 연구에서는 feature-based 접근을 사용해 mixed results를 보였지만,
BERT는 fine-tuning 방식을 채택하고 소량의 추가 파라미터만 사용하는 구조라서,
표현력이 풍부한 pre-trained model의 이점을 직접적으로 downstream task에 전달할 수 있다!
앞서 BERT는 대부분 fine-tuning 방식으로 downstream task에 적용되었다. 이 절에서는 feature-based 방식도 실험하여 성능을 비교하였다.
fine-tuning과 동일 태스크(CoNLL-2003 NER)에 대해 성능을 수치적으로 비교하고자 한다.
fine-tuning 방식을 대체적으로 분석(ablation)하기 위해 feature-based approach를 적용하였다.
이 방법에서는 BERT의 파라미터를 fine-tuning하지 않고, one or more layers로부터 activations을 extracting하였다.
이 contextual embedding은 분류기를 거치기 전, 2-layer 768차원 BiLSTM의 입력으로 사용되었다.

를 사용한 feature-based 방식은 기존 SOTA 모델들과 유사한 성능을 보였다.
가장 성능이 높은 방법은, BERT의 top 4 hidden layers에서 추출한 token representation을 concat하여 사용한 방식이었다.
이 방식은 전체 fine-tuning 모델보다 단 0.3 F1 낮았다.
기존 연구들은 transfer learning(전이 학습)을 통해 비지도 사전학습이 low-resource task에 효과적임을 보였다.
이 논문에서의 중요한 기여는 이 결과를 깊은 양방향 아키텍처로 일반화했다는 것이다.
즉, 하나의 사전학습된 모델만으로도 다양한 NLP task를 성공적으로 해결할 수 있도록 한 것이 핵심 성과이다!