[NLP] BERT

yoonene·2021년 12월 8일
0

ML/DL

목록 보기
3/17
  • Bidirectional Encoder Representations from Transformers
  • 위키피디아, 책 데이터 학습
  • 기본적으로 2개의 문장으로 학습. 더 확장 가능
  • Bert 모델(Pre-training) + Fine-Tuning(다운스트림 태스크 작업)
    -> Bert 모델에 자기 task에 맞게 내 데이터만 넣으면 된다..(?)
  • 언어를 생성할 것이 아니면 무조건 Bert를 쓰면 됨

Pretrained Model 중 지존인 이유 (생성X)

1) 엄청나게 큰 학습 parameters 수
2) 양방향 학습

BERT 내부 동작 과정

  • Embedding
  • pre-training

Embedding

1) Token Embedding

Word Piece Embedding: 문자 단위로 임베딩, 단어가 어휘 사전에 있으면 토큰으로 없으면 개별 문자에 도달할 때까지 분할 반복 => 문법을 고려해 자세한 tokenizing 가능

2) Segment Embedding

토큰화된 단어들을 하나의 문장으로 만드는 작업

3) Position Embedding

토큰의 입력 위치 임베딩

Pre-Training

Language Models

  • MLM (Masked Language Model)
  • NSP (Next Sentence Prediction)

MLM (Masked Language Model)

: 입력 문장에서 무작위로 토큰의 15%를 가리고 그 토큰을 맞추는 방식으로 학습

  • Bert의 자동 인코딩 언어 모델
  • 양방향으로 문장을 읽음
  • 입력 문장의 15%를 무작위로 마스킹하고 마스크된 단어를 예측하는 방식으로 학습
    - 15% 중 80%는 토큰을 [MASK] 토큰으로 교체
    • 10%는 토큰을 임의의 토큰으로 교체 (아무말)
    • 10%는 토큰을 변경하지 않음 (그냥 정답 그대로 둔다)
  • tokens = [[CLS], Paris, is, a, beautiful, [MASK], [SEP], I, love, Paris, [SEP]]

  • 문장을 입력할 때 그대로 넣을 수 없으니 위의 임베딩을 해주고, 그 값을 BERT의 입력으로 사용함
  • Bert-base 모델의 12개의 인코더 레이어는 transformer network의 인코더
  • 모델의 결과로 각 단어들의 representation이 나오쥬
  • 그걸 내 데이터에 활용하고 fine-tuning하여 쓰면 되지.
  • 내 모델을 만들 필요가 없음

  • 저 representation 결과를 FFNN+softmax에 학습시키면 빈칸에 올 각 단어들의 확률값을 얻을 수 있음.

NSP (Next Sentence Prediction)

: 두 문장이 주어졌을 때 두 문장의 순서를 예측하는 방식으로 두 문장의 연관을 맞추는 학습
question&answering 같은 tast는 NSP가 꼭 필요함. (Q와 A가 연관이 있어야 하니까)

  • isNext
    : 두 문장이 연관있는 경우의 label
    -> 함께 입력되어야 의미가 있는 문장들
  • NotNext
    : 두 문장이 독립적인 경우의 label


  • 문장 쌍에 위와 같은 label을 붙여서 학습.
  • BERT 모델에 FFNN+softmax => isNext/NotNext에 대한 확률분포 나옴. (이진 분류)
  • 다음 문장이 모델에 같이 입력되어야 하는지 아닌지 학습하는 단계가 pre-training에서 NSP.

+) 위의 임베딩, pretraining 과정을 통해 학습된 Bert 모델을 가져다가 Fine-Tuning해서 사용하면 됨.
가져다 쓸 때, BertForSequenceClassification/BertForQuestionAnswering 등 TASK에 맞게 가져다가 사용할 수 있음.
QnA는 항상 2개의 문장이 세트로 들어가기 때문에 NSP가 꼭 필요함.

마무리

언어 생성 외의 감성분석, 동시 출현 그래프 등..의 작업에는 Bert가 짱
언어 생성은 GPT-3가 짱

profile
NLP Researcher / Information Retrieval / Search

0개의 댓글