[논문리뷰 | NLP]  BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2019) Summary

9e0na·2023년 6월 17일
1

[논문리뷰]

목록 보기
13/41
post-thumbnail

Title

  • BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

0. 논문 읽기 전에 알면 좋을 것들

1. Unidirectional Model

  • 장점: Text를 한 방향으로만 순차적으로 고려한다. 즉, 앞선 단어만을 고려하기 때문에 속도가 매우 빠르고, 병렬화에 유리하다.
  • 단점: 하지만 가끔씩 정보를 놓칠 수도 있고, 문맥 파악이 매우 어렵다.

2. Bidirectional Model

  • 장점: Text를 양방향으로 고려한다. 즉, 전체 문맥을 파악하기 때문에 정확한 응답을 제공할 수 있다.
  • 단점: 전체 문맥을 고려해야 하기 때문에 처리 속도가 느리고, 병렬화가 매우 어렵다.

3. Transformer Model

  • 장점: Self-attention 기반의 Model이며 중요한 정보에 더 집중하기 때문에 긴 문장의 문맥을 파악할 수 있고, 정확도가 좋다.
  • 단점: 모델 크기와 계산 비용, 데이터, 시간이 상당히 필요하다. ex) Chat-GPT, BERT, LLaMA

Abstract

  • BERT는 Bidirectional Encoder Representations from Tansformers 구조의 Language Model
  • Wiki or Book data와 같은 대용량의 Unlabeled Data로 모델을 미리 학습 시키고나서 특정 Task를 가지고 있는 Labeled Data로 전이학습을 하는 Model
  • GLUE score을 7.7% 개선하여 80.5%라는 성능을 도출하였고, 11개의 NLP Task에서 SOTA 달성

1. Introduction

BERT와 비슷한 approach 방식을 가지고 있는 Model인 ELMo와 GPT-1에 대한 소개로 시작한다.

Pre-trained Language Representation을 downstream tasks에 적용하는 방법은 2가지가 있는데

(1) Feature-based approach / ELMo

  • Feature based approach방식으로, pre-trained representations을 하나의 추가적인 feature로 활용해 downstream task에 활용

  • 똑같은 Sequence에 대해 정방향의 Forward LSTM과 Backward LSTM을 여러 단계로 학습 시킨 뒤, 해당하는 Hidden State를 모두 선형결합하여 최종적으로 token을 만든다.

  • 즉, Left-to-Right와 Right-to-Left LSTM을 통해 Context-sensitive feature들을 단순히 concat하는 방식
  • 단순 concat만으로 감성분석, QA, 개체명 인식 등에서 SOTA 달성. 하지만 bidirectional X

(2) Fine-tuning approach / GPT-1

  • Fine-tuning approach 방식으로 Fine-tuned parameters 수를 최소화하여 모든 파라미터를 조금씩 바꿔서 downstream task에 활용
  • OpenAI의 Generative Pre-trained Transformer 구조
  • Left-to-Right Unidirecitonal Model
  • Transformer의 Decoder 부분만 사용했고, Unidirectional Model에서는 특정 Token을 Masking하더라도 다음 Layer에서 자기 자신에 대한 정보를 참조할 수 없다.

위 두 방식의 공통점 / 한계점

공통점: Pre-trained 과정에서 동일한 objective function을 공유하고, Unidirectional LM 사용

한계점

  • Unidirectional 구조이기 때문에 Pre-trained를 제한
  • 모든 Input token이 이전 token과의 attention만계산하기 때문에 Fine-tuning시 좋은 성능을 기대하기 어러움

BERT 배경

  • ELMo와 GPT-1 LM Model들이 단방향 구조로 이루어져 있어서 위의 한계점과 같이 Pre-training중에 사용될 수 있는 모델 구조의 선택을 제한할 수도 있음
  • 단방향이 아닌, 모든 문맥을 고려하는 Transformer의 Encoder Layer를 사용한 양방향 모델인 BERT를 제안함

2. Related Work

  • ELMo, GPT-1와 같은 Language Model에 대해
    앞에서 자세하게 기술했기 때문에 생략

3. BERT

  • 위의 그림에서 언제나 동일한 Pre-trained model의 parameter가 서로 다른 downstream tasks의 초기 값으로 사용된다.
  • 이러한 초기값들은 Fine-tuning 과정에서 downstream task에 알맞게 조정된다.
  • 본 논문에서는 Pre-trainingFine-tuning을 나누어서 설명하고자 한다.
  • Pre-training에서는 unlabeled data를 이용해 초기 parameters를 설정하고, 이를 바탕으로 학습된 모델은 Fine-tuning에서 downstream tasks의 labeled data를 활용해 Fine-tuning 한다.
  • Fine-tuning 윗단에 다양한 downstream tasks를 Layer에 추가해서 SOTA 달성

