BERT 논문 리뷰

김태훈·2023년 6월 23일
0

본 페이지에서는 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding의 등장배경과 특징에 대해서 말하고자 합니다.


1. Intro

본 논문은 BERT라는 모델을 발표를 합니다.

BERT라는 모델은 기존의 자연어 모델들과는 다른 방식으로 라벨링되지 않은 텍스트에 대해 양방향으로 Representation에 대해 Pre-Training(사전학습) 하도록 고안된 모델입니다.

특히 주목할 점은 기존에는 사전학습된 모델을 Fine-Tuning할 경우 목표 Task가 제한되지만 BERT는 출력 레이어를 하나만을 추가하여 여러 Task에서 SOTA를 달성할 수 있게 되었습니다.

사전 학습된 Language Representation에 대해서 Downstream Task들에 적용할 수 있는 전략은 다음과 같습니다.

  1. Feature Based Approach : ELMo와 같은 종류가 있는데 이는 사전 학습된 Representation을 추가적인 Feature 로 포함하는 Task-Specific Architecture 를 사용합니다.

  2. Fine-Tuning Approach : GPT와 같은 종류가 있는데 최소한의 Task-Specific 파라미터만을 추가하고, Downstream Task들에서 이전에 사전학습된 모든 파라미터를 간단히 Fine Tuning함으로써 할 수 있습니다.

그런데 현재의 기술은 사전 학습된 Representation의 성능에 제한이 생기며 특히 Fine-Tuning 접근법에서 더욱 더 제한됩니다.

그 이유는 단방향 언어 모델이 사전 학습하는 동안 사용될 수 있는 모델 구조의 선택에 제한을 발생 시킵니다.

예를 들면 GPT의 경우 단방향 언어모델로 Self-Attention을 통해 해당 시점보다 이전의 토큰들에 대한 정보만을 활용할 수 있습니다.

이는 번역과 같은 Sequence Level의 작업에서는 크게 문제가 되지 않지만, 양방향의 문맥이 중요한 질문-답변과 같은 토큰 Level의 작업에서는 문제가 될 수 있습니다.

이런 문제를 BERT에서는 Masked Language Model(MLM) 방식을 사용해 해결하고자 하였습니다.

또한 Next Sentence Prediction 방식을 사용해 Text쌍 Representation에 대해서 학습하도록 했습니다.

자세한 내용들은 이후에 다루겠습니다.


2. Strategies For Applying Pre-Trained Language Representation

사전 학습된 모델을 사용하는 방법에 대해서 자세히 다루겠습니다.

2.1 Unsuperviesd Feature-Based Approaches

이 방식의 핵심은 라벨링 되지 않은 Text로부터 Word Embedding 파라미터를 사전 학습하는 것입니다.

사전 학습된 Word Embedding들은 현대 NLP 시스템에서 중요한 부분이 됩니다.

Word Embedding Vector를 학습하기 위해서, 기존에는 Left-To-Right 언어 모델(단방향)이 주로 사용되었었습니다.

위의 방식은 단방향으로만 단어를 읽어 얻어낸 Vector를 사용해 다음 출력에 사용하는 방식입니다.

이런 접근법은 Sentence Embedding들에서 주로 볼 수 있습니다.

Sentece Representation에 대해서 학습하기 위해 이전 Sentence를 기반으로 새로운 Sentence를 생성하는 방식입니다.

다른 방식으로 ELMo에 대한 예시가 있습니다.

문맥에 민감한(Context-Sensitive) Feature 들을 Left-To-Right,Right-To-Left 언어 모델로부터 추출합니다. (양방향이라고 하지 않는 이유는 BERT의 양방향 메커니즘과는 다른 방식으로 작동하기 때문입니다.)

위와 같이 문장을 각각 정방향과 역방향으로 읽어 두개의 벡터를 얻어낸 뒤 이 두 벡터를 활용하는 방식을 사용합니다.

이 경우에 정방향 역방향 모두의 정보를 담고 있어 문맥에 대한 정보를 더 활용할 수 있기에 Context-Sensitive라고 합니다.

2.2 Unsupervised Fine-Tuning Approaches

더더욱 최근에는 문맥적인 토큰 Representation들을 생성하는 문장 또는 문서 Encoder 들이 라벨링 되지 않은 Text에 사전 학습 되었고 Supervised된 Downstream task를 위해 Fine-Tuining 되었습니다.

이런 방식의 장점은 학습되기 위해 적은 수의 파라미터만이 필요하다는 점입니다.

2.3 Transfer Learning from Supervised Data

Transfer Learning에 관한 연구에 대한 것은 Computer vision 연구에서 이미 증명되었습니다.

