BERT
BERT논문은 2018년도에 출판된 논문으로 벌써 5년된 논문이다.
BERT모델은 Language Model에 대해 처음 공부할 때 봤었던 논문이지만 지금 다시 재대로 보는 이유는 다음과 같다.
① LLM에 관련된 연구의 깊이 있는 이해를 하기 위해 Basic한 BERT 모델의 이해는 중요하다.
② GPT와 함께 Transformer을 잘 활용한 모델이라 생각한다.
③ 다양한 NLP Task에 적용하기 위해서 기본 BERT 모델에 대한 완벽한 이해는 필수다.
1. Introduction
Language model의 Pretraining은 많은 Natural Language Process(NLP) task에 효과적이었다.
- Sentence Level Task : 문장 추론, 의역, 문장간의 관계 파악
- Token Level Task : Named Entity Recognition, Question Answering
Language Model은 down stream task에 적용하기 위해 사용되는 2가지 방식에 대한 이해 필요하다.
1) feature-based Method : ELMo
ELMo는 두개의 LSTM 네트워크를 활용한 모델이다. 순방향 LSTM과 역방향 LSTM이 존재하며, 보통 2층 구조를 사용한다.
① 첫번째 층 LSTM은 각 단어에 대한 정보를 포착한다.
② 두번째 층 LSTM은 첫번째 층 보다 더 복잡한 문맥적 관계를 포착한다.
③ 각 층의 출력을 결합하고 스케일링 인자를 곱한다. 이를 바탕으로 출력을 만든다. $h_{forward} = \gamma (s_1h_1+s_2h_2)$
④ 양방향의 정보를 통합하기 위해 concatenate 또는 합산하는 방식으로 결합한다.
DownStreamTask에 적용하기 위해서 large corpus로 학습된 ELMo를 사용하며, Task Specific Architecture을 통해 Task에 맞는 output을 예측한다.
즉, ELMo는 단어의 추가적인 feature을 통해 풍부한 정보를 제공한다.
✔︎ ELMo도 순방향과 역방향을 모두 사용하기에 Bidirectional Language Model이라 생각할 수 있지만, ELMo는 단방향 출력값을 단순히 concat하기 때문에 BERT와 같이 Deep bidirectional하지 않다.
2) fine-tuning Method : OpenAI GPT
여러분들에게 가장 익숙할 OpenAI GPT이다. 단방향 모델로 유사한 문장을 생성해주는 목적을 가지고 있다. 해당 모델은 pre-training과 fine-tuning stage로 나뉜다.
① Pre-training 단계에서는 이전 단어를 바탕으로 다음 단어를 생성하는 과정을 학습한다.
② Fine-tuning 단계에서는 최소한의 parameter만 추가하는 대신, 전체적인 parameter을 조정한다.
특히 GPT는 decode단계에서 transformer을 사용해 단어를 순차적으로 생성한다.
해당 논문에서 제시한 문제점
① 위의 두가지 방식은 pre-trainined representation의 능력을 제한하는 것이라 주장했고
② Fine-tuning 방식은 더 제약이 심하다고 주장했다.
③ standard language model은 단방향이기에 pre-training시에 사용할 수 있는 방법이 제한적이다.
이러한 문제점은 Sentence-level의 task에서도 비효율적이지만, 주변 정보에 더 의존적인 Token-level에 치명적이다라고 설명했다.
해당 논문에서 제시한 아이디어
논문의 제목인 BERT : Bidirectional Encoder Representation from Transformer를 제시한다.
① input의 token중 랜덤으로 masking하여 문맥을 이용하는 Masked Language Model(MLM)을 제시한다.
② 양방향으로 예측하기 위해 Deep Bidirectional Transformer을 제시한다.
③ 텍스트 쌍을 이용하여 다음 문장 예측도 수행한다.
④ pre-trainined representation이 복잡한 architecture의 필요성을 줄여준다.
2. BERT
BERT pre-training step과 fine-tuning step으로 나뉘어진다. pre-training과정 중에는 unlabeled data를 이용하여 학습하고, fine-tuning과정 중에는 down stream task에 적용하기 위한 labeled data를 이용하여 학습한다.
2.1 Model Architecture
BERT는 여러층의 양방향 Transformer encoding의 구조를 가지고 있다.
논문에서는 2가지 크기의 BERT 모델을 제시한다.
$L$ = Transformer Layer(Block)의 수, $H$ = Hidden Size, $A$ = Self Attention Head Size
①$BERT_{BASE}$ (L=12, H=768, A=12, Total Param=110M, 1억1천만)
②$BERT_{LARGE}$ (L=24, H=1024, A=16, Total Param=340개, 3억4천만)
모델을 2개 제시하는 이유는 $BERT_{BASE}$는 GPT와 parameter수를 맞추어 비교에 용이하도록 하기 위함이다.
BERT는 폭넓은 Downstream Task를 포괄하기 위해 단일 문장과 질문쌍(<Question,Answer>)을 하나의 token sequence로 받을 수 있도록 하였다.
BERT에서 sentecne : 일반 문장의 구조와 다르게, 연속된 단어의 나열이라 정의한다.
BERT에서 sequence : single sentence일 수도, pair sentece일 수도 있다.
BERT는 두개의 문장으로 구성된 시퀀스 데이터를 입력받는다. 여기서 입력되는 문장중 일부는 마스킹 처리가 된다.
✔︎ CLS토큰은 문장 가장 앞에 위치하며, classification에 사용된다.
✔︎ SEP토큰은 두개의 시퀀스가 입력되었을 때, 문장을 구분하기 위해 사용된다.
CLS token은 C토큰으로 임베딩되고, 각각의 문장에 대한 정보도 포함되어 $T_i$와 $T_i'$로 임베딩된다.
입력 토큰
BERT는 3가지 토큰에 대한 정보가 입력된다. 3개의 Embedding은 모두 동일한 차원을 사용한다.
① Token Embeeding : 각 토큰에 대한 Embedding Vector로 BERT는 WordPiece를 사용해 30000개의 단어를 embedding
② Segment Embedding : sequence가 2개 입력될때, sequence를 구분하는 정보
③ Positional Embedding : Transformer에서 사용한 Embedding Vector와 동일
2.2 Pretraining Method
BERT는 2가지 목적을 가지고 학습을 진행한다.
Task 1 : Masked Language Model (MLM)
deep bidirectional representation을 학습시키기 위해 입력 토큰 중 일부를 masking하고, 이를 예측하는 과정을 가진다.
학습과정중 15%의 token을 masking한다.
$w_1$ ~ $w_5$가 입력될 때 $w_4$가 masking되었다. $w_1$ ~ $w_5$는 encoder을 거쳐 $O_1$ ~ $O_5$로 출력되고, Neural Network를 거쳐 $w'_4$가 출력된다. BERT는 $w_4$와 $w'_4$가 동일하도록 학습시킨다.
MLM의 문제점
Masking하는 과정은 Pre-training 과정에서만 사용하고, Fine-tuning 과정에서는 사용되지 않아 토큰에 대한 Mismatch가 발생할 수 있다. 따라서 $i$번째 token이 마스킹 토큰으로 선정되었을 때, 80%만 [MASK]로, 10%는 Random 토큰으로, 10%는 변경하지 않고 남겨둔다.
예시는 다음과 같다.
비율은 실험을 통해 성능이 가장 높은 8:1:1 비율을 선택했다.
Task 2 : Next Sentece Prediction (NSP)
Question Answering 과 Natural Language Inference는 문장간의 이해가 있어야 수행가능하다. BERT는 문장간의 관계를 파악하기 위해 Next Sentence Prediction 학습을 진행한다.
NSP를 예측하기 위해 class label에 해당하는 $C$토큰을 이용하며, 학습은 Sequnce의 2개의 sentence중 50%는 [IsNext], 50%는 [NotNext]를 사용하여 학습한다.
NSP학습은 MLM과 동시에 진행되며, 논문에 따르면 방법은 간단하지만 QA와, NLI에 효과적이다.
2.3 Fine-tuning Method
Transformer의 self-attention 메커니즘 덕분에 BERT는 많은 downstream task를 input과 output만을 이용하여 모델링 할 수 있다.
해당 논문에서는 4가지 input을 사용하였다.
① sentence pair 분류 [ output: 범주예측 ]
② single sentence 분류 [ output : 범주예측 ]
③ question answering [ output : 문장생성 ]
④ tagging [ output : 문장생성 ]
예를 들어 Experiment부분에 기재된 GLUE dataset의 적용과정을 보면,
fine-tuning과정중 $C$ 토큰을 가지고 분별할 수 있는 classification layer만을 추가하여 downstream task에 적용한다.
3. Concolusion
해당 BERT논문을 바탕으로 ALBERT, RoBERTa, SpanBERT등 다양한 모델이 탄생했다.
BERT는 MLM구조를 사용함과 동시에, NSP 학습 아이디어를 접목시켜 다양한 downstream task에 적용을 용이하게 하였다.
Encoding 과정에 transformer을 사용하였지만, sub-task에 직접 적용하기는 어렵기에, 현재 생성형 LLM으로 분위기가 넘어간 것 같다.
하지만 그만큼 가벼워 간단한 Task에는 사용할 수 있을 것 같다.
4. Reference
https://yeong-jin-data-blog.tistory.com/entry/Transfomer-BERT