3.1. Model Architecture

BERT는 Transformer의 Encoder 부분만 사용한다.

  • BERT의 Architecture는 multi-layer vidirectional Transformer Encoder이다. 한마디로, 양방향의 Transformer Encoder를 여러 층 쌓은 것이다.

1. Multi-Layer Bidirectional Transformer encoder

  • L: number of Layers (Transformer block)
  • H: hidden size
  • A: number of self attention heads

2. BERT (Base)

  • L= 12, H=768, A= 12
  • Total parameters= 110M
    -> 이렇게 설정한 이유는 OpenAI의 GPT-1과의 성능을 비슷한 복잡도로 비교하기 위해서

    • GPT-1는 next token만을 맞추는 LM을 만들기 위해 Transformer Decoder만 사용
    • BERT는 MLM과 NSP를 위해 Self-Attention을 수행하는 Transformer Encoder만 사용

3. BERT (Large)

  • L-24, H=1,024, A=16
  • Total parameters= 340M

3.2. Input/Output Representations

3.2.1. 개념

  • BERT가 여러가지 다양한 downstream tasks를 Handling하기 위해서는 Input Representations이 유연하게 구성이 될 필요가 있음
  • Input Representations이 a single sentencea pair of sentences을 하나의 token sequence로 분명하게 표현해야한다.

Sentence

  • 영어 문장 같은 문법은 보통 S+V+O 구조로 끝난다
  • BERT에서는 Sentence를 어떤 연속적인 span으로 본다.
    -> 일련의 연속한 단어들의 집합 (언어학적인 문장이 아니어도 상관 XX)
  • Sentence가 linguistic sentence가 아니어도 된다. 즉, 우리가 아는 문장이 아니어도 된다.

Sequence

  • BERT 입력에 대한 Sequence를 의미
  • a single sentence or two sentences packed일수도 있다

3.2.2. Special Token

1. [CLS] Token

  • 모든 Input Sequence의 첫번째 Token

2. [SEP] Token

  • 2개의 문장 이상을 구분해주는 Token

3. [C] Token

  • Special [CLS] Token에 해당하는 final hidden vector
  • [CLS] Token과 대응되는 최종 hidden state
  • 감성분류, 유사도 측정 등 단순한 classification을 할 때는 이 token만으로 사용 가능

4. [TNT_N] Token

  • BERT가 최종적으로 표현해주는 N번째에서의 final hidden vector

3.2.3. Embedding Vector

  • BERT에서는 총 3가지의 Embedding Vector를 합쳐서 Input으로 활용한다.
  • Input = Position Embeddings + Segment Embeddings + Token Embeddings

1. Token Embeddings

  • 30,000 token vocabulary를 갖고 있는 WordPiece Embedding을 사용
  • 위의 그림에서 보면 ##ing가 WordPiece라고 생각하면 된다.
  • 각각의 Token 위치에 해당하는 Embedding vector 방법

2. Segment Embeddings

  • 문장 쌍의 각 문장들을 [SEP] Token으로 구분하기 위한 임베딩기법
  • 위의 그림에서 보면 I like 김민재I like 이강인은 각각 EAE_AEBE_B로 나눠진 것을 확인할 수 있다.
  • 이를 통해 first sentences와 second sentences를 구분해준다.

3. Position Embeddings

  • Transformer에서 사용한 방식과 동일
  • 각각의 Position에 해당하는 Embedding

3.3. Pre-training BERT

3.3.1. Masked Language Model (MLM)

  • 위의 그림에서 보면, Input 중 W4를 [MASK] token으로 바꿔준다.
    • BERT에서는 [MASK] token만을 예측한다.
    • Denosing Auto Encoder에서는 전체 Input을 재구성한다.
  • 전체 sequence의 15%를 Random하게 [MASK] token으로 바뀐다
    -> 많은 실험을 통해, 바꿔주는 비율이 15%일 때 가장 성능이 좋았음.
  • 모델이 학습을 통해 실제 [MASK] token들을 잘 예측할 수 있도록 하는 것

문제점

  • [MASK] 하는 과정은 Pre-training 과정에서만 일어나고 그 다음 단계인 Fine-tuning 과정에서는 일어나지 않는다. 즉, mismatch가 일어난다.

