본문 바로가기
  • CobsLab upgrades your company value by AI technology
자연어 처리 논문

자연어 처리의 근본, BERT 논문 리뷰

by divers 2022. 5. 16.

오늘 소개해 드릴 논문은 ‘BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding’입니다.

콥스랩(COBS LAB)에서는 주요 논문 및 최신 논문을 지속적으로 소개해드리고 있습니다.

해당 내용은 유튜브 ‘딥러닝 논문 읽기 모임’ 중 ‘BERT’ 영상 스크립트를 편집한 내용으로,

영상으로도 확인하실 수 있습니다. (영상링크: https://youtu.be/vo3cyr_8eDQ)

BERT는 transformer를 활용한 language representation에 관한 논문입니다. BERT는 transfer-learning 방식으로 학습을 합니다. 즉, 대용량 unlabeled data로 모델을 pre-training을 한 후, 특정 task를 가지고 있는 labeled data로 fine-tuning을 하는 방식입니다. BERT는 특정 task를 처리하기 위해, fine-tuning을 하여 해당 task의 SOTA(state-of-the-art)를 달성했다고 합니다. 2018년 10월 처음 발표된 이래로 BERT에서 변형된 수많은 모델들이 계속 나오면서, BERT는 여전히 자연어처리의 많은 분야에서 영향력을 행사하고 있습니다.

BERT의 성능을 한번 보겠습니다. squad1.1 task에서, 비록 XLNET이 나온 이후로는 순위가 바뀌었지만, BERT를 이용한 알고리즘이 높은 순위를 차지하는 것을 알 수 있습니다. 참고적으로 말씀드리면, XLNet은 bert와 비교해 상대적으로 리소스를 많이 잡아먹는 단점을 가지고 있습니다. 또한 데이터도 훨씬 많이 사용하였습니다. TPU가 아니면 학습이 되지 않는다고 합니다. 그만큼 상대적으로, BERT는 성능도 좋고, 효율적이라는 말이 됩니다.

Bert는 전이 학습에 속한다고 볼 수 있는데요. 전이 학습이란 다른 데이터셋이나 목적 함수를 사용해 미리 훈련한 후, 이를 바탕으로 본격적인 학습에서 해당 테스크에 알맞게 파라미터를 쉽게 최적화하는 것을 말합니다. 즉 미세조정을 하는 것입니다.

Transfer learning 방법론에 따라 분류하자면, 크게 feature based approach와 fine tuning approach가 있습니다. Feature based transfer learning은 특정 task를 수행하는 network에 pre-trained language representation을 추가적인 feature로 제공하는 것을 의미합니다. Fine tuning transfer learning은 task-specific 한 parameter를 최대한 줄이고, pre-trained 된 parameter들을 GLUE와 같은 Task에 downstream형식으로 조금만 바꿔주는(fine-tuning) 방식입니다.

GPT처럼 unidirectional 하거나, ELMo처럼 shallow bidirectional 한 모델과 달리, BERT는 deeply Bidirectional 한 language model입니다.

BERT에는 pre-training 과정과 그 이후의 fine tuning 과정이 있습니다. 먼저 pre training에서 unlabeled 된 corpus를 transformer의 encoder architecture와 MLM과 NSP과정을 통해서 feature가 나옵니다. 이 feature를 task specific 하게 적용해서 fine tuning을 통해 모델링을 하는 것입니다. 이 과정은 뒤에 나오는 method에서 자세히 살펴보겠습니다.

그리고, BERT는 모델의 크기에 따라 base 모델과 large 모델을 제공합니다. • BERT_base : L=12, H=768, A=12, Total Parameters = 110M • BERT_large : L=24, H=1024, A=16, Total Parameters = 340M (L : transformer block의 layer 수, H : hidden size, A : self-attention heads 수)

BERT의 input에는 그림과 같이, 3가지 embedding 값의 합으로 이루어져 있습니다. BERT english의 경우 30,000개의 token을 사용하였습니다. 모든 sentence의 첫 번째 token은 [CLS](special classification token)입니다. 이 [CLS] token은 classification을 위한 embedding입니다. classification task 일 경우에는 cls token위치에 해당하는 hidden unit output을 feature로 생각해서 classification을 진행하게 되고, 그렇지 않으면 무시합니다. 각각의 Sentence는 실제로는 수 개의 sentence로 이루어져 있을 수 있습니다. 그래서 두 개의 문장을 구분하기 위해, 첫째로는 [SEP] token 사용, 둘째로는 Segment embedding을 사용하여 앞의 문장에는 sentence A embedding, 뒤의 문장에는 sentence B embedding을 더해줍니다(모두 고정된 값)

BERT pre-training의 새로운 방법론은 크게 2가지로 나눌 수 있습니다. 하나는 Masked Language Model(MLM), 다른 하나는 next sentence prediction입니다.

Masked Language Model(MLM) : MLM은 input에서 무작위 하게 몇 개의 token을 mask 시킵니다. 그리고 이를 Transformer 구조에 넣어서 주변 단어의 context만을 보고 mask 된 단어를 예측하는 모델입니다. 단어 중의 15%를 mask token으로 바꾸어줍니다. 그리고 그중 에서

• 80% : token을 [MASK]로 바꿉니다. eg., my dog is hairy -> my dog is [MASK]

• 10% : token을 random word로 바꾸어 줍니다. eg., my dog is hariy -> my dog is apple

• 10% : token을 원래의 단어로 그대로 놔둡니다. (이는 실제 관측된 단어에 대한 표상을 bias 해주기 위해 실시)

next sentence prediction : 이것은 간단하게, 두 문장을 pre-training시에 같이 넣어줘서 두 문장이 이어지는 문장인지 아닌지 맞추는 것입니다. pre-training시에는 50:50 비율로 실제로 이어지는 두 문장과 랜덤 하게 추출된 두 문장을 넣어줘서 BERT가 맞추게 시킵니다. 50% : sentence A, B가 실제 next sentence 50% : sentence A, B가 corpus에서 random으로 뽑힌(관계가 없는) 두 문장

pretraining을 거친 모델을 가지고 down stream 한 방식으로 적용하여 fine tuning을 시행합니다. 몇 가지를 제외하고는 pre-training때의 hyper parameter와 대부분 동일합니다. 다른 점은 batch size, learning rate, trainig epochs 수입니다. optimal hyperparameter는 task마다 달라지지만, 다음에 제시하는 것을 사용하면 대부분 잘 학습된다고 합니다. Batch size: 16, 32 / Learning rage (Adam): 5e-5, 3e-5, 2e-5 / Number of epochs : 2, 3, 4

쉽게 말해, BERT는 모든 task에 대해 SOTA를 달성합니다. 특히 인상적인 것은 데이터 크기가 작아도 fine-tuning 때는 좋은 성능을 낼 수 있다는 것입니다. 그리고 BERT_large가 BERT_base에 비해 훨씬 좋은 성능을 냅니다.

마찬가지로, SQuAD, SWAG에서도 SOTA를 달성합니다.

SQuAD v1.1: SQuAD는 질문과 지문이 주어지고, 그중 substring인 정답을 맞히는 task입니다.

SWAG: 앞 문장이 주어지고, 보기로 주어지는 4 문장 중에 가장 잘 이어지는 문장을 찾는 task입니다. 이 또한 사람과 비슷하거나 능가하는 SOTA를 달성합니다.

SWAG는 113k sentence-pair로 이루어져 있으며, grounded common-sense inference를 측정하기 위해 사용합니다.

Ablation studies에서는 중요한 요소들을 하나씩 제거하며 그 요소의 중요함을 파악해 보겠습니다.

이전 Pre-training Tasks에서 소개한 2가지 task를 하나씩 제거하면서 각각의 task의 효과를 알아봅니다.

 

Table5

BERT_base와 동일한 hyperparameter로 실험을 진행하지만 ablation 한 두 가지 다른 모델로 실험을 진행합니다. 2번째 task는인 No NSP는 MLM은 사용하지만, 다음 문장 예측 (NSP)를 없앤 모델입니다. 2번째 3번째 줄의 LTR & No NSP는 MLM 대신 Left-to-Right (LTR)을 사용하고, NSP도 없앤 모델이고, 이는 OpenAI GPT모델과 완전히 동일하지만, 더 많은 트레이닝 데이터를 사용하였습니다.

표에서 볼 수 있듯, pre-training task를 하나라도 제거하면 성능이 굉장히 떨어지는 것을 볼 수 있습니다. No NSP의 경우에는 NLI계열의 task에서 성능이 많이 하락하게 되는데, 이는 NSP task가 문장 간의 논리적인 구조 파악에 중요한 역할을 하고 있음을 알 수 있습니다. MLM대신 LTR을 쓰게 되면 성능 하락은 더욱더 심해지게 됩니다. BiLSTM을 더 붙여도, MLM을 쓸 때보다 성능이 하락하는 것으로 보아, MLM task가 더 Deep Bidirectional 한 것임을 알 수 있습니다.

 

Table6

간단하게 말해서, 측정한 데이터셋에서는 모두 모델이 커질수록, 정확도가 상승함을 볼 수 있습니다. 4번째 hyper parameters 중에서 4번째 줄이 Bert base모델이고, 6번째 줄이 Bert large모델입니다. BERT의 경우에는, downstream task를 수행하는 dataset의 크기가 작아도, pre-training덕분에, model의 크기가 클수록 정확도는 상승함을 볼 수 있습니다

모델 사이즈에 따른 효과 관련된 내용. 모델 사이즈가 클수록 accuracy 가 증가합니다. 테이블의 경우 맨 마지막 24 layer에 해당하는 것이 BERT LARGE, 12 layer에 해당하는 것이 BERT BASE.

지금까지 BERT는 pre-training을 진행한 후, downstream task를 학습할 때, 간단한 classifier를 부착해서 모든 layer를 다시 학습시키는 fine-tuning 방법을 사용하는 것만을 설명드렸습니다. 하지만 BERT를 ELMO와 같이 feature based approach로도 사용을 할 수 있습니다. Feature-based Approach는 몇 가지 이점이 존재합니다. Transformer encoder는 모든 NLP task를 represent하지는 못하므로, 특정 NLP task를 수행할 수 있는 Network를 부착하여 쓸 수 있습니다. Computational benefit을 얻을 수 있습니다.

지금까지 BERT 논문 리뷰를 보셨습니다. 그 핵심적인 내용은 몇 가지로 요약해볼 수 있을 것 같습니다.

  1. NLP에서 transfer learning 특히 MLM과 NSP task를 통해 굉장한 성능의 향상을 가져왔다.
  2. BERT는 진정한 의미의 Bidirectional 한 모델이다.
  3. 적은 데이터 양에서도 large모델이 base모델보다 더 좋은 성능을 내는 것이 특징적이다.

댓글