본문 바로가기
논문리뷰

[논문리뷰] BERT

by 단깅수 2024. 4. 30.
728x90

자, 오늘은 X:AI Seminar 2024에서 진행한 BERT 논문 리뷰를 가져왔습니다.

해당 논문은 2019년에 발표되어 ELMO, GPT-1의 모델과 비교를 하면서 얘기를 시사하고 있습니다.

 

논문 : BERT, Pre-training of Deep Bidirectional Transformers for Language Understanding
저자 : Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova

[1]  Introduction

BERT는 Bidirectional Encoder Representations from Transformer의 약자로 트랜스포머 모델의 인코더 부분만을 사용해서 양방향으로 학습을 시킨 언어 모델입니다. 당시에 연구되었던 ELMO나 GPT-1과는 다르게 양방향(bidirectional)으로 학습시켰다는 점이 한 가지 특징입니다.


[2] Related Work

ELMO architecture (left) & GPT architecture (right)

 

 관련 연구로는 ELMO와 GPT 를 가져왔습니다. 단어 혹은 문맥 학습은 크게 non-neural methodneural method로 나눌 수 있습니다.

 

 

 BERT가 등장하기 이전, 문맥의 학습 과정은 다음 문장의 후보 순위를 매긴다거나 이전 문장이 주어졌을 때 다음 문장을 생성해낸다거나 등이 있었고 이를 feature-base approach라고도 할 수 있겠습니다. 그 예시로 ELMO의 경우에는 정방향, 역방향을 각각 학습시킨 벡터들을 단순히 concat하는 방식으로 결과를 추출합니다. 

 

 

 다음으로 neural method인 GPT의 경우에는 입력 문장에 맞게 pre-trained시킨 인코더를 사용해서 적용하고자 하는 down-stream task에 알맞게 fine-tuning하는 방식으로 모델을 학습시킵니다. 이러한 경우에 pre-trained 인코더를 사용하는 덕분에 적은 파라미터만으로도 학습이 가능해진다는 장점이 있고 이러한 방식을 Unsupervised fine-tuning approach라고도 부릅니다.

 

 

 정리를 하자면 관련 연구인 ELMO는 정방향, 역방향으로 학습을 각각 시킨 출력들을 task에 맞게 선형결합해 결과를 출력하는 모델이고, GPT는 Transformer의 Decoder 부분만을 사용해 입력의 뒷부분은 마스킹되어 알지 못한 채로 앞에서 뒤로, 한 방향으로 학습시키는 모델입니다. ELMO가 정방향, 역방향을 각각 학습하기 때문에 양방향이라고 생각할 수 있지만, BERT 논문에서 시사하고자 하는 점은 ELMO는 shallow bidirectional model 이고 BERT는 deep bidirectional model 이라는 점입니다. 추가적으로 BERT는 입력의 일부분을 (논문에서는 약 15%라고 언급) 마스킹 처리해 양방향으로 학습시켜 마스킹된 부분을 예측하도록 학습시키는 모델입니다.


[3] Model Architecture

[3-1]  BERT 전반

BERT Architecture

 

 그러면 BERT 모델의 Model Architecture를 보겠습니다. 위에서 얘기드린 것처럼 BERT는 neural method 방식을 사용하기 때문에 pre-training, fune-tuning 단계로 나뉘어져 있고 본 논문에서는 이 두 단계를 나누어서 각각 설명하고 있습니다.

 

 

 pre-training 과정에서는 BERT의 2가지 주요 task를 학습하고자 했습니다.

  • MLM (Masked Language Model) : 입력 시퀀스의 일부분을 마스킹 처리해 모델로 하여금 마스킹된 부분이 무엇인지 예측하도록 학습하는 과정
  • NSP (Next Sentence Prediction) : 다음에 나올 문장이 무엇인지 예측 (예시 : 다음 문장을 예측하면 1, 못했으면 0으로 라벨링)

