Published on

BERT(Bidirectional Encoder Representations Transformer)

Authors
  • avatar
    Name
    Inhwan Cho
    Twitter

BERT 개요

  • GPT : Transformer디코더 아키텍쳐를 활용
  • BERT : Transformer인코더 아키텍쳐를 활용

BERT(Bidirectional Encoder Representations Transformer)는 딥러닝 언어 모델로, 트랜스포머의 인코더 부분을 기반으로 합니다. 이 모델은 양방향으로 문맥을 이해하며, 텍스트의 의미를 더 정확하게 파악하는 데 도움을 줍니다. 기본적으로 BERT는 Fine-tuning을 위해 만들어진 Pre-trained model입니다. (==fine-tuning approach) 주로 Fine-tuning을 통해 특정 작업에 적용되며, 자연어 처리 분야에서 다양한 언어 관련 작업에서 높은 성능을 보여줍니다. BERT의 등장은 언어 모델의 발전을 대표하는 중요한 마일스톤으로 평가되고 있습니다.

BERT 구조

위의 그림은 BERT논문에서 가져온 그림으로 BERT를 잘 설명해주고 있습니다.


Pre-training이 어떻게 되는지 자세하게 살펴보겠습니다.

Transformer의 Encoder block

BERT의 model architecture를 살펴보면 위의 그림의 Transformer의 encoder block을 사용합니다.


다음으로 BERT의 input값이 어떻게 들어가는지 살펴보겠습니다.

BERT의 input

논문의 그림입니다. Input 값은 3가지 embeddings의 합입니다. Token Embeddings, Segment Embeddings,Postion Embeddings 입니다.

먼저 Token Embeddings은 특징은 WordPiece를 30,000개의 vocab을 사용한 embedding입니다.

WordPiece는 문장을 공백 문자(space)단위로 나누는게 아닌 특징 단어(ex playing -> [play, ##ing])로 나누어 보다 의미있는 학습을 도와줍니다.

Segment Embeddings은 문장 A와 문장 B를 구분해서 embedding하는 것입니다.

마지막 Postion Embeddings은 transformer에 사용된 것과 동일하며 단어들의 포지션을 알려주는 embedding입니다.

이 3가지 임베딩의 합이 input으로 사용됩니다.


BERT-base를 기준으로 layer의 수는 12개, hidden size는 768, Attention heads는 12개, parameters는 110M개 입니다.

BERT pre-training

Input data는 Unlabeled Sentence A and B Pair가 사용되었습니다. 다시 말해, 라벨이 없는 일반적인 문장 데이터가 활용되었습니다. 이는 두 개의 문장이 쌍으로 구성될 수 있으며(예: QnA 문장), 또는 하나의 단일 문장으로 구성될 수도 있습니다.

여기서 sentence는 Masked sentence A, B로 들어오는데, A와 B는 스페셜 토큰 중 1개인 [SEP]를 통해 문장이 구분 됩니다. 또한 맨 앞에 보이는 [CLS]토큰을 통해 문장의 시작을 알 수 있습니다.

게다가 Masked라는 단어에서 유추할 수 있겠지만, 일정 비율만큼 Masking을 하여 사용한다는 의미입니다.

그리고 final hidden vector의 맨 첫번째 토큰(그림에서는 맨 위의 대문자 C) 또한 [CLS] 토큰이며 이는 이를 활용하여 감성 분류인지 다음 문장 예측인지 등을 확인하는 토큰입니다.

이 input 문장들을 Task 2가지를 사용합니다. task 1 :Masked Language Model(MLM)과 task 2 :Next Sentence Prediction(NSP)을 사용하여 Pre-training을 합니다.

MLM이란, input tokens의 일정 비율(15%)을 마스킹하고 마스킹 된 토큰을 예측하는 것이고, NSP는 A, B 문장 사이의 관계가 B가 A의 다음(next) 문장인지 아닌지 학습합니다.

MLM을 자세히 살펴보겠습니다.

MLM

위의 그림은 MLM을 설명하는 그림입니다.

input은 [W1W_1, W2W_2, W3W_3, W4W_4, W5W_5]인데 일정 %(15%)만큼을 [MASK] 토큰으로 바꿔줍니다. 그림에서는 W4W_4가 마스킹되어 학습이 진행됩니다.

즉, 여기서는 output값인 O4O_4를 FC layer+GELU+Norm을 통해 나온 W4W^\prime_4W4W_4가 되도록 학습한다는 의미입니다.

다만, 논문에서는 이러한 방식을 통해 pre-trained model은 얻을 수 있지만, fine-tuning 사이의 mismatch가 발생하고 이를 해결 할 필요가 있다고 합니다.

이를 해결하기위해 위에서 언급한 %(15%)의 [MASK] token에서 추가적인 처리를 더 해줘야 합니다.

15%의 마스킹된 것의

80%는 token을 [MASK] token으로 변경.

10%는 token을 random word로 변경.

나머지 10%는 token을 원래 단어 그대로 놔둡니다.

위의 방식을 통해 BERT의 pre-trained model을 얻을 수 있습니다.


마지막으로 BERT의 Fine-tuning에 대해 알아보겠습니다.

BERT fine-tuning

BERT의 파인튜닝에는 크게 4가지가 있습니다.

(a)는 문장 A, B가 들어왔을때 단순히 특정한 Class에 속하는지 아닌지는 이 구조(범주의 예측)

(b)는 문장 1개가 들어왔을때 특정한 Class에 속하는지 아닌지는 이 구조(범주의 예측)

(c)는 문장 Question, Answer를 맞추는 구조입니다.(answer 문장의 생성)

(d)는 문장 1개가 들어왔을때 객체명 인식, 형태소 분석 등을 하는 구조입니다.

참고 자료

Transformer 논문
BERT paper
고려대 유튜브
Jay alammar 블로그