BERT : Birdirectional Encoder Representations from Transformers
양방향 언어 모델링
BERT: Pre-training of Deep Bidirectional Transformers for
Language Understanding
https://arxiv.org/pdf/1810.04805.pdf
GitHub - google-research/bert: TensorFlow code and pre-trained models for BERT
https://github.com/google-research/bert
머신 러닝 모델들이 단어를 처리하고 계산에 이용하기 위해서는 이 단어들을 숫자로 표현(numeric representation)해야 한다. Word2vec는 벡터를 이용하면 단어의 의미, 의미와 관련된 관계, 문법, 문법과 관련된 관계를 나타낼 수 있음을 보였다.
매우 빠르게 모델이 이용하는 작은 데이터셋에서 처음부터 학습시키는 것보다 아주 많은 양의 텍스트 데이터에서 pre-train된 embedding을 이용하는 게 좋음. Word2Vec 혹은 GloVe와 같은 알고리즘들을 이용해 pre-train된 단어들의 embedding을 다운받을 수 있음.
실제 숫자는 너무 많으므로 보통 간단한 형태의 그림으로 word embedding을 나타냄
GloVe representation을 이용하면 “stick”이란 단어는 어떤 맥락에서도 같은 벡터로 나타남. 하지만 어떤 문맥에서 이용되냐에 따라 다른 의미를 가질 수 있음.
→ 어떤 맥락에 있는지에 따라 다른 embedding을 이용해야 함. 맥락 속 단어의 의미 뿐 아니라 맥락 자체에 대한 정보도 embedding에 담고 싶음
→ contextualized word-embedding
Embeddings from Language Models의 약자
사전 훈련된 언어 모델 (Pre-trained language model)
대규모 텍스트 데이터를 사용하여 사전에 훈련 → 모델이 다양한 문맥에서 언어를 이해하고 학습하는 데 도움
단어의 sequence에서 다음 단어를 예측하는 Language Modeling에서 언어에 대한 이해를 습득. (다음 단어를 label로 쓰기 때문에 사람의 도움(human annotation)없이 엄청난 양의 모든 텍스트 데이터를 학습 데이터로 이용 가능)
두 개의 LSTM 기반 unidirectional 언어 모델들 (Left-to-right and right-to-left)
Forward, Backward 두 방향으로 Langiage model 수행
Feature-based approach: Task-specific model의 입력 벡터로 활용할 수 있는 표현을 추출
다른 작업에 활용될 수 있도록 언어 모델로부터 추출한 표현을 사용. 이러한 표현은 특정 작업에 맞게 조정될 수 있음 → 텍스트 분류나 개체명 인식과 같은 작업에 유용하게 활용
1B word benchmark(Chelba et al., 2014)에서 단일 문장들을 활용해 학습

Bidirectional Encoder Representations from Transformers
구글에서 개발한 자연어 처리 신경망 구조. Transformer 구조의 encoder를 적층시킴

wiki나 book data와 같은 대용량 unlabeled data로 모델을 미리 학습시킨 후, 특정 task를 가지고 있는 labeled data로 transfer learning을 하는 모델
2단계 step

pre-training(semi-supervised)된 BERT 모델에 classification을 fine-tuning(supervised training)하였다
이런 모델을 학습시키기 위해 classifier를 train시켜야 함 (BERT 모델의 학습 과정을 최소한으로 변경하면서) → Fine-Tuning
사용 예제: 감성 분석, 사실 확인 등
BERT는 size에 따라 base와 large 모델로 나뉨
매우 많은 수의 encoder layer(Transformer Blocks)를 가짐
feedforward-network의 크기 또한 매우 크고(768개, 1024개의 hidden unit) 많은 attention heads를 가짐

BERT는 Transformer Encoder stack만을 이용한 모델
Model Inputs
Model Outputs

마지막 벡터를 활용하는 모습이 VGGNert과 같은 convolution 부분의 결과를 마지막 fully-connected classification 부분에서 이용하는 것과 유사