이런 Transfer Learning은 ImageNet 데이터와 함꼐 사전 학습된 모델을 Fine Tuning하는 것을 더 효과적으로 할 수 있게 해준다는 결과가 있습니다.


3 BERT

BERT는 다음의 두 단계를 사용하였습니다.

  1. 사전학습 하는 동안 모델은 라벨링 되지 않은 데이터를 통해 학습되었습니다.

  2. Fine Tuning 할 때는 BERT는 사전 학습된 파라미터로 초기화 되고 모든 파라미터들은 Downstream task들로부터 라벨링 된 데이터를 통해 Fine Tuning 합니다.

Fine Tuning을 할 때에 사용하는 사전 학습된 파라미터는 동일할 수는 있어도 Downstream Task마다 다르게 해주어야 합니다.

BERT의 두드러진 특징은 다른 여러 Task들에 대해서 통합된 구조를 사용한다는 점입니다.

이 말은 사전 학습된 모델 구조와 여러 Task에 사용하는 모델의 구조에서 거의 차이가 없다는 것입니다.

이에 대한 설명은 Fig1을 예시로 설명하겠습니다.

Model Architecture

BERT의 모델 구조는 Multi-Layer Bidirectional Transformer Encoder 구조입니다.

이때 모델은 Transformer 논문에 설명된 구조를 베이스로 합니다.

여기서는 Transformer의 레이어 수를 L(N)L(N)이라고 하고 , 은닉 벡터의 크기를 H(dmodel)H(d_{model})라고 하며 , Self-Attention head의 수를 A(h)A(h)라고 합니다.

BERT는 두가지 버전의 모델이 있습니다.

  1. BERTBASE(L=12,H=768,A=12)BERT_{BASE} (L=12,H=768,A=12) : 파라미터의 수는 110M입니다.

  2. BERTLARGE(L=12,H=768,A=12)BERT_{LARGE} (L=12,H=768,A=12) : 파라미터의 수는 340M입니다.

1번 모델은 Open AI의 GPT와의 비교 목적을 위한 모델입니다.

다른 점은 GPT는 단방향이고 BERT는 양방향이라는 점입니다.

Input/Output Representations

BERT를 다양한 Downstream Task들에서 다룰 수 있도록 하기 위해, 입력 Representation은 Single Sentence와 Sentence 쌍을 하나의 토큰 Sequence로 하며 명확하게 표현합니다.

위의 방법을 "Sentence"는 언어 문장을 의미하는 것보다는 Span of contiguous Text가 될 수 있습니다.(BERT의 입력에서는 Single Sentence이거나 Sentence 쌍을 하나로 묶은 것입니다.)

이를 설명하기 위해 BERT만의 독특한 토큰 에 대해서 설명하면 다음과 같습니다.

  1. [CLS] : 이 토큰은 항상 각 Sequence의 시작부분에 나오는 토큰으로 , 이 위치에 대응되는 토큰의 은닉 상태는 Classification Task를 위한 Sequence Representation의 집합입니다.

    CLS 토큰은 처음 입력으로 할 때에는 아무런 정보를 담고있지 않는 토큰입니다. 하지만 BERT 모델에 들어가면서 다른 단어들과 정보를 교환하게 되면서 최종 출력에서는 모든 토큰에 대한 정보를 담고있고 이 토큰을 문맥 벡터라고 보셔도 됩니다.

  2. [SEP] : 위에서 말한 Sentence Pair를 구분하기 위한 토큰이기도 하가 Sentence Pair란 질문,답변과 같이 이어지는 두 문장을 말합니다.

  3. [MASK] : 이후에 자세히 설명하겠지만 Sentence 내의 일부 토큰을 마스킹하는 토큰입니다.

이제 이러한 Input Representation을 구현하는 과정은 다음과 같습니다.(Sentence pair를 기준으로 얘기하겠습니다.)

주어진 두 문장을 토큰으로 변환하여 위 사진의 Input처럼 변환합니다.

이후 토큰 Embedding을 한 후 Segment Embedding을 합니다.

이때 Segment Embedding이란 해당 토큰이 어떤 문장에 포함되는지에 대한 정보를 포함합니다. My dog is cute[A],He likes playing[B]

최종적으로 위치에 대한 정보를 포함하기 위해 Position Embedding을 해주어 BERT의 Input Embedding으로 변환해줍니다.

3.1 Pre-Training BERT

BERT는 기존의 모델들과는 다르게 두가지 방식으로 사전 학습을 진행했습니다.

Masked Language Model (MLM)

앞에서 말했던 Bidirection 구조에서 토큰 단위의 Representation 학습을 위해서 Token들 중 일부(15%)를 랜덤으로 마스킹 했습니다.

