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

멋쟁이토마토·2024년 4월 12일
0

Paper Review - NLP

목록 보기
3/7

PAPER
BERT의 T가 Transformer의 약자이기 때문에 Transformer 논문을 먼저 읽고 읽는게 좋을 것 같다. BERT는 Transformer의 Encoder 구조만을 활용한 모델이다!

Abstract

BERT: Bidirectional Encoder Representations from Transformers
Transformer의 양방향 인코더 표현
최근 언어 표현 모델들과 달리, unlabeled text로부터 deep bidirectional representations pre-train이 가능
➡ unlabeled data로 pre-training을 거친 후, 특정 downstream task에 fine-tuning

  • task별로 구조를 크게 수정할 필요 없이, 출력 layer 하나를 추가하여 fine-tuning이 가능함.
    ➡ QA (질문 답변), Language inference (언어 추론)과 같은 task에서 SOTA 달성

이 논문에서 계속해서 deep bidirectional을 강조하는데, 기존의 bidirectional LSTM과 ELMo와 차별화되는 점이 있으니까 강조했겠거니,, 생각했다. ELMo에서는 forward와 backward LSTM의 출력을 단순히 concat(연결)해주는데, 이렇게 함으로써 양방향적인 문맥 정보를 고려한 임베딩을 얻을 수 있었다.
즉, ELMo는 여러 개의 양방향 LSTM 계층을 사용해서 양방향적인 문맥 정보를 고려한 임베딩을 생성하지만, 각각의 LSTM 계층은 단방향으로 동작한다. 그래서 deep bidirectional하지 않다고 표현한 것으로 이해했다 ^_^,,


Introduction

Language model에서 pre-training은 많은 자연어 처리 task에 효과적이라는 것임을 보여줌.
NLI(natural language inference)와 paraphrasing과 같은 문장 수준의 task는 문장 간의 관계를 전체적으로 분석하여 예측
개체명 인식과 QA와 같은 토큰 수준의 task는 토큰 단위의 fine-grained ouput을 생성
fine-grained ouput : 하나의 ouput을 내기 위해 ouput 프로세스를 세분화하여 수행

📍Down stream task에 pre-trained language representation를 적용하는 2가지 방법

1. feature-based approach
ex. ELMo

  • pre-trained representation을 additinal feature로 활용해서 task-specific architecture 사용

2. fine-tuning approach
ex. GPT

  • 최소한의 task-specific parameter를 도입하고, 모든 사전 훈련된 parameter를 단순히 fine-tuning함으로써 down stream task 학습
    ➡ 둘 다 pre-traning 과정에서 동일한 objective function을 공유, general language representation을 학습하기 위해 unidirectional language model 사용

기존의 방식들은 pre-trained representation을 제한함. (특히 fine-tuning approach)
가장 큰 한계는 언어 모델들이 unidirectional하다는 것 → 사전 훈련하는 동안 사용될 수 있는 architecture의 선택을 제한
ex. GPT는 'left-to-right' 구조 사용 → self-attention layer에서 모든 토큰이 이전 토큰에만 attend

BERT는 "MLM(Masked Language Model)"을 사용하여 단방향 제한을 완화시킴.

  • MLM은 랜덤하게 input에서 일부 토큰들을 masking하는 것을 말함. - 해당 토큰이 구성하는 문장만을 기반으로 마스킹 된 토큰들의 원래 값을 정확하게 예측하는 것이 목표→ 단방향 언어 모델의 pre-training과는 달리, MLM은 양방향 맥락을 융합시켜서 deep bidirectional이 가능하도록 함.
    ➕ MLM에서 text-pair representations로 pretrain하면 Next sentence prediction task에도 적용 가능

Unsupervised Feature-based Approaches

word embedding을 통한 접근은 sentence embedding 또는 paragraph embedding으로 세분화 되어짐.

sentence representation의 학습은
① 다음 문장의 후보들에 순위를 매기기
② 이전 문장이 주어졌을 때, 다음 문장의 단어를 left-to-right로 생성
③ denoising auto-encoder
등을 사용했었음.

ELMo와 이전 모델들은 기존의 전통적인 단어 임베딩 연구를 다른 차원에서 일반화하는 방법을 제시
left-to-right와 right-to-left 언어 모델을 통해 context-sensitive feature 추출
각 토큰의 문맥적 표현은 left-to-right 및 right-to-left 표현의 연결(concatenation)로 구성됨.

Unsupervised Fine-tuning Approaches