이러한 방식을 사용해서 pre-training 시킨 BERT 모델을 SQuAD Q&A와 같은 task나 NER 등 각 task에 맞게 적절히 fine-tuning 해서 예측한다면 성능이 굉장히 잘 나오고, SOTA도 달성했다고 논문에서 밝히고 있습니다.

 

 

[3-2] Transformer의 Encoder만 사용한 BERT

추가적으로 BERT는 Transformer의 Encoder 부분만을 사용했다고 합니다. 이 Encoder를 층층이 쌓아서 pre-training할 때 활용했다고 하고 Layer의 수 Hidden State의 크기, Self Attention의 Head 개수를 지정해서 모델을 구성했다고 합니다. BERT Base 모델은 L = 12, H = 768, A = 12로 해서 총 파라미터 수가 약 110M인데 이는 GPT-1과 비슷한 크기의 모델이라고 합니다. (비슷한 크기, 복잡도에서 모델 성능을 비교하기 위해서 이러한 시도) BERT Large 모델은 L = 24, H = 1024, A = 16으로 총 파라미터 수가 약 340M이라고 합니다. 

 

  • Multi - layer bidirectional Transformer Encoder
    • L : Layer의 수
    • H : Hidden State의 크기
    • A : Self Attention의 Head 개수
  • BERT Base
    • L = 12, H = 768, A = 12
    • Total Parameters = 약 110M
    • Same model size as OpenAI GPT
      • 비슷한 복잡도에서 모델 성능을 비교하기 위해 이러한 시도
  • BERT Large
    • L = 24, H = 1024, A = 16
    • Total Parameters = 약 340M

 

 

[3-3] BERT의 Pre-training

BERT의 pre-training 부분

 

 이번엔 실제로 pre-training 시에 어떤 절차로 학습되는지 자세히 보겠습니다. 문장 A와 B를 입력한다고 가정한다면 A와 B가 입력될 때 일부분이 마스킹된 채로 입력됩니다. 그 후에

  1. 문장의 시작을 알리는 CLS 토큰이 맨 앞에 붙음
  2. A와 B 두 문장이 입력됐을 때 이 두 문장을 구분해주는 토큰인 SEP 토큰이 중간에 들어감
  3. 위에서 언급했던 L개의 Layer 층을 거쳐 계산이 이루어짐
  4. CLS 토큰에 해당하는 마지막 hidden vector가 나와 이를 참고해서 감성분류, NSP 등에 활용
  5. 각 단어 토큰에 해당하는 벡터를 생성하고 이를 참고해 NSP, MLM 에 활용

 

 

MLM (Masked Language Model)

  • 입력 토큰 중 무작위로 한 부분 (약 15%)을 마스킹처리해 Input으로 넣어줌
  • 모델로 하여금 마스킹된 부분을 예측하도록 모델링
  • Cloze test에서 영감을 얻음

 

 

  • MLM의 문제점
    • BERT의 pre-training 과정에서는 Mask Token을 사용해서 학습을 진행하지만 fine-tuning 과정에서는 Mask Token이 등장하지 않기 때문에 mismatch가 발생
  • 해결방법
    • Mask Token의 80%는 그대로 두고 10%는 오답, 나머지 10%는 진짜 정답을 제공하는 방식을 사용 (해당 방법은 여러 번에 걸친 실험을 통해 경험적으로 결정)

MLM에 대한 추가설명 (Left) & 경험적으로 얻어낸 8:1:1의 비율 (Right)

 

NSP (Next Sentence Prediction)

NSP에 대한 추가설명

  • NSP (Next Sentence Prediction) : 다음에 나올 문장을 예측하는 과정
  • 문장과 문장 사이의 관계를 이해해야 하는 Task에 적용하기 위해서 이러한 방식으로 학습시켰다고 언급
  • ex) S1 다음 S2가 등장했다면 Label은 1  /  S2 다음 S10이 등장했다면 Label은 0으로 분류

 

 

[3-4] BERT의 3가지 Embedding