이를 간단히 그림으로 표현하면 다음과 같습니다.

BERT의 입력으로 "나는 BERT를 공부하는 사람입니다." 이들 중 일부를 랜덤으로 마스킹 해서 BERT에 입력으로 넣습니다.

이때 입력의 각 토큰에 해당하는 벡터들이 출력으로 나오게 됩니다.

이들 중 마스킹 된 토큰에 해당하는 실제 토큰의 벡터를 가져와 SOFTMAX함수에 입력해 이 마스킹 된 토큰이 무엇인지 알아내도록 학습시킵니다.

이 과정에서 마스킹 된 BERT라는 부분은 양방향이라는 특성 때문에 문장 전체에 대한 정보를 포함하고 있기 때문에 문맥 정보를 더욱 더 풍부하게 담고 있습니다.

그러나 이렇게 사전 학습된 모델을 Fine Tuning할 때 실제 [MASK]라는 토큰은 존재 하지 않기 때문에 Fine-Tuning에서 적합하지 않을 수 있게 됩니다.

이를 해결하기 위해 15%의 토큰들 중 바뀔 토큰을 다음과 같이 정했습니다.(my dog is hairy라는 문장을 예로 듦)

  • 80%는 [MASK] 토큰으로 변경합니다, my dog is [MASK]

  • 10%는 다른 토큰으로 변경합니다, my dog is apple

  • 10%는 그대로 입력합니다, my dog is hairy

이때 다른 토큰으로 변경하는 경우가 실질적으로 1.5%(선택된 15%중 10%)이기 때문에 실질적으로 단어의 판단에는 크게 문제가 되지 않는다고 합니다.

Next Sentence Prediction (NSP)

질문-답변(QA),자언어 추론(NLI)등과 같은 Downstream task들에서 중요한 점은 두 문장사이의 관계에 대한 이해입니다

가령 "너 밥 먹었어?"라고 물어본다면 "밥 먹었어.","이따 먹으려고" 라는 답변이 나올 것이라는 것은 쉽게 알 수 있는 사실입니다.

이는 우리 뇌에서 질문과 가장 관련이 있는 답변을 선택한 것입니다.

그래서 AI 모델을 사전학습 시킬 때 단어와의 관계를 이해할 수 있도록 학습 하는 것은 추후 특정 태스크에 맞게 모델을 Fine-Tuning하기 쉬워질 수 있습니다.

그래서 본 논문에서는 NSP라는 방법을 사용합니다.

두개의 문장을 BERT에게 주는데 50%의 확률로 두 문장을 연관된 문장과 그렇지 않은 문장을 줍니다.

"밥 먹었어?" 라는 질문이 있으면 50%의 확률로 "밥 먹었어","아직 안먹었어" 등의 문장이 오고 50%의 확률로 "공부는 너무 어려워","여행 가자" 등의 문장이 온다. 이경우 전자에 나온 문장들은 IsNext라고 라벨링 되어있고 ,후자에 나온 문장들은 NotNext라고 라벨링 되어있습니다.

Fig1에서 좌측에 보여진 C는 NSP를 위해 사용됩니다.

3.2 Fine-Tuning BERT

사전 학습된 모델을 이제 목적에 맞게 재구성하여 기존의 파라미터를 사용하며 데이터에 맞게 다시 학습시킵니다.

각 출력은 다음과 같이 사용될 수 있습니다.

각 토큰에 대한 Representation들은 Sequence tagging 또는 질문-답변과 같은 토큰 수준의 작업들에 사용될 수 있습니다.

[CLS] 토큰은 Tailment 또는 sentiment analysis와 같은 곳에 사용될 수 있습니다.

4. Unidirectional and Bidirectional

아래의 사진은 BERT,GPT,ELMo 의 사전학습 모델구조 입니다.

BERT의 경우 일반 Transformer의 Encoder 구조와 동일하며 각 토큰의 위치에 상관없이 모든 토큰들과의 관계를 파악합니다.

GPT의 경우 일반 Transformer의 Decoder 구조와 기능적으로 비슷하며 각 토큰은 이전의 토큰과의 관계만을 파악할 수 있습니다.

ELMo 같은 경우는 양방향의 정보를 담고 있으나 BERT는 Self Attention을 통해 모든 토큰들과의 관계를 파악하지만, ELMo는 LSTM의 특성 활용해 정방향,역방향으로 얻어들인 정보를 사용하여 토큰들과의 관계를 파악합니다.

이 세 모델의 차이는 BERT와 GPT는 Fine-Tuning 접근법이고

ELMo는 Feature-Based 접근법이라고 합니다.


profile
👋 인공지능을 통해 다음 세대가 더 나은 삶을 살도록

0개의 댓글