해결방안

  • 위에서 언급한 15%의 [MASK] token에서 추가적인 처리를 해준다.
  • i번째 토큰을 마스킹하도록 선택한 경우, [MASK] 토큰은 80%, 랜덤 토큰은 10%, 변경되지 않은 10%로 대체된다.

다양한 실험을 통해 [Mask] 80%, [Same] 10%, [RAND] 10%로 했을 때 성능이 제일 좋았음.

  • 10번 중에 8번은 token을 [Mask] token을 바꾼다.
    ex) my dog is hairy -> my dog is [MASK]
  • 10번 중에 1번은 token을 R갑자기 뜬금없는 [Random word]로 바꾼다.
    ex) my dog is hairy -> my dog is apple
  • 10번 중에 1번은 token을 Masking하라는 명령을 어기고 원래 단어 그대로 둔다.

🏆 10%의 original word
: 단어를 그대로 두는 것은 실제 관측 단어에 대한 representation을 bias해주기 위함

🏆 10%의 random word change
: 15%의 token 중에서 10%만을 바꾸는 것이기 때문에 실제 비율은 1.5% 밖에 되지 않는다. 그래서 모델의 성능이 크게 떨어지지는 않는다.

이를 통해 Pre-training과 Fine-tuning 사이에 mismatch가 해소될 수 있다.


3.3.2. Next Sentence Prediction (NSP)

  • QA & NLI와 같은 downstream tasks에서 두 개 이상의 sentences에 대한 관계를 이해하는 것이 핵심이다. 하지만 논문 저자들은 이 관계를 잘 이해할 수 없다는 점을 지적한다.
    -> 이를 학습하기 위해 BERT 모델은 Next Sentence Prediction을 이용한다.
  • NSP란 특정한 두 쌍의 sentance가 들어왔을 때, 해당하는 sentance가 corpus에서 실질적으로 다음에 등장했던 sentance인지 아닌지를 학습하는 것
  • 위에서 언급했던 [C] token은 NSP를 위한 token이다.

    • BERT는 [C] token을 활용하여 input으로 들어온 두 개의 문장이 원래 corpus에서 이어 붙어져 있던 문장인지(IsNext) 아닌지(NotNext)를 맞춰가며 학습

      QA와 NLI Task에서 매우 유용하게 작용!


3.3.3. Pre-training Data

  • Corpus 구축을 위해 English Wikipedia (약 25억개의 단어)와 BooksCorpus (약 8억개의 단어)를 사용함

BooksCorpus Dataset 확인하려면 이걸 클릭해주세요!

English Wikipedia Datset 확인하려면 이걸 클릭해주세요!

문서 단위의 Corpus를 사용하는 것이 문장 단위의 Corpus를 사용하는 것보다 훨씬 성능이 좋음

3.3.4. Hyper-parameter settings


3.4. Fine-tuning BERT

  • Transformer의 Self-Attention Machanism 덕분에 BERT는 다양한 downstream task를 모델링 할 수 있음
  • downstream task에 따라 task-specific inputs & outputs을 BERT에 넣어주고 end-to-end Fine-tuning을 진행한다.
    -> Fine-tuning마다 Input 형태가 다를 수 있다.

🏆 핵심은 BERT 제일 윗단에 하나의 Layer를 쌓는 것만으로도 충분히 구현 가능하다. 🏆

inputs

  1. Sentence pairs in paraphrasing
  2. Hypothesis-Premise pairs in entailment
  3. Question-Passage pairs in question answering
  4. Degenerate-None pair in text classification or sequence tagging

outputs

  1. token representation in sequence tagging or question answering

  2. [CLS] representation in classification(entailment or sentiment analysis)


4. Experiments

4.1. GLUE

2023년 7월 기준 GLUE Benchmark

상위 Lanking의 모델들은 BERT를 기반으로 만들어진 모델들이 많이 있다는 것을 알 수 있음

실험 결과, BERT의 성능은 다른 모델들보다 매우 좋았고, 데이터의 크기를 크게 할 수록 성능이 더 좋아지는 것을 알 수 있음

나머지 실험들의 결과는 생략하였습니다.


5. Ablation Studies

