BERT [Pre-training of Deep Bidirectional Transformers for Language Understanding]
Abstract
BERT 란 Bidirectional Encoder Representations from Transformer 를 뜻합니다. 기존에 존재하던 모델과 다르게 BERT 는 unlabeled text 에 대해 모든 레이어에서 양쪽 context 를 모두 고려하였습니다.
pre trained BERT 모델은 한개의 추가적인 layer 만으로(즉, 특정 task 를 처리하기 위해 새로운 network 를 붙일 필요 없이 Bert 모델 자체의 fine-tuning 을 통해 처리가 가능하다는 말) 다양한 task 에서 SOTA 를 달성하였습니다.
Introduction
Language model pre-training 방식은 많은 NLP task들을 효과적으로 개선시키는 것으로 확인되었습니다. (e.g, sentence level task, paraphasing, token level(q/a, , named Entity recognition))
pre-trained language model 을 downstream-task 에 적용하는 방식은 크게 두가지로 나눌 수 있습니다.
특정 task 를 해결하기 위한 architecture를 만들고 pre-trained language representation 을 추가적인 feature 로 제공하는 것입니다.(e.g ELMo)
기존의 방법론은 unidirectional 하여 pre-training 을 할 때에 architectual 선택지가 제한적이었습니다.
예를들어 GPT 의 경우 left-to-right architecture (오른쪽 단어를 예측) 를 사용하여 transformer 의 self attention layer(masked multi-head attention을 사용) 는 이전 토큰에 대한 정보만을 살펴보게 됩니다.
masked language model(MLM) 은 input 의 일부 랜덤한 token 에 mask 를 씌워 목표함수가 mask 된 부분의 원래 단어를 예측할 수 있도록 하였습니다.
mask 에 해당하는 단어는 문맥만을 기반으로 하여 유추해 낸 것입니다.
오른쪽 단어를 예측하는 left-to-right language 모델과 다르게 MLM 은 양방향 모두의 context 를 representation 할 수 있으므로 deep bidirectional transformer 를 pre-trained 할 수 있게 됩니다.
unidirectional language model(left-to-right, right-to-left) 은 shallow 한 양방향성이라는 문제점이 존재하게 됩니다.
model 에서는 "next sentence prediction" 을 사용하는데 nsp 는 representation 과 text-pair representation 을 합한 것입니다. 간단히 설명하자면 두문장을 pre-training 을 할때 같이 넣어 두 문장이 이어지는 문장인지 아닌지 맞추는 것입니다.
pre-training 을 할 때에는 1:1 비율로 실제로 이어지는 두 문장과 랜덤하게 선택된 두 문장을 넣어 BERT 가 맞추도록 하는 식입니다.
이 방법은 실제 Natural Language Inference 와 같은 task 를 수행할 때에 도움이 된다고 합니다.
pretrained representations 는 많은 무거운 task specific architecture 의 필요성을 줄일 수 있습니다. BERT 는 최초로 굉장히 큰 sentence-level , token level task 에서 sota 를 달성한 fine tuning based representation 입니다.
Related Work
- Unsupervised Feature-based Approaches
ELMo 는 문맥을 반영한 워드 임베딩입니다.
ELMo 또한 양쪽 방향의 언어 모델을 둘 다 학습하여 활용한다고 하여 이 언어 모델을 biLM 이라고 하였습니다.(하지만 순방향(left-to-right)과 역방향(right-to-left)이 합쳐진 형태로 이 두개의 LSTM 은 독립적으로 학습되어 결합되는 형태라 근본적으로는 양방향이 아니라 단방향 모델이라고 할 수 있습니다.)
원래는 ELMo 가 Q/A 와 sentiment- analysis 그리고 named entity recognition 에서 sota 였습니다.
- Unsupervised Fine-tuning Approaches
unlabeled text로 사전학습된 모델과 특정 downstream task 에 대해 finte-tuned 된 sentence 나 document encoders 는 contextual 한 token 을 represent 할 수 있습니다. (e.g GPT-1( transformer 의 decoder 를 사용)) 아주 적은 parameter 들을 가지고 represent 할 수 있게 됩니다.
- Transfer Learning from Supervised Data
transfer learning 이란 특정 task 를 학습한 모델을 다른 task 수행해 재사용하는 방법을 말합니다.
transfer learning 을 적용하면 학습의 수행 속도가 빨라지고 새로운 task 를 더 잘 수행할 수 있으며 기존에 많은 데이터셋으로 학습을 했던 pretrained 모델을 사용하므로 적은 데이터셋을 가지고도 좋은 representation 을 얻을 수 있다는 장점이 있습니다.
BERT
Model Architecture
BERT 도 2개의 step ; pre-training 과 fine-tuning 으로 구성되어 있습니다.
- pre-trained parameters 로 initialized 수행
- down stream task 에서 모든 parameter를 labeld data 를 사용하여 fine-tuned
BERT 의 차별화된 점은 다른 task들에 대해서 통합된 architecture 을 사용한다는 것입니다. (뒤에서 더 살펴보도록 하겠습니다)
BERT 에서 input 은 sentence 로 구성되는데 여기서 sentence 는 국어적 의미의 sentence 와는 조금 다릅니다.
BERT 에서 sentence 는 계속되는 text 를 의미합니다.
bert 모델은 base 모델과 large 모델로 구성되어있습니다.
여기서 L 은 layer 을 뜻하고, H 는 hidden size, A 는 self-attention head의 개수를 의미합니다.
base 모델을 따로 만든 것은 gpt 와의 비교를 위해서라고 생각합니다. 실제 base 크기와 gpt 의 크기가 거의 동일합니다. (gpt와 bert 는 hypram 도 동일)
BERT 는 MLM 과 NSP 를 위해 self-attention 을 수행하는 transformer encoder 를 사용하였습니다.
Encoder 를 사용한 핵심적인 이유에는 gpt-1 과 비교를 하였을 때 masked multi head attention 의 의미를 좀 살펴보면 목적을 확실히 알 수 있는데 transformer 에서 masked multi head attention 을 사용하는 이유는 transformer 에는 전체 corpus 가 다 들어가는데 그 이유는 앞에단에 집중하여 보기 위해서 입니다.
관심있는애가 query 를 key 들과 계산하여 유사도를 계산하고 유사도를 value 에 곱해서 attention 된 value 를 만드는데 값들이 attention 된 값으로 나오는데 attention 된 값에서 앞에 두개만 필요하다면 오른쪽 두개를 -INF 로 채우는 것입니다.
이러한 masked layer 가 없음으로 인해서 전체를 다 보며 masking 된 해당 부분을 bidirectional 하게 보는 bert 가 완성되는 것입니다.
Input Representation
논문에서는 Q,A 테스크에 대해 예를 들어 설명하고 있습니다.
모델에서는 30,000 token 의 단어로 WordPiece embedding 을 사용하였습니다.
wordPiece Model
tokenizing 을 하려면 언어학적 지식과 학습 데이터가 필요한데 언어와 도메인이 다르면 이를 준비하는 것이 어렵습니다.
학습 데이터를 이용하지 않으면서 결과를 내기 위해 사용하는 방법으로 token 들을 한글자 단위로 모두 띄어 초기화 한 다음 빈도수가 제일 높은 biagram 를 찾습니다.(e.g l o w e r -> l o, l o w, l o w e, l o w e r 중 제일 빈도수가 높은 것을 찾습니다.)
이 biagram 를 하나의 unit 으로 합칩니다. 이 방법을 사용하면 토크나이저 입장에서는 많이쓰이는 subwords 를 unit 으로 사용하게 되고 자주 등장하지 않는 단어는 subword unit 이 됩니다.
WPM 은 언어의 지식이 없이도 빈번히 등장하는 substring 을 단어로 학습하고, 자주 등장하지 않는 단어들의 의미를 최대한 보존할 수 있도록 최소한의 units 으로 표현합니다.
모든 처음은 [CLS] 토큰으로 시작하며 다른 문장이 들어오면 [SEP]를 사용하여 문장을 구분해줍니다.
최종으로 input 은 token 과 segment 그리고 transformer 에서도 사용했던 position embeddings 를 더한 것이 됩니다.
- Pre-training Tasks
- Masked LM
기존의 LM(left-to-right) 은 주어진 단어 시퀀스를 통해 그 다음 단어를 예측하는 Task 를 사용하였습니다. 현재 입력 단어 이후의 단어들의 정보를 모델에게 알려줄 수 없다는 문제가 있어 MLM 은 문장에서 무작위 토큰에 MASK 를 처리하고 MASK 에 해당하는 단어를 찾는 것을 목표로 합니다.
Transformer encoder 에 MASK 처리를 한 문장을 한번에 넣고 MASK 단어의 정답을 찾도록 하는 것입니다.
MLM 은 input 에서 무작위로 15% 의 WordPiece 를 masking 합니다.
mask token 은 pretraining 에만 사용되고 fine-tuning 을 할 때에는 사용되지 않습니다.
- 추가적으로 15% 중 80% 는 token 의 mask 로 바꿔줍니다
- 10%의 경우는 token 을 random word 로 바꾸어줍니다.
- 10% 의 경우 token 을 원래의 단어 그대로 놔둡니다.(실제 representation 을 bias 시켜주기 위해 사용함)
10% 의 그대로 둔 부분에 대해 1.5% 의 token 이므로 전체 model 은 language understanding 을 해치지는 않는다고 하였습니다.
이 mask 된 token 들은 original token 을 cross entropy loss 를 통해 예측하는데 사용됩니다.
autoencoder 와 비교를 해볼 수 있는데 해당 모델에서는 전체 input 을 reconstruct 하는 것이 아니라 maksed 된 words 만 predict 하는것에 초점을 두었습니다.
MLM 는 left-to-right 에 비해 당연히 느리지만 모델에 의한 실증적인 개선이 증가된 교육 비용을 훨씬 능가한다고 주장합니다.
Differences in pre-training model architectures
BERT 는 bidirectional Transformer 를 사용하고 있고 transformer 의 Encoder 부분을 사용하고 있습니다. GPT 는 left-to-right transformer 를 사용하고 transformer 의 Decoder 의 self attention 을 사용하고 있습니다. 마지막으로 ELMo 는 독립적으로 train 된 left-to-right 그리고 right-to-left LSTM 을 합한 것입니다.(ELMo 만이 유일하게 feature-based 로 접근하고 있습니다.) 이 세 구조를 비교하였을 때 오직 Bert 만이 전체 모든 layer 에서 왼쪽 오른쪽 문맥을 conditioned 하고 있습니다.
- Next Sentence prediction
이 pretraining task가 필요한 이유는 NLP task 중 Q/A, Natural Language Inference 와 같이 두 문장의 관계를 잘 파악하는 것이 중요한 것들이 있기 때문입니다. 두 task 는 이전까지 설명한 language model만으로는 바로 알아낼 수 없기 때문에 nsp 를 사용하게 됩니다.
문장 A 와 B 를 선택한 상황에 대해 살펴보겠습니다.
corpus 에서 50% 는 ISNEXT 50% 는 NOT NEXT 로 학습을 진행합니다.
만약 A 다음 문장이 B 가 맞을 경우는 True, A 다음 문장이 B 가 아닐경우 False 로 예측하는 식입니다. 간단한 접근임에도 불구하고 굉장히 좋은 성능을 내고 있다고 합니다.
- Pre-training data
pre-training 의 기본 절차는 LM 에서 수행한 것과 같습니다. BERT 는 BookCorpus 에서 text passage 만 추출하여 사용하였습니다. 그 이유는 long contiguous sequence 만을 학습시키고 싶어서입니다.
- input pre-processing 단계
NSP 를 위해 sentence 를 가지고 wordPiece Embedding 을 A 와 B 에 수행합니다.
50% 는 실제 next sentence, 나머지는 random sentence 를 사용합니다.
이후 masking 작업을 수행합니다.
Fine-tuning Procedure
- sequence-level classification task 에 대해서는 fine-tuning 과정이 단순하게 이루어 집니다.
- input 에 대해 일정한 차원수의 representation 을 얻고 싶기 때문에 [cls] token 의 Transformer output 값을 사용합니다.
- token 의 벡터는 H 차원을 가지고 R(H) classify 하고 싶은 갯수에 따라 classification layer 를 붙여주게 됩니다. R(KxH)
- 각 확률은 일반적인 softmax 로 계산됩니다. log(softmax(CW^T))
- W matrix 와 BERT 의 모든 파라미터는 같이 fine tuning 됩니다.fine-tuning 시 hyparam 은 pre-training 때와 동일하나 batch size, learning rate, training epoch 수에 변화가 생겼습니다.fine-tuning 은 굉장히 빠르게 학습되었습니다.
- fine-tuning 시에는 dataset 의 크기가 클수록 hyperparam 에 영향을 덜 받고 잘 학습되었음을 확인할 수 있었습니다.
(추가적으로 [CLS] 도 H 차원으로 embedding 되어있게 됩니다.)
Experiments
- GLUE
GLUE Test 의 결과를 보면 모든 항목에서 높은 점수를 받았는 것을 확인할 수 있습니다.
base 에서도 모든 성능이 우수한 것으로 보아 GPT-1 과 비교하였을 때도 좋은 성능 차이를 보이고 있다고 판단합니다.
특히 작은 training data 에도 학습이 잘 수행되었다는 것을 확인할 수 있었습니다.
- SQuAD v1.1
SQuAD 의 경우 Bert 에 fine-tuning 할때와 방식이 조금 다르게 됩니다. GLUE 의 경우 위에서 언급했듯 seq classification 이지만 SQuAD 는 질문과 지문이 주어지고 그중 substring 인 정답을 맞추는 task 입니다.
- Q : A Embedding, A : B embedding 으로 처리하고 지문에서 정답이 되는 substring 을 찾는 task 문제를 풀어냅니다.
- start , end vector 를 fine-tuning 중에 학습하여 지문의 각 token 들과 dot product 하여 substring 을 찾아냅니다. (가장 점수가 높은 것이 answer span 이 됩니다. soft max 를 수행한 뒤에 각 확률에 대해서 dot product 수행후에 전체적인 값이 제일 높은게 answer 가 되는 식인가?...)
- 이전의 gpt 와는 다르게 bert 모델 내에서 fine tuning 까지 이루어져있는 모양이므로 start end vector 가 따로 존재한다고 생각하였습니다.
여기서 segment embedding 이 유의미 하지 않은가 생각하였습니다.
세그먼트 임베딩은 여러문장을 입력으로 사용할 때에 각 문장을 구분하기 위한 임베딩이며 Q/A 와 같이 각 문장의 구분이 필요한 경우에 segment embedding 이 필요하다고 생각하였습니다.
(앞에서도 언급하였지만 실제로 흐름을 살펴보니 당연한 소리였던 것 같습니다...)
- SQuAD v2.0
SQuAD 2.0 은 5만 개 이상의 응답 불가능한 질문들도 함께 이루어져있다고 합니다.
worker 들로 인해 생성된 질문들은 기계적인 판별이 어렵습니다.
SquAD task 에서 BERT 는 다음과 같이 적용됩니다.
- 마찬가지로 Q 와 A 로 나누고 질의를 하나의 packed sequence 로 나타냅니다.
- fine-tuing 과정에서 학습되는 것은 시작벡터인 S 와 끝 벡터인 E 입니다
- BERT 의 최종 hidden vector 는 Ti 로 나타냅니다
- 단어 i 가 정답 범위에서의 시작 지점일 확률은 Ti 와 S 사이의 내적으로 계산되고 sentence 의 모든 단어에 대해 softmax 로 그 확률이 계산되게 됩니다.
- Answer 의 끝 부분에도 동일한 수식이 사용되며 가장 결과 값이 큰 위치가 예측으로 사용됩니다.
- objectives 는 시작 및 끝 위치의 log-likelihood 로 계산되게 됩니다.
응답이 어려운 질문이 함께 있을 때에도 BERT 모델의 정확도가 제일 높게 나타났습니다.
- SWAG
grounded common-sense inference 를 위한 데이터셋으로 앞 문장과 보기로 주어지는 4문장 중에 가장 잘 이어지는 문장을 찾는 task 입니다.
GLUE 와 비슷하게 give sentence 그리고 possible continuation 을 concat 한 것들입니다.
task specific 한 벡터들을 학습시키고 (H) input seqeunes 값들을 합산한 (H) 것을 dot product 하여 softmax 합니다.
Ablation Studies
3번째에 해당하는 LTR 과 No NSP + biLSTM 은 GPT + BiLSTM 과 유사하다고 볼 수 있습니다.
- Effect of Pre-training Tasks
LTR & No NSP 은 GPT 모델과 완전히 동일합니다. 왼쪽에 정보에만 집중되는 것은 fine-tuning 시에도 똑같이 발생합니다.
따라서 표에서 보이듯 pre-training task 를 하나씩 제거하면 할수록 성능이 굉장히 떨어지는 것을 확인할 수 있습니다
No NSP 의 경우 특히 NLI 계열에서 성능이 많이 하락하는 것을 확인할 수 있는데 당연하게도 NSP 가 있어야만 다음 시퀀스에 대한 순서를 얻을 수 있으므로 논리적인 구조 파악에 중요한 역할을 하게 되고
실제로 수치적으로 확인하였을 때도 유의미한 역할을 하였음을 확인할 수 있었습니다.
MLM 대신에 LTR 을 사용하면 성능 하락이 더욱 심해지게 되는데 BiLSTM 을 덧 붙여도 MLM 을 쓸 때 보다 성능이 낮은 걸 보면 MLM task 가 더 Deep Bidirectional 함을 확인할 수 있습니다.
- Effect of Model Size
모델이 커지면 커질 수록 정확도가 상승함을 확인할 수 있습니다.
pre-training 의 역할을 생각해보면 유추할 수 있듯 down stream task 를 수행하는 dataset 의 크기가 작아도 pre training 의 영향으로 model 의 크기가 클수록 정확도는 상승함을 확인할 수 있습니다.
- Feature-based Approach with BERT
Bert 를 ELMo 와 같이 feature based approach 로 사용하면 Transformer encoder 는 모든 NLP task 를 represent 할 수 없으므로 특정 NLP task 를 수행하는 Network 를 부착하여 사용할 수 있습니다.
또한 Computational benefit 을 얻을 수 있습니다.
실제로 concat Last Four hidden 의 score 를 비교하여 보았을 때 Bert large 모델과 0.5 정도의 score 차이밖에 발생하지 않았으므로 feature based approach 도 효과적이라고 판단할 수 있습니다.
Conclusion
실질적인 모델 성능의 개선을 위해 사전 교육은 거의 필수요소가 되어가고 있습니다. deep bidirectional architectual의 이점으로 리소스가 적은 경우에도 잘 작동함을 확인할 수 있습니다.
Additional Ablation Studies
Ablation for Different Masking Procedures
다양한 masking 의 효과를 평가하기 위해 학습을 돌린 것입니다.
Q : fine-tuning 단계에서 높은 정확도를 얻으려면 pre-training 단계에서 많은 training step 이 필요합니까?
1M step 일 때 accuracy 가 거의 1.0% 상승함을 볼 수 있습니다.
Q : MLM 으로 15% 의 단어만 맞추는 것으로 진행하므로 LTR 보다 수렴속도가 훨씬 느리지 않은가요?
수렴속도가 느린건 사실이지만 LTR 보다 훨씬 먼저 out perform 성능이 나오게 됩니다.
느낀점
bert를 공부하면서 들었던 의문이 있었다. Transformer 의 self attention 을 사용을 하면 전체 입력 시퀀스에 대해 양방향으로 Attention 을 한번에 수행할 수 있어서 mlm 을 통해서 random 하게 마스크를 씌우고 전체 입력 시퀀스를 넣어 bidirectional 하다고 서술을 하는데 이렇게 되면어떤 관심있는 token에(gpt 로 치면 마스킹이 된 부분의 바로 앞에 토큰의 attention value 를 얻기위해 이전에 정보를 사용함) 대해서 attention value 를 얻으려는데 그 token 주위로 가깝게 랜덤한 masking 을 하는게 아니라면 attention value 를 얻기위한 목적에서 좀 동 떨어지지 않나 라는 생각이 들었다...
실제로 hugging face 코드를 통해 살펴보니 masking 하는 부분이 제대로 구현 되어있지 않아도 성능이 잘 나왔다.
mlm 이 큰 데이터셋에서 어떻게 동작하는지에 대해 정확히 확인해 볼 수 있었다면 실험적으로라도 조금 납득이 갈 것 같다는 생각도 들었다.
'NLP' 카테고리의 다른 글
RoBERT [A Robustly Optimized BERT Pretraining Approach] - 논문리뷰 (0) | 2022.08.01 |
---|---|
XLNet [Generalized Autoregressive Pretraining for Language Understanding] - 논문리뷰 (0) | 2022.07.25 |
GPT-2 - 논문리뷰 (0) | 2022.07.21 |
GPT-1 [Improving Language Understanding by Generative Pre-Training] - 논문리뷰 (0) | 2022.07.07 |
[Day35] NLP Intro (word embedding) 필기 (0) | 2022.06.23 |