LM : BERT

지윤·2024년 7월 1일

인공지능개론

목록 보기
3/5

BERT : Birdirectional Encoder Representations from Transformers
양방향 언어 모델링

BERT: Pre-training of Deep Bidirectional Transformers for
Language Understanding
https://arxiv.org/pdf/1810.04805.pdf

GitHub - google-research/bert: TensorFlow code and pre-trained models for BERT
https://github.com/google-research/bert

Prior work

  • Word Embedding
    • 머신 러닝 모델들이 단어를 처리하고 계산에 이용하기 위해서는 이 단어들을 숫자로 표현(numeric representation)해야 한다. Word2vec는 벡터를 이용하면 단어의 의미, 의미와 관련된 관계, 문법, 문법과 관련된 관계를 나타낼 수 있음을 보였다.

    • 매우 빠르게 모델이 이용하는 작은 데이터셋에서 처음부터 학습시키는 것보다 아주 많은 양의 텍스트 데이터에서 pre-train된 embedding을 이용하는 게 좋음. Word2Vec 혹은 GloVe와 같은 알고리즘들을 이용해 pre-train된 단어들의 embedding을 다운받을 수 있음.

    • 실제 숫자는 너무 많으므로 보통 간단한 형태의 그림으로 word embedding을 나타냄

    • GloVe representation을 이용하면 “stick”이란 단어는 어떤 맥락에서도 같은 벡터로 나타남. 하지만 어떤 문맥에서 이용되냐에 따라 다른 의미를 가질 수 있음.
      → 어떤 맥락에 있는지에 따라 다른 embedding을 이용해야 함. 맥락 속 단어의 의미 뿐 아니라 맥락 자체에 대한 정보도 embedding에 담고 싶음
      contextualized word-embedding

      • 단어가 문장의 맥락 속에서 어떠한 의미를 가지는지에 따라 다른 embedding 부여
      • ELMo는 먼저 전체 문장을 보고, 특정한 task로 학습된 bi-directional LSTM을 이용하여 각 단어의 embedding을 생성

ELMo

  • Embeddings from Language Models의 약자

  • 사전 훈련된 언어 모델 (Pre-trained language model)

    대규모 텍스트 데이터를 사용하여 사전에 훈련 → 모델이 다양한 문맥에서 언어를 이해하고 학습하는 데 도움

    단어의 sequence에서 다음 단어를 예측하는 Language Modeling에서 언어에 대한 이해를 습득. (다음 단어를 label로 쓰기 때문에 사람의 도움(human annotation)없이 엄청난 양의 모든 텍스트 데이터를 학습 데이터로 이용 가능)

    • 1B word benchmark에서 단일 문장들을 활용해 학습 1B word benchmark 데이터셋은 다양한 유형의 텍스트를 포함하고 있음 → 다양한 문맥과 언어의 특성 학습 가능
  • 두 개의 LSTM 기반 unidirectional 언어 모델들 (Left-to-right and right-to-left)

    • Forward, Backward 두 방향으로 Langiage model 수행

      • uni-direction 이 아닌 bi-direction을 모두 봄으로써 단순히 다음 단어에 대해서만 추측을 하는 것이 아니라 그 전 단어에 대해서도 이해할 수 있음
  • Feature-based approach: Task-specific model의 입력 벡터로 활용할 수 있는 표현을 추출

    다른 작업에 활용될 수 있도록 언어 모델로부터 추출한 표현을 사용. 이러한 표현은 특정 작업에 맞게 조정될 수 있음 → 텍스트 분류나 개체명 인식과 같은 작업에 유용하게 활용

  • 1B word benchmark(Chelba et al., 2014)에서 단일 문장들을 활용해 학습

OpenAI GPT

  • 하나의 트랜스포머 디코더 기반 unidirectional 언어 모델 (left-to-right)
  • Fine-tuning approach: Downstream task에 의해 모델 파라미터가 재사용/업데이트 됨
  • BooksCorpus로부터 512개 토큰 segments을 활용해 학습
    • ELMo에 비해 훨씬 긴 context 길이

Untitled


BERT

Bidirectional Encoder Representations from Transformers

구글에서 개발한 자연어 처리 신경망 구조. Transformer 구조의 encoder를 적층시킴

  • 대량의 corpus에서 encoding, decoding transformer를 사전 학습하고 이를 통해 embedding 추출
  • ELMo의 두 개의 RNN 대 BERT는 transformer를 통해 양방향 학습을 동시에 진행

Untitled

  • wiki나 book data와 같은 대용량 unlabeled data로 모델을 미리 학습시킨 후, 특정 task를 가지고 있는 labeled data로 transfer learning을 하는 모델

  • 2단계 step

    • step 1 : pre-trained(trained on un-annotated data) model 다운로드
    • step 2 : 해결하고자 하는 문제에 집중하여 fine-tuning
      (그림에서는 스팸 분류를 위한 Classifier 부분만 추가적으로 학습)