feature-based approach에서 처음 해야할 작업은 unlabeled text의 word embedding 파라미터들을 사전 학습시키는 것.
최근 contextual token representation을 생성하는 sentence or document encoder는 unlabeled text로 사전 학습시키고 supervised downstream task를 위해 fine-tuning함 ➡ 처음부터 학습시켜야 할 파라미터 수가 적다는 장점

Transfer Learning from Supervised Data

NLI와 machine translation과 같은 큰 데이터셋을 사용한 supervised task에서의 전이 학습도 효과적이었음.
전이학습의 중요성은 CV research 분야에서도 드러나는데, ImageNet으로 사전 훈련된 모델을 fine-tuning한 것도 효과적이었음.

BERT

📍 BERT의 framework는 2단계로 이루어져 있음.

① pre-training
다양한 pre-training task의 unlabeled data로 훈련됨.

② fine-tuning
사전 훈련된 파라미터들로 초기화되고 모든 파라미터들은 downstream task의 labeled data를 사용하여 fine-tuning 됨.
각 downstream task는 같은 사전 학습된 파라미터들을 가지고 초기화되더라도 별도의 fine-tuning된 모델을 가짐.

BERT는 다른 task를 수행할 때도 동일한 구조를 가진다는 특징이 있음.
➡ 사전 학습된 구조와 마지막 downstream 구조에서의 최소한의 차이만 존재

Model Architecture

모델 구조는 Transformer에 나와있는 구현에 기반한 multi-layer bidirectional Transformer encoder
L : layer의 수 , H : hidden size , A : self-attention head의 수

BERT base L = 12, H = 768, A = 12로 총 110M개의(약 1억1천만) 파라미터 사용
BERT large L = 24, H = 1024, A = 16으로 총 340M개의(약 3억4천만) 파라미터 사용

BERT base는 OpenAI GPT와 비교를 위해 모델 크기를 동일하게 함.
BERT Transformer는 bidirectional self-attention을 사용하지만, GPT Transformer는 모든 토큰이 이전의 context만 attention할 수 있는 self-attention을 사용한다는 점이 중요하게 다름.
➡ BERT는 bidirectional self-attention / GPT는 constrained self-attention

  • GPT는 next token을 맞추는 기본적인 language model을 만들기 위해 transformer decoder만 사용
  • BERT는 MLM과 NSP를 위해 self-attention을 수행하는 transformer encoder만 사용

Input/Output Representations

BERT로 다양한 down-stream task에 적용하기 위해서는 input representation에 단일 문장과 문장 쌍을 하나의 토큰 sequence로 명확하게 나타낼 수 있어야 함.
30,000개의 token vocabulary를 가지는 wordpiece embedding 사용

BERT는 3가지 embedding vector를 합쳐서 input으로 사용

[CLS] : special classification token으로 모든 sequence의 첫 번째 토큰
[SEP] : 문장 쌍이 입력될 때, 문장을 구분해주는 special token

[CLS] 토큰과 일치하는 최종 hidden state는 classification task를 위해 sequence를 표현을 종합함.
문장 쌍은 하나의 sequence로 함께 묶여지는데 special token인 [SEP]로 분리하고, 문장 A인지, B인지 나타내는 embedding인 Segment Embedding을 추가함.

최종적으로 Input은 Token Embedding + Segment Embedding + Position Embedding으로 이루어짐.

Token Embedding은 wordpiece embedding , Position Embedding은 Transformer와 동일

Pre-training BERT

Task #1 : Masked LM

standard conditional language model에서는 'left-to-right'나 'right-to-left'로 훈련되어져 왔는데, bidirectional conditioning은 예측하려는 단어를 간접적으로 참조할 수 있고, multi-layered 구조에서 해당 단어를 예측할 수 있기 때문

deep bidirectional representation을 훈련시키기 위해 input의 일부를 랜덤하게 mask하고 masked token을 예측함.
➡ masked LM (MLM)

mask token에 해당하는 마지막 hidden vector는 standard LM에서와 같이 vocabulary에 대한 출력 softmax로 전달됨.
마스크된 토큰에 해당하는 최종 은닉 벡터들은 출력 소프트맥스를 통해 어휘(vocabulary)에 대한 확률 분포를 생성하고, 확률 분포는 각 단어가 다음에 올 단어일 확률을 나타냄

각 sequence에서 랜덤하게 WordPiece token의 15%를 마스킹함. → masked word 예측