5.1. Effect of Pre-training Tasks

  • 원래 ELMo or GP-1 같은 경우 Language Model만 Pre-training에 사용되었었는데, LM + NSP를 했울 때 얼마만큼의 효과가 있는지를 알아보기 위해 실험을 진행함

    • BERTBaseBERT_Base : LM + NSP한 모형
    • No NSP: LM만 있는 모형

      -> SQuAD(F1)와 MNLI-m(Acc)에서 NSP를 제외했을 때 성능이 감소하는 것을 확인할 수 있음


5.2. Effect of Model Size

  • 구조가 커지면 커질수록 성능이 좋아진다는 당연한 실험을 진행

5.3. Feature-based Approach with BERT

  • 만약에 어떤 task를 수행하는데 있어서 Fine-tuning을 거치지 않고, Pre-trained model만 가지고 그 해당하는 모델에 hidden state vector만 결합을 해서 downstream task를 수행하면 어떻게 될지 궁금해서 한 실험

위의 그림의 결과를 꼭 보길 소망합니다!

마지막 4개의 Hidden Vectors를 Concat or Weighted Sum을 했을 때, Fine-tuning을 한 것과 비슷한 성능이 보였다.


6. Conclusion

  • LM을 사용한 전이 학습으로 비지도 사전 학습이 많은 언어 이해 시스템에서 필수적이다.
  • MLM, NSP 등 간단한 intution idea로 NLP 많은 분야에 SOTA를 달성하였다.

  • 본 논문은 현재까지 많은 Model에 영향을 주었고, Bidirectional Architecture로 일반화 시켰다.


🎯 Summary

  1. 저자가 뭘 해내고 싶어 했는가?
  • ELMo와 GPT-1은 모두 Unidirectional 구조를 가지고 있기 때문에 Pre-trained을 제한하고 Fine-tuning시 문제가 있음.
  • 기존 Unidirectionality 제약을 완화하고, MLM구조와 NSP를 사용해서 Bidirectional Pre-training LM의 중요성을 나타내고자 함.
  1. 이 연구의 접근 방식에서 중요한 요소는 무엇인가?
  • MLM(Masked Language Modeling)
    : Random하게 Masking 처리를 하고 해당 원본 단어를 예측함. 이 때문에 right, left를 모두 고려해야 해서 deep bidirectional 구조가 됨.
  • NSP(Next Sentence Prediction)
  1. 어느 프로젝트에 적용할 수 있는가?
  • 이번에 KoBERT 모델을 활용하여 워크넷의 채용공고 개선을 위한 추천시스템 프로젝트에 임하고 있음.
  • 추후 BERT4REC도 활용한 추천시스템 프로젝트에 임할 예정임.
  1. 참고하고 싶은 다른 레퍼런스에는 어떤 것이 있는가?
  • ELMo
  • GPT-1
  • KoBERT
  • BERT4Rec
  • Denosing Auto Encoder
  1. 느낀점은?
  • 처음 BERT를 보게 된 건 BERT4rec이라는 추천시스템 논문이었다. NLP, 추천시스템 이외에도 CV에서는 BEiT라는 논문이 나오는 등 정말 다양한 도메인에서 많이 적용된다는 것을 알 수 있다.
  • Transformer 논문과 마찬가지로 시간 투자를 엄청 하였다. 논문을 봐도 이해가 잘 되지 않아 고려대학교 DSBA 연구실 유튜브를 5번정도 본 것 같다... 어렵긴 어렵다. 그럼에도 불구하고 대표적인 BASE 논문을 구체적으로 뜯어볼 수 있는 시간은 매우 중요한 것 같다. 특히 MLM, NSP와 같은 개념과 Token, Segment Embedding 부분을 정리할 수 있었고, ELMo도 사실 논문을 구체적으로 공부하지는 않았지만 이 논문을 통해 자연스럽게 공부할 수 있어서 좋았다.
  • `5-3.Feature-based Approach with Bert에서 마지막 4개의 Hidden vectors를 concat or weighted sum을 했울 때, Fine-tuning한 것과 비슷한 성능이 도출했던게 정말 신기했다. 많은 학습을 거친 n개의 vector끼리의 결합 및 concat은 성능이 좋아진다는 것을 알게 되었다.
  • 다음에는 BERT의 Fine-tuning 부분을 코딩으로 진행해보는 시간을 꼭 가져야겠다. 이번 고용노동부 공모전에서 Fine-tuning을 해야하기 때문에 연습한다는 생각으로 열심히 해봐야겠다!! BERT. 정리.끝!

📚 References

profile
데이터사이언티스트가 되기 위해 [a-zA-Z]까지 정리하는 거나입니다 😊

0개의 댓글