Example: Sentence Classification

pre-training(semi-supervised)된 BERT 모델에 classification을 fine-tuning(supervised training)하였다

pre-training(semi-supervised)된 BERT 모델에 classification을 fine-tuning(supervised training)하였다

이런 모델을 학습시키기 위해 classifier를 train시켜야 함 (BERT 모델의 학습 과정을 최소한으로 변경하면서) → Fine-Tuning

사용 예제: 감성 분석, 사실 확인 등

Model Architecture

  • BERT는 size에 따라 base와 large 모델로 나뉨

    • BERT BASE: 다른 transformer 모델들과의 비교를 위한 모델
    • BERT LARGE: SOTA(state-of-the-art) 모델을 위한 모델
  • 매우 많은 수의 encoder layer(Transformer Blocks)를 가짐

    • Base 버전은 12개, Large 버전은 24개
  • feedforward-network의 크기 또한 매우 크고(768개, 1024개의 hidden unit) 많은 attention heads를 가짐

    Untitled

  • BERT는 Transformer Encoder stack만을 이용한 모델

  • Model Inputs

    • [CLS](스페셜 토큰, Classification)로 시작 임베딩임을 알림
    • 단어의 시퀀스를 입력으로 받아 encoder stack을 타고 계속 올라감. 각 encoder layer는 self-attention을 적용하고 feed-forward network를 통과시킨 결과를 다음 encoder에 전달
    • Encoder는 stack으로 계속 쌓일 수 있으며 계속 self-attention됨
  • Model Outputs

    • 각 위치에서 hidden_size(BERT Base는 768) 크기의 벡터 출력
    • 문장 분류 예제의 경우 스페셜 토큰인 [CLS]의 출력에만 집중
    • 결과로 나온 출력 벡터는 classfier의 입력으로 이용
    • task가 더 다양한 종류의 label을 가짐 : classifier network를 변형해 더 많은 output neurons를 가지게 하고 softmax를 통과

    Untitled

Convolutional Networks와의 유사점

마지막 벡터를 활용하는 모습이 VGGNert과 같은 convolution 부분의 결과를 마지막 fully-connected classification 부분에서 이용하는 것과 유사

Untitled

Key contributions

  • 트랜스포머 인코더 기반의 Fine-tuning(미세조정) approach
  • 양방향 문맥(bidirectional context)을 고려하여 학습
    • 왼쪽/오른쪽 문맥은 단어의 의미를 파악하는 데 매우 중요
  • Pre-training objectives (사전학습 목적함수)
    • Maked language modeling + next sentence prediction
  • 문장-레벨, 토큰-레벨의 다양한 NLU 태스크 SOTA 성능을 달성

Masked Language Modeling (MLM)

양방향 모델에서는 일반적인 언어모델링(left-to-right)을 할 수 없음

Solution : Mask out k% of the input words then predict the masked word

Pre-training Task: Mask LM

입력 텍스트에서 15%의 단어를 가려버리고(masking) 모델에게 그 가려진 단어들을 알아맞추게 함

transformer의 encoder 부분을 LM에 활용할 수 없었던 가장 큰 이유는 기존 LM 테스크 자체가 트랜스포머의 encoder에 적합하지 않았기 때문. LM은 알 수 없는 다음의 단어를 예측하는 테스크라면 트랜스포머의 encoder는 self-attention 층에서 모든 단어들을 봐야했기 때문. BERT는 기존 task를 살짝 변형한 “masked language model” 개념으로 문제를 해결함.

단순히 입력의 15%를 마스킹하는 것 뿐만 아니라 나중에 fine-tuning 하는 과정을 위해 몇가지 다른 task들을 추가. ex) 마스킹할 때 그저 단어를 없애는 것이 아니라 랜덤하게 뽑은 다른 단어로 바꿔 모델에게 원래의 맞는 단어를 예측하게 하는 등..

Masking rate and strategy

  • Q : What is value of kk?
    • kk = 15%
    • too little masking → computationally expensive
    • too much masking → not enough context
  • 80-10-10 corruption
    for the 15% predicted words,
    • 80% → replace with [MASK] token
    • 10% → replce with random word
    • 10% → keep it unchanged
      Why? Because [MASK] tokens are never seen during fine-tuning

Next Sentence Prediction (NSP)

  • Motivation: many NLP downstream tasks require understanding the relationship between two sentences
    • 많은 자연어 처리 하위 작업들은 두 문장 간의 관계를 이해하는 능력을 필요로 함.
    • ex. natural language inference(자연어 추론), paraphrase detection(페러프레이즈 감지), QA(질문 응답)
  • NSP is designed to reduce the gap between pre-training and fine-tuning
    • NSP는 이러한 작업에 필요한 문맥 파악 능력을 갖추기 위해 고안되었다. 모델은 주어진 두 문장 중 첫 번째 문장을 기반으로 두 번째 문장이 이어진 것인지 아닌지를 예측하도록 학습된다. 따라서 NSP 모델은 문장 간의 의미적 흐름을 파악하고 그 관계를 잘못 예측할 경우 학습을 통해 개선된다.

