BERT 요약

dddwsd·2022년 3월 31일
0

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

https://www.youtube.com/watch?v=30SvdoA6ApE

GPT-1

  • 2018년 OpenAI에서 transformer의 decoder구조를 사용해서 만든 NLP 모델.
  • generative training of LM - 문장내의 단어를 하나씩 읽어가면서 다음 단어 예측
  • Unsupervised learning - 별도의 labeling 필요없음 - 문장 하나로 여러 학습 데이터 만들 수 있음

BERT - Bidirectional Encoder Representations from Transformer.

  • 문맥의 양방향을 보고 transformer의 encoder를 통해 encoding을 진행해준다.
  • GPT-1은 문장을 처리하는데 부족함이 있을 수 있다 -> 왼쪽에서 오른쪽으로 읽어나가면 문맥이해능력이 떨어질 수 있다.
  • 따라서 bidirectional한 encoder를 이용한 BERT 제시

Pre-training

  • 가려진 단어(mask token)을 예측하는 방식으로 학습을 진행
  • 사람이 data를 labeling할 필요가 없고, 문자의 단어만 가려주고 맞추도록 학습하면 된다.
  • token 간의 상관관계뿐 아니라 문장간의 상관관계도 학습함
  • CLS token - classification task에 사용되는 토큰으로 문장 전체가 하나의 벡터로 표현된 스페셜 토큰임을 의미
  • SEP token - 두 문장으로 구성된 입력의 경우 각 문장을 구별함

Embeddings

  • Token Embedding
    • WordPiece embedding을 사용하여 문장을 tokenize한다.
    • WordPiece embedding은 단순 띄어쓰기로 단어를 구분하는 것 보다 효과적으로 token을 분류함 ex) playing -> play + ##ing
    • 이렇게 구분할 경우 play와 #ing가 각각 명확한 뜻을 갖고 있으므로 model에게 두가지 의미를 명확하게 학습시킬 수 있고 신조어 또는 오탈자가 있는 입력값에도 예측이 상향될 수 있다. ex) googling - google + #ing
  • Segment Embedding
    • 두개의 문장이 입력될 경우 각 문장에 다른 숫자를 더해줌
    • 모델에게 문장의 구분능력을 높여주기 위함.
  • Positional Embedding
    • token의 상대적 위치를 알려줌
    • sin cos 함수를 사용
      • sin cos의 출력값은 입력값에 따라 달라짐 따라서 입력값의 상대적인 위치를 알 수 있게 한다.
      • sin cos의 출력값은 규칙적으로 증가 감소하므로 모델이 규칙을 사용하여 입력값의 상대적 위치를 쉽게 계산할 수 있다
      • 무한대 길이의 입력값도 상대적인 위치를 출력할 수 있다.

Fine-tuning

  • 두 문장의 관계 예측 task
    • SEP 토큰으로 구별된 두 문장을 입력값으로 받고 출력값의 첫번째 CLS 토큰을 두 문자의 관계를 나타내도록 학습 시킴
  • 문장을 분류하는 task
    • 문장을 입력으로 받고 출력값의 CLS 토큰이 분류값중 하나가 되도록 학습을 시킴
  • Q&A task
    • 질문과 정답을 SEP 토큰으로 분류해서 입력으로 줌 출력값의 마지막 토큰들이 정답의 시작 index와 마지막 index를 출력하도록 학습시킴
  • 문장속 단어 tagging task
    • 각 입력 token에 대한 출력값이 원하는 tagging으로 출력되도록 학습을 시킴.

BERT vs GPT

  • bidirectional / left to right
  • fine-tuning 필요 / fine-tuning 필요x
  • 모델의 크기가 작음 / 모델의 크기가 큼
  • task마다 다르게 fine-tuning이 이뤄져야 함 / fine-tuning없이 여러가지 task 처리 가능
  • 시간과 돈이 적게 듦(단 fine-tuning에도 돈과 시간이 듦) / 시간과 돈이 많이 듦
profile
Github - https://github.com/dddwsd

0개의 댓글