• toc {:toc}

Problem & Background

  • NLP(Natural Language Processing) task
    • Sentiment Analysis
    • Summarization
    • Machine Translation
    • Question Answering(QA)
    • Sentence Similarity
    • Paraphrasing
    • Named Entity Recognition
    • Coreference Resolution

GPT, BERT 모델이 나오기 전까지의 과거 자연어 처리 모델은 대부분 하나의 특정 문제를 해결하는 것을 목적으로 설계됐다. 따라서 End-to-end로 시작부터 끝까지 하나의 문제에 대해 적합한 학습을 했고, 이외의 다른 문제에 대해서는 좋은 성능을 보이지 못했다. 또한, 특정 문제에 대해서만 해결하려는 노력은 데이터 희소 문제로 인해 한계가 있다.

  • 데이터 희소 특정 문제에 대해 적합한 학습을 하기 위해서는 특정 문제에 맞는 데이터셋이 존재해야 한다. 예를 들어 Question Answering이라 하면 질문에 대한 답변을 쌍으로 갖는 데이터셋을 필요로 한다. 하지만 이렇게 데이터셋을 만드는 것 자체도 상당한 비용이 들고, 데이터의 양도 높은 성능을 내기에는 부족하다.

때문에 일반적인 특징을 뽑아낼 수 있는 방식을 연구했고, 일반적인 특징을 학습한 Foundation Model을 이용해 각 문제에 대해 전이학습(Transfer Learning), 미세조정(Finetuning)을 하는 연구가 진행됐다.

image

GPT

image

GPT는 트랜스포머(Transformer)의 디코더(Decoder)를 12개로 겹쳐서 만든 구조이다. 디코더는 Masked Multi Self Attention을 이용한다. Masked Multi Self Attention은 전체 문맥을 보고 다음 단어를 추론을 하는 것이 아니라 다음 단어를 추론할 때 현재 단어만 확인할 수 있고 미래의 단어는 Masking을 통해 가려 놓는다. 이런 구조를 통해서 추론 능력을 키울 수 있다. Masked Multi Self Attention을 사용하기 때문에 GPT는 아래와 같이 단방향 구조로 이루어진다.

image

BERT에서는 GPT의 단방향 구조가 전체적인 문맥을 학습하지 못하고 왼쪽에서 오른쪽으로의 문맥만 파악할 수 있다는 점을 한계로 삼아 양방향의 문맥을 확인할 수 있는 구조를 제안했다.


BERT

image

BERT의 전체적인 구조는 다음과 같다. GPT는 디코더를 12개로 쌓은 반면, BERT는 인코더를 12개로 쌓은 구조로 이루어져 있다. 인코더는 디코더와 다르게 Masked Multi Self Attention이 아니라 Multi-Head Self Attention을 사용한다. 때문에 앞, 뒤 문맥을 전부 확인하는 양방향 구조로 이루어진다.

image

각 순서마다 GPT와 같이 이전 문맥만 확인하는 것이 아니라 오른쪽 문맥도 같이 확인할 수 있기 때문에 더 일반적이고 문맥을 고려하는 특징을 학습할 수 있다.

image

BERT 또한 foundation model로, unlabeled 데이터를 이용해 학습시키고, MNLI, NER, SQuAD와 같은 각 문제에 대한 미세조정을 통해서 적합한 모델로 변형시킨다.


Implementation

BERT가 다양한 문제에 좋은 성능을 낼 수 있도록 하기 위해 사용한 기법에 대해 알아보자.

Embedding, Token

image
  • Token Embedding : Word Piece 토큰화를 사용하여 단어를 토큰화한다.
    • CLS Token : Special classification token이다.
      • 입력 받은 모든 문장의 시작을 나타내고, 모델의 모든 층을 거친 후 CLS 토큰의 final hidden state는 분류 작업에 사용되는 통합적인 표현으로 사용된다.
    • SEP Token : QA 문제와 같이 문장의 쌍으로 주어지는 경우 문장을 구분하기 위한 토큰이다.
  • Segment Embedding : 매 토큰마다 문장 A, B 중 어느 문장에 속하는지 나타내는 역할을 한다.
  • Positional Embedding : 위치 정보를 임베딩한다.

Positional Encoding으로 sin, cos 값을 사용한 트랜스포머와 다르게 BERT에서는 Positional Embedding을 사용해 학습을 통해 정해준다.

Masked Language Model(MLM)

GPT에서는 Masked Multi Self Attention을 이용해 예측하는 성능을 높였다. 이처럼 BERT에서도 예측 성능을 높이기 위해 Masked LM 의 기법을 사용했다. MLM은 아래와 같이 본래 문장에서 15%를 랜덤으로 선택해 MASK 토큰을 씌우고 MASK된 위치의 단어를 예측하도록 한다. 이를 통해 더 깊은 특징을 학습하고 예측 성능을 높일 수 있다.

The man went to the store and buy a snack The man went to the (MASK) and buy a snack

MLM (Detail)

보다 더 구체적인 구현을 살펴보면 BERT는 본래 문장에서 15%로 선택한 랜덤한 단어를 다시 구분한다.

  1. 80% 확률로 MASK 토큰을 씌운다. ex) The man went to the [MASK] and buy a snack
  2. 10% 확률로 랜덤한 단어로 변환한다. ex) The man went to the cat and buy a snack
  3. 10% 확률로 원래 단어를 사용한다. ex) The man went to the store and buy a snack

전체 확률을 확인해보면 다음과 같다. (출처 : 딥러닝을 이용한 자연어 처리 입문) image

만약 MASK 토큰을 매 문장마다 사용해 학습을 했을 때, 미세조정을 할 때에는 MASK 토큰이 입력되지 않기 때문에 부조화가 발생하게 되므로 MASK 토큰을 매 문장마다 사용하지 않고 확률적으로 사용한다.

image

원래 문장이 the man went to the store, he buy a snack 으로 이루어져 있을 때 MLM의 3가지 경우를 적용해보면 위 그림과 같이 표현된다. 모델을 지나고 난 후 MLM classifier(Dense + Softmax)를 통과하면 각 토큰에 대한 확률값이 출력된다.

Next Sentence Prediction(NSP)

BERT는 MLM에 추가로 QA와 같은 task에서 중요한 두 문장 사이의 관계를 이해하는 NSP 문제도 사전학습한다. NSP task에서는 문장 A와 문장 B를 두고 연관성이 있다면 IsNext, 없다면 NotNext의 label을 설정하고, 각 훈련에서 IsNext와 NotNext 문장의 쌍 비율을 5:5로 설정해 학습한다. NSP는 IsNext와 NotNext로 분류하는 문제로, CLS 토큰의 출력을 사용해서 분류한다.

문장 A : The man went to the store 문장 B : He bought a gallon of milk Label : IsNext

문장 A : The man went to the store 문장 B :Dogs are so cute Label : NotNext

image

Conclusion

image

BERT의 GLUE score를 확인해보면 이전의 모델보다 각 문제에 대해 높은 성능을 보인다는 것을 확인할 수 있다.

참고문헌

연결문서