BERT pre-training : putting together

Untitled

  • Vocabulary size: 30,000 workpieces (common sub-word units)
  • Input embeddings: Untitled
  • MLM and NSP are trained together
  • [CLS] is pre-trained for NSP
  • Other token representations are trained for MLM

Fine-tuning Tasks

In BERT, pretrain once and finetune many times

  • Sentence-level tasks Untitled
    • Sentence pair classification tasks:

    • Single sentence classification tasks:

    • For sentence pair tasks, use [SEP] to separate the two segments with segment embeddings

    • Add a linear classifier on top of [CLS] representation and introduce

    • × hh new parameters

    • C: # of classes, h: hidden size

  • Token-level tasks Untitled
    • Extractive question answering e.g., SQuAD

    • Named entity recognition

    • For token-level prediction tasks, add linear classifier on top of hidden representations

    • How many new parameters?

Performance

Ablation study

  • model sizes The bigger, the better!
  • training efficiency MLM takes slightly longer to converge because it only predicts 15% of tokens

What happened after BERT?

  • RoBERTa (Liu et al., 2019)

    • Trained on 10x data & longer, no NSP
    • Much stronger performance than BERT (e.g., 94.6 vs 90.9 on SQuAD)
    • Still one of the most popular models to date
  • ALBERT (Lan et al., 2020)

    • Increasing model sizes by sharing model parameters across layers
    • Less storage, much stronger performance but runs slower..
  • ELECTRA (Clark et al., 2020)

    • It provides a more efficient training method by predicting 100% of tokens instead of 15% of tokens
  • Models that handle long contexts (≫ 512 tokens)

    • Longformer, Big Bird, …
  • Multilingual BERT

    • Trained single model on 104 languages from Wikipedia. Shared 110k WordPiece vocabulary
  • BERT extended to different domains

    • SciBERT, BioBERT, FinBERT, ClinicalBERT, …
  • Making BERT smaller to use

    • DistillBERT, TinyBERT, …

Review

ELMo가 사용하는 contextualized word-embedding의 특징과 활용 방법에 대해 설명하시오.

contextualized word embedding은 문맥에 따라 word의 의미가 달라질 수 없는 점을 고려하여 임베딩을 생성한다. 이를 통해 단어의 다의어성과 문맥 의존성을 더 잘 캡처할 수 있다. ELMo의 이러한 특징은 자연어 처리 task에 활용하기 좋고, 다양한 transfer learning에 사용된다.

OpenAI GPT와 ELMo의 차이점을 비교 설명하시오.

ELMo는 두 개의 LSTM을 기반으로 하는 bidirectional 언어 모델으로 featured-based approach를 특징으로 한다. OpenAI는 transformer decoder 기반 unidirectional 언어 모델으로 fine-tuning approach를 특징으로 한다. ELMo는 파라미터가 고정되어 있지만 OpenAI는 downstream task에 의해 모델 파라미터가 재사용/업데이트된다는 점도 차이가 있다.

BERT의 전반적인 모델 아키텍처와 Pre-training 작업에 사용된 방법들에 대해 설명하시오.

BERT는 transformer의 encoder를 적층시킨 구조를 가지면서 양방향 언어 모델링을 수행한다.
pre-training에서는 semi-supervised learning을 사용하는데, Masked Language Modeling과 Next Sentence Prediction이 함께 훈련된다.

BERT의 Masked Language Modeling(MLM)과 Next Sentence Prediction(NSP)에 대한 학습 과정과 목적을 설명하시오.

MLM은 input word의 k%를 random하게 making하여 word를 예측하는 모델링이다. 이는 기존에 transformer의 encoder를 LM에 사용하기 어려웠던 문제를 해결한다. 모델은 문맥을 기반으로 문장 내 각 단어의 다양한 특성과 의미를 파악하도록 학습된다.
NSP는 많은 자연어 처리 작업들에서 필요한 두 문장 간 관계 이해 능력을 학습시키기 위해 고안된 방법이다. 두 문장의 쌍을 입력받아 두 문장이 연속인지 아닌지를 예측하도록 학습된다. BERT는 80-10-10 corruption steragy를 활용하는데 학습 데이터의 80%는 [MASK] 토큰으로 대체하고, 10%는 무작위의 다른 단어로 대체하며, 10%는 그대로 유지하는 전략이다.

BERT의 Fine-tuning 작업에서 Sentence-level tasks와 Token-level tasks에 대해 설명하시오.

Sentence-level task는 문장 전체에 대한 예측을 수행하는 task로 그 예시로는 두 문장 간의 관계 분류, 단일 문장 분류 등이 있다. Token-level task는 각 토큰에 대한 예측을 수행하는 task로 NER(Named Entit Recognition), extractive QA 등이 있다.

0개의 댓글