theory/NLP

BERT

아르르르를를르 2022. 2. 4. 14:28

BERT 정의: 문맥을 양방향으로 이해해서 숫자로 바꿔주는 딥러닝 모델

기존 모델과의 비교

key paper

  • ELMo: 정방향, 역방향으로 학습하여 hidden state들의 linear 결합을 통해 최종 token 도출
  • GPT: decoder를 사용하여 후반부 단어들 masking 시켜놓고 다음 단어를 예측하는 방식으로 학습
  • BERT: encoder를 사용하여 방향성 없이 한꺼번에 모두 처리, masked 단어를 예측하는 방식으로 학습

 

key paper

SQuAD, NER, MNLI 같은 layer 1개만 BERT 위에 쌓음으로써 기존 모델들을 앞지를 수 있는 우수한 성능을 보인다.

 

모델 아키텍쳐

  • transformer의 encoder 블록만 사용

Sentence: 일련의 연속적인 text, 완벽한 문장이 아니어도 됨 (rather than an actual linguistic)
Sequence: a single sentence or two sentences packed together

[CLS]: sentence의 시작을 나타내는 token
[SEP]: 두 개의 sentence 사이를 구분하는 token

 

  • Input/Output representation
    • Input : a single sentence and a pair of sentences (Question-Answer)

 

1. Token embedding

WordPiece Embedding

단순 띄어쓰기가 아닌 Texting → [Text, ##ing] 식으로

→ 신조어, 오탈자가 있는 입력값도 처리 가능

 

2. Segment embedding

2개의 문장이 입력될 경우, 각각의 문장에 서로 다른 숫자를 더함

→ 서로 다른 문장이 있다는 정보 제공

 

3. Position embedding

sin, cos와 같은 주기함수 사용

→ token의 상대적 위치 정보 제공

  • 상대적 위치를 사용하는 이유: 최장길이를 settting 하지 않기 위해서

 

  • Bert의 목적: MLM, NSP 2개의 task를 같이 학습시키는 것

 

 

Pre-training BERT

Task 1: Masked Language Model (MLM)

  • 15%의 sequence가 Mask token으로 바뀜

https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270

  • ELMo 는 순차적으로 정방향, 역방향 모두 따로 학습을 해서 선형 결합을 하는데, Bert는 masking 해놓고 모델이 masked된 단어를 잘 예측하도록 학습시킴
  • fine-tuning 단계에서는 masking 없음 → 그럼 pre-training 과 fine-tuning 간의 mismatch가 있을 수 있지 않은가 → random token(10%), unchanged token(10%)으로 해결할 수 있다.

 

Task 2: Next Sentence Prediction (NSP)

  • ELMo, GPT는 문장 단위로 학습을 진행하기에 문장 사이의 관계를 다루는데 취약하다.
  • 학습방법: IsNext, NotNext로 label을 1, 0으로 주어 학습시킴 (단순한 아이디어지만 큰 효과)

 

 

Fine-tuning BERT

  • GPT에는 없는 단계로, 윗단에 layer만 걸쳐놓으면 어떠한 모델도 태울 수 있다.

pretrained 된 bert는 쉽게 다운받을 수 있다.

방법 4개를 논문에서 소개하고 있다.

1) 두 문장 관계 예측, 출력의 첫번째 c - cls token으로 두 문장의 관계를 나타냄

2) 문장을 분류, cls 토큰이 분류값 중 하나를 갖도록

3) 질문과 정답이 포함된 장문 받아 출력 마지막 token들이 첫, 마지막 index를 갖도록 한다.

4) 문장 속 단어를 tagging

 

'theory > NLP' 카테고리의 다른 글

[머신러닝 기초] 학습 유형  (0) 2023.05.07
[머신러닝 기초] entropy, binary cross entropy, KL divergence  (0) 2022.09.26
Transformer  (0) 2022.02.04
퍼셉트론(perceptron)  (0) 2022.01.17
sparql이란?  (0) 2021.03.22