양방향 모델에서는 일반적인 언어모델링(left-to-right)을 할 수 없음
Solution : Mask out k% of the input words then predict the masked word
입력 텍스트에서 15%의 단어를 가려버리고(masking) 모델에게 그 가려진 단어들을 알아맞추게 함
transformer의 encoder 부분을 LM에 활용할 수 없었던 가장 큰 이유는 기존 LM 테스크 자체가 트랜스포머의 encoder에 적합하지 않았기 때문. LM은 알 수 없는 다음의 단어를 예측하는 테스크라면 트랜스포머의 encoder는 self-attention 층에서 모든 단어들을 봐야했기 때문. BERT는 기존 task를 살짝 변형한 “masked language model” 개념으로 문제를 해결함.
단순히 입력의 15%를 마스킹하는 것 뿐만 아니라 나중에 fine-tuning 하는 과정을 위해 몇가지 다른 task들을 추가. ex) 마스킹할 때 그저 단어를 없애는 것이 아니라 랜덤하게 뽑은 다른 단어로 바꿔 모델에게 원래의 맞는 단어를 예측하게 하는 등..


In BERT, pretrain once and finetune many times

Sentence pair classification tasks:
Single sentence classification tasks:
For sentence pair tasks, use [SEP] to separate the two segments with segment embeddings
Add a linear classifier on top of [CLS] representation and introduce
× new parameters
C: # of classes, h: hidden size

Extractive question answering e.g., SQuAD
Named entity recognition
For token-level prediction tasks, add linear classifier on top of hidden representations
How many new parameters?
RoBERTa (Liu et al., 2019)
ALBERT (Lan et al., 2020)
ELECTRA (Clark et al., 2020)
Models that handle long contexts (≫ 512 tokens)
Multilingual BERT
BERT extended to different domains
Making BERT smaller to use
ELMo가 사용하는 contextualized word-embedding의 특징과 활용 방법에 대해 설명하시오.
contextualized word embedding은 문맥에 따라 word의 의미가 달라질 수 없는 점을 고려하여 임베딩을 생성한다. 이를 통해 단어의 다의어성과 문맥 의존성을 더 잘 캡처할 수 있다. ELMo의 이러한 특징은 자연어 처리 task에 활용하기 좋고, 다양한 transfer learning에 사용된다.
OpenAI GPT와 ELMo의 차이점을 비교 설명하시오.
ELMo는 두 개의 LSTM을 기반으로 하는 bidirectional 언어 모델으로 featured-based approach를 특징으로 한다. OpenAI는 transformer decoder 기반 unidirectional 언어 모델으로 fine-tuning approach를 특징으로 한다. ELMo는 파라미터가 고정되어 있지만 OpenAI는 downstream task에 의해 모델 파라미터가 재사용/업데이트된다는 점도 차이가 있다.
BERT의 전반적인 모델 아키텍처와 Pre-training 작업에 사용된 방법들에 대해 설명하시오.
BERT는 transformer의 encoder를 적층시킨 구조를 가지면서 양방향 언어 모델링을 수행한다.
pre-training에서는 semi-supervised learning을 사용하는데, Masked Language Modeling과 Next Sentence Prediction이 함께 훈련된다.
BERT의 Masked Language Modeling(MLM)과 Next Sentence Prediction(NSP)에 대한 학습 과정과 목적을 설명하시오.
MLM은 input word의 k%를 random하게 making하여 word를 예측하는 모델링이다. 이는 기존에 transformer의 encoder를 LM에 사용하기 어려웠던 문제를 해결한다. 모델은 문맥을 기반으로 문장 내 각 단어의 다양한 특성과 의미를 파악하도록 학습된다.
NSP는 많은 자연어 처리 작업들에서 필요한 두 문장 간 관계 이해 능력을 학습시키기 위해 고안된 방법이다. 두 문장의 쌍을 입력받아 두 문장이 연속인지 아닌지를 예측하도록 학습된다. BERT는 80-10-10 corruption steragy를 활용하는데 학습 데이터의 80%는 [MASK] 토큰으로 대체하고, 10%는 무작위의 다른 단어로 대체하며, 10%는 그대로 유지하는 전략이다.
BERT의 Fine-tuning 작업에서 Sentence-level tasks와 Token-level tasks에 대해 설명하시오.
Sentence-level task는 문장 전체에 대한 예측을 수행하는 task로 그 예시로는 두 문장 간의 관계 분류, 단일 문장 분류 등이 있다. Token-level task는 각 토큰에 대한 예측을 수행하는 task로 NER(Named Entit Recognition), extractive QA 등이 있다.