BERT의 Embedding

 

 BERT가 fine-tuning 과정에서 다양한 down-stream task에 잘 적용되기 위해, 문맥 표현에 있어서 정의가 확실해야 합니다. BERT는 인간이 정의한 주, 술, 목, 보 구조의 기본적인 문장뿐만 아니라 인접한 텍스트들의 범위까지 포함해서 문장이라고 정의합니다.

 

 

 그리고 BERT는 3가지 embedding 방식을 결합해서 사용하고 있는데요.

  • Token Embedding : 각 단어 토큰들을 WordPiece 방식으로 임베딩
  • Segment Embedding : 문장 A와 B를 구분할 수 있는 임베딩
  • Position Embedding : Transformer의 Positional encoding 과정과 동일

 

 

[3-5] BERT의 Fine-tuning

BERT의 Fine-tuning case

 

  1. 두 문장을 입력받아 문장 유사도나 특정 클래스에 속하는지 분류하는 Task
  2. 한 문장을 입력받아 감정 분석
  3. 두 문장을 입력받아 Q&A의 Task
  4. 각각의 토큰에 대해 결과를 내어주는 형태소 분석이나 객체명 인식 등의 Task

[4] Experiment

Experiment 1 : 자연어 이해에 대한 실험

  • GPT와 비슷한 Size BERT Base 모델도 GPT보다 높은 성능
  • BERT Large의 경우도 마찬가지
  • 현재의 RoBERTa / ALBERT 등 모델의 기반이 될 정도로 우수한 모델임을 시사

 

Experiment 2 : NSP의 영향 (Left) & Experiment 3 : 크고 복잡한 모델일수록 성능이 준수 (Right)

  • 단순한 Task에서는 NSP의 영향이 많이 나타나지 않았지만 QNLI (자연어추론), SQuAD (Q&A) 등의 Task에서 NSP의 영향이 눈에 띄게 드러남
  • 당연하게도 더 복잡하고 큰 모델의 경우에 성능이 좋아지는 경향

 

Experiment 4 : Fine-tuning의 영향

  • Fine-tuning을 했을 때와 하지 않았을 때의 성능비교 지표
  • Fine-tuning을 진행했을 때 96.4 / 96.4로 매우 높은 score
  • 마지막에서 4번째까지의 Hidden Vector를 가중합 : 95.9
  • 마지막 4개의 Hidden Vector를 concat : 96.1
    • 필자의 생각으로는 layer가 깊어질수록 학습이 많이 되었을테니 깊은 layer의 몇 모델만 사용했을 때 점수가 높은 건 어찌보면 당연한 일, 하지만 굳이 4개라는 점은 아직도 궁금..

[5] Conclusion

  • BERT는 Deep Bidirectional 학습을 시킨 모델
  • pre-training 시켜서 수행하고자 하는 down-stream task에 맞게 fine-tuning 해주는 방식으로 학습
  • pre-training 과정에서 MLM, NSP의 2가지 주요 task를 수행
  • 이후에 RoBERTa, ALBERT 등 NLP 분야의 많은 모델 기반이 되었고, 당시 여러 분야에서 SOTA를 달성할 만큼 뛰어난 성능

[6] Reference

https://www.researchgate.net/figure/The-overall-architecture-of-ELMo_fig9_337206890

https://paperswithcode.com/method/gpt

https://paperswithcode.com/method/bert

https://www.researchgate.net/figure/Embedding-process-of-Bert-model-For-Embedding-at-the-token-level-each-token-will-occupy_fig1_354992791

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=winddori2002&logNo=222022178447

https://www.oreilly.com/library/view/advanced-deep-learning/9781789956177/bd91eb1d-87cf-463d-bbd3-4177a42f3da7.xhtml

https://www.youtube.com/watch?v=IwtexRHoWG0

728x90

'논문리뷰' 카테고리의 다른 글

[논문리뷰] XL-Net  (0) 2024.07.03
[논문리뷰] Transformer  (0) 2024.06.26
[논문리뷰] MT-DNN  (0) 2024.05.23
[논문리뷰] BART  (2) 2024.05.15
[논문리뷰] Sequence to Sequence Model  (0) 2024.03.19