일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Today
- Total
- activation function
- AdaGrad
- adaptive learning rate
- arithmetic reasoning
- Attention is all you need
- attention mechanism
- auto encoder
- Back Propagation Trough Time
- Backpropagation
- Bayes Theorem
- BCE
- Bert
- Bidirectional Encoder Representation from Transformer
- Binary classification
- BPTT
- Chain-of-Thought
- CNN
- commonsense reasoning
- Computer Vision
- Confusion Matrix
- convolutional neural network
- Cot
- cot reasoning
- counting
- Cross Entropy Loss
- deep learning
- degradation
- Dimension Reduction
- Few-shot
- fine-tuning
데이터 분석 일지
[Paper Review] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 본문
[Paper Review] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
-ˋˏ ♡ ˎˊ- 2024. 3. 12. 21:41본 논문에서는 BERT(Bidirectional Encoder Representations from Transformers)라는 language representation model을 제시한다. BERT는 모든 계층에서 left & right context를 조정하여 unlabeled text에서 심층 양방향 표현을 pre-train하기 위해 설계되었다. 결과적으로 pre-train된 BERT는 광범위한 task에 대해 하나의 추가적인 output layer만 가지고 fine-tune할 수 있다.
1. Introduction
언어 모델을 pre-training하는 것은 많은 natural language processing task에서 성능 향상을 보였다. downstream task에 pre-trained language representation을 적용하는 방법은 아래처럼 두 가지로 나누어 볼 수 있다.
- feature-based approach: 이 방법은 추가적인 feature로 pre-trained representation을 포함하는 task-specific architecture를 사용한다. 이러한 접근의 예시로는 ELMo가 있다.
- fine-tuning approach: 이 방법은 최소한의 task-specific 파라미터를 도입하고, pre-training된 모든 파라미터를 간단하게 fine-tuning하여 downstream task에서 훈련된다. 이러한 접근의 예시로는 GPT가 있다.
current techniques' weakness
이 두 접근 모두 일반적인 language representation을 학습하기 위하여 단방향 언어 모델을 사용한다는 공통점이 있다. 기본 언어 모델로 단방향 언어 모델을 사용함으로써, pre-training시에 사용되는 architecture 선택의 한계를 불러온다. 예를 들어 GPT에서는 left-to-right architecture를 사용하는데, 이 architecture는 sentence-level task에서 최적의 구조가 아니고 이를 token-level task에 적용한다면 굉장히 해로울 것이다.
solution: BERT
본 논문에서는 양방향 언어 모델을 사용함으로써 이러한 한계를 극복해낸다. BERT는 pre-training objective로 masked language model을 사용한다. 이 모델은 입력된 token을 무작위로 mask하고, 이 mask된 token의 원래 의미를 입력된 context에만 기반하여 예측하는 것을 목표로 한다.
3. BERT
BERT는 Figure 1과 같이 크게 두 가지의 step으로 구성되어 있다. 이는 각각 pre-training과 fine-tuning이다.
- pre-training할 때는 다른 pre-training task의 unlabeled data를 사용한다.
- fine-tuning을 하기 위해서는 먼저 BERT 모델을 pre-train된 parameter로 초기화하고, 모든 parameter는 downstream task의 labeled data를 사용하여 fine- tuning된다. 각 downstream task는 각각 다른 fine-tune된 모델을 가지고 있지만 이 모델은 같은 pre-train된 parameter로 초기화 되었다.
각각 다른 task들이 같은 구조를 가진다는 것은 BERT 특유의 특징이다. pre-train 했을 때의 모델 구조와 최종 downstream 모델 구조 사이의 변형을 최소화했다는 의미이다.
Model Architecture
본 논문에서는 모델의 구조를 생략한다. [Attention is All You Need]에서 제시했던 Transformer의 본래 구조와 거의 동일한 구조로 사용(기본적인 BERT의 구조는 Transformer의 encoder를 쌓아 올린 형)되기 때문이다. 따라서 본 논문을 읽는 저자들에게 [Attention is All You Need]*와 The Annotated Transformer (harvard.edu)를 읽는 것을 추천한다.
모델을 설명하는 과정에서 아래는 각각 철자가 의미하는 것을 나타낸다.
- L = number of layers (i.e., Transformer blocks)
- H = hidden size
- A = number of self-attention heads
- E = input embedding
- C = final hidden vector of the special [CLS] token (H차원)
- T_i = final hidden vector for the i^th input token (H차원)
또한 본 논문에서는 주로 아래의 두 가지 모델의 결과를 설명한다.
- BERT_BASE (L = 12, H = 768, A = 12, Total Parameters = 110M)
- BERT_LARGE (L = 24, H = 1024, A = 16, Total Parameters = 340M)
BERT_BASE는 OpenAI의 GPT와 성능 비교를 위하여 같은 모델 사이즈로 구성했다. 하지만 중요한 것은 GPT는 context의 왼쪽(이전) 정보에만 의존하는 constrained self-attention을 사용하지만, BERT Transformer는 bidirectional self-attention을 사용한다는 것이다.
*이전 블로그에서 본 논문의 리뷰를 작성함
Input/Output Representaion
BERT가 다양한 downstream task를 다루게 하기 위해서, 모델의 input representation은 하나의 token sequence에서 단일 문장과 복수 문장(e.g., Question, Answer)을 명확하게 나타낼 수 있게 한다.
매 sequence 마다 시작 token은 special classification token인 [CLS]로 설정한다. 이 token에 해당하는 final hidden state는 classification task를 위한 종합적인 sequence representation으로 사용된다. 복수 문장은 하나의 sequence로 묶여진다. 본 연구에서는 두 가지 방법으로 문장을 구별한다. 첫째로 special token인 [SEP]으로 문장을 분리한다. 다음으로는 각 token에 대해 학습된 embedding을 추가하여 해당 token이 문장 A에 속하는지 아니면 문장 B에 속하는지를 나타내도록 한다.
주어진 token의 input representation은 대응하는 token과 segment와 position의 embedding의 합으로 이루어진다. segment embedding은 여러 문장이 입력되었을 때 문장들을 구분하기 위한 vector이다. Figure 2는 이 구조를 시각화한 것이다.
3. 1 Pre-Training
BERT를 pre-training하기 위해서는 left-to-right LM이나 right-to-left LM을 사용하지 않는 대신에, MLM과 NSP라는 두 개의 unsupervised task를 사용한다. 이 단계는 Figure 1에서 왼쪽 부분을 의미한다.
Task #1: Masked LM
직관적으로 deep bidirectional model이 단방향 model(GPT)이나 단방향 model의 shallow concatenation(ELMo)보다 더 성능이 좋다고 믿기 합당하다. bidirectional conditioning은 각 단어가 간접적으로 '자기 자신을 보게'되어 예측이 쉬워지기 때문에, standard conditional LM은 단방향으로 밖에 훈련할 수 없다.
본 논문에서는 이를 해결하기 위하여 MLM 방법을 사용한다. 입력되는 token 중 일부를 무작위로 mask하고, mask된 token을 예측함으로써 deep bidirectional rerpesentation을 훈련시킬 수 있다. BERT는 전체 input의 15%를 무작위로 mask한다. 이 mask된 token에 해당하는 final hidden vector들이 standard LM과 마찬가지로 vocabulary에 대한 output softmax로 전달된다.
하지만 MLM에는 한 가지 단점이 있다. 이는 pre-training 과정에는 [MASK] token이 존재하지만, fine-tuning 과정에는 존재하지 않아 mismatch를 불러 일으킨다는 것이다. 이를 완화하기 위해서, 매번 "mask된" 단어를 실제 [MASK] token으로 대체하지는 않는다. 만약 i번째 token이 선택 됐을 때 다음과 같은 비율로 대체한다:
- i번째 token을 80%의 확률로 [MASK] token으로 대체
- i번재 token을 10%의 확률로 random한 token으로 대체
- i번째 token을 10%의 확률로 대체 X
그 다음엔 T_i가 원래 token을 예측하도록 cross entropy loss와 함께 pre-training된다.
MLM을 사용함으로써 Transfomer의 encoder가 예측해야되는 token이나 random token으로 교체된 token이 어떤 token인지 미리 알 수 없기 때문에, 강제로 모든 입력 토큰에 대한 분포된 contextual rerpesentation을 유지해야 한다는 장점이 있다. 게다가 random token으로 교체되는 token은 전체 token의 1.5%(15% 중 10%)에 불과하기 때문에 모델의 언어 이해 능력에 해를 끼치지 않는다.
Task #2: Next Sentence Prediction (NSP)
QA나 NLI와 같은 task들은 두 문장 사이에 관계를 이해하는 것을 기반으로 수행된다. 하지만 LM을 통해서 두 문장 사이의 관계를 직접적으로 알 수 없다. 문장 간 관계를 이해하도록 모델을 훈련하기 위해서는 이진 분류 작업인 NSP로 pre-train한다. NSP는 모든 단일 corpus에서 쉽게 수행할 수 있다. NSP를 수행하는 방법은 간단하다. pre-training을 위한 문장 A와 B를 추출할 때*, 50%는 B가 실제 A 다음에 오는 문장이 되도록 추출하고, 나머지 50%는 corpus에서 무작위로 선택된 문장인 것이다. 이때 실제 다음 문장은 [IsNext]라고 레이블링하고, 무작위로 선택된 문장은 [NotNext]로 레이블링하여 이진분류를 하는 것이다. Figure 1에서 나타나 듯이, 벡터 C는 NSP를 위해 사용된다.** NSP task은 단순한 task임에 불구하고 NSP 수행 후의 pre-training이 QA와 NLI에서 좋은 성능을 보였다.***
*두 가지의 문장을 추출하는 NSP를 위해 input representation에 segment embedding이 포함되는 것이다.
**final model은 97% - 98%의 정확도를 가진다.
***벡터 C는 fine-tuning 없이는 의미있는 sentence representation은 아니다.
3. 2. Fine-Tuning BERT
fine-tuning은 간단하다. Transformer의 self-attention 구조에서 적절한 input으로 바꾸어 사용하기 때문이다. 각 task에 대해 단순하게 BERT에 task-specific input과 output을 연결하고 모든 parameter에 대해 ene-to-end로 fine-tune한다.
input에서는 pre-training(NSP)할 때의 문장 A와 B는 다음과 같이 이루어진다:
- Paraphrasing: sentence pairs
- Entailment: hypothesis-premise pairs
- Question Answering: question-passage pairs
- Text Classification or Sequence Tagging: a degenerate text-Ø
output 에서는, token-level task(sequence tagging, question answering)를 위해서 token representation이 output layer로 입력되고, classification(entailment, sentiment analysis)을 위해서 [CLS] representation이 output layer로 입력된다.
추가적으로 아래의 Figure 3은 BERT의 task-specific fine-tuning 구조이다.
(a)와 (b)는 sequence-level task이고, (c)와 (d)는 token-level task이다. (a)의 경우 두 문장을 입력 받아 두 문장 간의 관계를 분류하는 task이다. (b)의 경우 단일 문장을 입력 받아 sentiment analysis등으로 문장의 속성을 분류하는 task이다. (c)의 경우 question과 paragraph를 입력 받아 question에 대한 answer를 새롭게 출력하는 task이다. (d)의 경우 단일 문장을 입력 받아 각 token의 속성을 출력하는 tagging task이다. 모든 task가 같은 pre-training을 거치고 fine-tuning시에도 하나의 output layer만 추가하여 최종 BERT 모델이 된다.
4. Ablation Studies
4. 1. Effect of Pre-Training Tasks
본 연구에서는 pre-training의 효과 검증을 위해서 두 가지의 방법으로 pre-training을 진행한다. 또한 BERT_BASE와 같은 pre-training data, 같은 구조, 같은 hyperparameter로 진행하였다.
No NSP: MLM을 사용하고 NSP는 수행하지 않는다.
NTR & No NSP: left-to-right LM을 사용하고 NSP는 수행하지 않는다. fine-tuning에서도 left-to-right LM을 사용한다. 안 그러면 mismatch가 발생하기 때문이다. 또한 이 경우 GPT와 비슷한 구조를 가지지만 여기서의 data set과 input representation과 fine-tuning scheme이 더 크다.
Table 1에서 BERT_BASE와 NO NSP를 비교해보자. 문장 간의 관계 이해 능력을 요하는 task에서 BERT_BASE의 성능이 더 높은 것을 확인할 수 있다. 또한 LTR을 사용했을 경우에는 MRPC task에서 상당히 하향된 성능을 볼 수 있다. 이처럼 MLM과 NSP의 효과를 확인할 수 있다.
4. 2. Effect of Model Size
Table 2에서 나타나듯이 모델의 크기가 클 수록 성능이 향상하는 것을 확인할 수 있다.
4. 3. Feature-Based Approaches with BERT
BERT가 fine-tuning을 사용하지 않고, feature-based를 사용한다면 어떻게 될까. feature-based는 fixed rerpesentation을 사용하는 방법으로써 장점이 있다. 먼저 모든 작업이 Transformer 인코더 아키텍처로 쉽게 표현될 수 있는 것은 아니기 때문에 task-specific model architecture가 추가되어야 하는 경우가 있다. 다음으로는 pre-train할 때 비용이 많이 드는 representation을 한 번만 계산하고 이후에는 비용이 저렴한 model architecutre를 여러 번 수행하면 비용 절감이 가능하다.
BERT는 애초에 fine-tuning 단계에서 큰 변형을 주지 않았다. 단지 초기 parameter로 pre-train된 parameter를 사용하고, pre-train할 때와 같은 모델 구조를 사용하며 이후에 하나의 output layer만 추가하였다. 따라서 Table 3을 보면 feature-based를 사용할 때나 fine-tuning을 사용할 때나 큰 차이를 보이지 않는 것을 알 수 있다.