❗ bidirection으로 사전 학습할 수 있게 됐지만, fine-tuning 과정에는 [MASK] 토큰이 없기 때문에 mismatch되는 문제가 생김

이를 완화시키기 위해, [MASK] 토큰을 항상 masked시키지는 않음.
훈련 데이터를 생성할 때, 예측을 위해 랜덤으로 token position의 15%를 선택
(1) 80%는 [MASK] 토큰으로 교체
(2) 10%는 임의의 토큰으로 교체
(3) 10%는 변경되지 않은(기존의) 토큰 사용
이 방식으로 token(TiT_i)이 cross entropy loss를 통해 원래 token을 예측함.
(TiT_i는 (1)에서는 [MASK] 토큰, (2)에서는 무작위한 토큰, (3)에서는 원래 토큰)

(2)에서 임의의 토큰으로 교체해도 될까 싶지만, 15%의 10%면 1.5%이기 때문에 모델 성능에 영향을 미치지 않는다고 한다..!


Fine-tuning BERT

BERT의 fine-tuning은 Transformer의 self-attention mechanism을 사용하기 때문에 간단함.
text pair를 포함한 application에서는 bidirectional cross attention을 적용하기 전에 독립적으로 text pair를 인코딩함.
BERT는 self-attention mechanism을 사용해서 이 두 단계를 통합함.
➡ encoding하는 과정에 bidirectional cross attention이 포함
즉, BERT는 두 문장을 하나의 시퀀스로 합치고(self-attention을 통해 각 토큰 간의 상호 작용을 파악), 인코딩된 시퀀스를 통해 두 문장 간의 관계를 동시에 파악함.

각 task에 대해 단순히 task-specific한 입력과 출력을 BERT에 연결하고 모든 파라미터를 end-to-end로 fine-tuning

✅ (1) Sentence pairs in paraphrasing

  • 두 개의 문장이 주어졌을 때, 이들이 의미적으로 유사하거나 동일한지 여부를 판단
  • 텍스트 간의 의미적 유사성을 파악하고 문장 재구성에 활용

✅ (2) Hypothesis-Premise pairs in entailment

  • 두 개의 문장이 가설(hypothesis)과 전제(premise)로 주어졌을 때, 가설과 전제가 맞는지에 대해 확인
  • 두 문장 간의 추론 관계 파악

✅ (3) Question-Passage pairs in question answering

  • 주어진 지문과 질문에 대해 답을 추출
  • 지문에서 질문에 해당하는 정보를 찾아서 답을 추출함.

✅ (4) Degenerate text-∅ pair in text classification or sequence tagging

  • 텍스트 분류, 품사 태깅 및 개체명 인식 등
  • degenerate text-∅ pair : class 또는 label이 주어지지 않은 텍스트

ouput도 task마다 달라짐.

  • 토큰 단위의 task인 sequence tagging이나 QA에서는 ouput layer에 token representation이 들어감.
  • 분류를 위한 entailment나 감성 분석에서는 ouput layer에 [CLS] representation이 들어감.

Experiments & Ablation Studies

experiments와 ablation studies는 생략하도록 하겠습니다! 그래도 한 가지만 보도록 하겠습니다,, ㅎㅎ

Feature-based Approach with BERT를 보면 Concat Last Four Hidden의 Dev F1이 96.1로 Fine-tuning approach랑 별로 차이가 안 났습니다. 그런데도 fine-tuning이 더 많이 사용되는 이유가 뭘까 고민해보다 fine-tuning하는게 더 간단한데 성능도 더 좋아서 라고 생각했는데, 다른 이유가 있을까 해서 chat GPT에게 물어봤습니다 ㅎ

Feature-based approach는 모델과 특징을 별도로 설계하고 결합해야 하는 번거로움과 작업의 복잡성으로 인해 제약을 가지고 있습니다. 반면 Fine-tuning은 사전 훈련된 모델을 작업에 맞게 조정하기만 하면 되므로, 특징 엔지니어링과 작업 복잡성에 대한 부담이 줄어듭니다.

라고 하네요!


Conclusion

최근 언어 모델들을 이용한 전이 학습에 따른 실증적인 개선은 unsupervised pre-training이 많은 언어 이해 시스템에 필수적인 부분임을 보여줌. deep unidirectional architecture이 아닌 deep bidirectional architecture를 통해 일반화함으로써 동일한 pre-trained model이 다양한 NLP task를 성공적으로 처리할 수 있다는 것이 주요 기여한 점임.

profile
better than yesterday !

0개의 댓글