[이번주의 논문한편] BERT: Pre-traning of Deep Bidirectional Transformers for Language Understanding
🚀 본 논문은 아래의 링크에서 볼 수 있다 🚀
[1810.04805] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
We introduce a new language representation model called BERT, which stands for Bidirectional Encoder Representations from Transformers. Unlike recent language representation models, BERT is designed to pre-train deep bidirectional representations from unla
arxiv.org
논문 목차
1. Introduction
2. Related Work
2-1. Unsupervised Feature-based Approaches
2-2. Unsupervised Fine-tuning Approaches
2-3. Transfer Learning from Supervised Data
3. BERT 🔥
3-1. Pre-training BERT
# Task 1. Masked LM
# Task 2. Next Sentence Prediction (NSP)
3-2. Fine-tuning BERT
4. Experiments
4-1. GLUE
4-2. SQuAD v1.1
4-3. SQuAD v2.0
4-4. SWAG
5. Ablation Studies
5-1. Effect of Pre-training Tasks
5-2. Effect of Model Size
5-3. Feature-based Approach with BERT
6. Conclusion
📌 Introduction _ 서론
언어모델의 사전학습(Language model Pre-training)은 수많은 자연어 처리 과제에서 효과적인 향상을 보여줬다.
사전학습모델은 입력된 문장들을 전체적으로 분석하면서 문장들 간의 관계를 예측하는 것을 목표로하는 자연어 추론(NLI), 번역(paraphrasing)과 같은 문장 수준의 과제를 포함하는 것뿐만 아니라 토큰 인식(NER), 질문응답(QA)과 같은 토큰 수준의 과제들처럼 모델이 토큰 수준에서 세분화된 출력을 생성해야하는 경우까지를 포함한다.
Language model pre-training has been shown to be effective for improving many natural language processing taskes. These include sentence-level tasks such as natural language inference and paraphrasing, which aim to predict the relationships between sentences by analyzing them holistically, as well as token-level tasks such as named entity recognition and question answering, where models are required to produce fine-grained output at the token level.
NLP분야에서 , 사전학습된 모델이 실제로 수행해야하는 구체적인 응용과제(down-stream tasks)는 Feature-based 와 Fine-tuning 이 있다.
먼저, Feature-based은 사전훈련된 표현을 추가기능으로 포함해서 작업별 아키텍처를 만드는 'ELMO' 모델과 같은 접근법을 말한다.
ELMO(Embeddings from Language Models)란, 2018년에 발표된 사전학습 모델로, 단어의 의미를 문맥에 따라 동적으로 표현할 수 있게 한 문맥기반 단어 임베딩(Contextual Word Embedding)이다.
이전에 발표된 Word2Vec, Glove와 같은 고정된 임베딩 모델들과 달리, ELMO는 같은 단어라도 문맥에 따라서 다른 벡터를 생성한다.
쉽게 예를 들면, 다음과 같다.
전통적인 방식 : 단어 → word2vec 임베딩 → LSTM → 감상분류 작업 실행
ELMO를 사용한 방식 : 단어 → (기존 임베딩 + ELMO 임베딩) → LSTM -> 감상분류 작업 실행
다음으로 Fine-tuning은 해석 그대로 미세조정이다. OPEN AI가 발표한 GPT모델처럼, 작업할 때 최소한의 파라미터를 사용하고, 사전훈련된 모든 파라미터를 미세조정(simply fine-tuning)하여 수행해야 되는 과제에 대해서 훈련한다.
위에서 설명한 두가지 과제(task)는 사전 학습을 하는 동안 동일한 목적함수(objective function)을 공유하고,
단방향(unidirectional) 언어 모델을 사용하여 언어표현을 학습한다.
The two approaches share the same objective function during pre-training, where they use unidirectional language models to learn general language representations.
최근의 기술들은 특히나 Fine-tuning 작업에서, 사전학습의 힘을 제한한다고 주장한다.
주요한 이유는 기존의 언어 모델들이 단방향적이고, 사전학습을 하는 동안에 사용되어지는 architecture의 선택이 제한된다.
예를들어, OPENAI GPT모델의 경우 left-right architecture(LTR)를 사용하여 각 토큰이 Transformer의 self-attention층안에서 왼쪽에 있는 이전 토큰들(previous token)만 참조할 수 있도록 되어져 있다.
이는 BERT가 지적한 모델의 단방향적인 문제에 대해서 GPT 모델의 자연어 처리 과정에 대해서 언급한 내용이다.
GPT모델은 Transformer architecture의 decoder만을 사용하여 자연어 처리를 하는 모델인데, decoder 구조상 masked multi-head attention의 기능으로 인해 문장의 왼쪽에서 오른쪽으로 한글자씩 생성해가면서 자기보다 앞에 있는 단어들만 참고할 수 있다. 이를 left-to-right 구조라고 한다.
이러한 제한(단방향)은 문장수준의 task를 수행할 때 최적이 아닐뿐더러, qustion answering과 같은 토큰 수준의 task를 진행하는 fine-tuning기반 접근에서도 매우 해롭다.
따라서, 모든 방향에서 맥락을 통합하는 과정이 필수적이다.
본 논문에서, 우리는 Bidiretional Encoder Representations(BERT)를 제시함으로써 fine-tuning 기반의 접근 성능을 향상시켰다. BERT는 Cloze task에서 영감을 받은 masked language model(MLM) 사전학습목표를 사용함으로써 이전의 단방향 제약사항을 완화시켰다.
BERT alleviates the previously mentioned unidirectionality constraint by using a 'masked language model'(MLM) pre-training objective, in spired by the Cloze task.
Masked language model은 랜덤으로 입력되어지는 몇몇의 token들을 가린다. 그리고 가려진 단어의 원래 어휘 ID를 맥락에만 기반하여 예측하는 것을 목표로 한다.
GPT 모델에서 사용하는 left-to-right language 모델과는 달리, MLM의 이러한 목표는 문맥의 왼쪽과 오른쪽 표현을 융합하게 해준다. 이는 우리가 모델을 사전학습할 때, 단어간의 양방향 문맥을 더 깊게 이해할 수 있게 해준다.
그러면, left-right language model과 masked language model의 사전학습 방식의 차이점이 정확히 뭘까 ?
Left-to-Right language model (텍스트 생성 목적)
→ 왼쪽에서 오른쪽 방향으로 순차적으로 움직이면서 문장을 하나씩 생성하고, 다음 단어를 예측
- The cat sat on the ____ 일때, "The","cat","sat","on","the"까지만 보고 다음단어를 예측
Masked Language model (텍스트 이해 목적)
→ 전체문장을 한번에 다 보고, 그 중의 일부 단어만 가리고 왼쪽과 오른쪽 단어 모두를 활용해서 예측
- The cat sat on the mat 일때, The cat sat on [MASK] mat으로 만들고 [MASK]자리에 the가 오도록 예측
추가적으로 본 논문에서는 NSP(next sentence prediction) task를 사용해서 텍스트 쌍 표현에 대하여 MLM과 공동으로 사전학습을 진행한다.
본 논문의 BERT 모델을 정리하면 다음 3가지와 같다.
1. 자연어 표현에 대해 양방향 사전학습의 중요성을 입증한다. BERT는 masked language model을 사용하여 깊은 양방향 표현들을 사전학습에 가능하게 해주었다. 이는 각각 left-to-right, right-to-left 언어모델을 독립적으로 사전학습시킨 얕은 연쇄를 사용한 것과는 대조적이다.
2. BERT는 최초의 fine-tuning 기반 대표 모델이며 문장 수준과 토큰 수준의 task에서 state-of-the-art 성과를 달성하였다. 이는 작업별 architecture들의 성능을 뛰어넘었다.
3. BERT는 11개의 NLP task에서 최고의 성능을 달성했다.
📌 Related Work _ 관련연구
General language representiations을 사전학습하는 데에 긴 역사가 존재한다. 본 섹션에서는 가장 널리 사용되어지는 접근법에 대해서 잠시 리뷰하고자 한다.
📌 Unsupervised Feature-based Approaches _ 비지도 특성기반 접근법
Feature-based approaches에서는 NLP영역에서 사전학습된 단어들의 임배딩에 대해서 집중한다.
임베딩되어진 단어들을 사전학습할 때에 GPT에서 사용한 것과 같이 왼쪽에서 오른쪽으로 언어 모델링 목표가 사용되거나, 왼쪽과 오른쪽 맥락에서 올바른 단어와 틀린 단어를 구별하는 목표도 사용되어져 왔다. 이는 CBOW(Continuous Bag of Words)에서 사용된 방식인데, 예를 들어 어떤 문장에서 특정단어가 있는 자리에 정답 단어와 랜덤 단어를 넣었을 때 둘 중에 어느것이 문맥에 맞는 단어인지 구별하도록 하는 방식이다.
이러한 접근법들은 문장 임베딩이나 문단 임베딩과 같인 더 거친 수준의 단위(coarser granularities)로 일반화되었다. 여기서 "더 거친 수준의 단위"란, 단어 → 문장 → 문단 수준으로 점점 더 확장되어서 더 긴 단위의 임베딩을 만드는 데까지 일반화 되었다.
These approaches have been generalized to coarser granularities, such as sentence embeddings or paragraph embeddings.
문장 표현을 학습하기 위해서, 이전 연구들은 그 다음 문장의 후보들을 순위를 매기거나 이전 문장의 표현을 바탕으로 다음 문장의 단어를 왼쪽에서 오른쪽으로 생성하거나, auto-encoder 에서 파생된 목표의 노이즈를 제거(denoising auto-encoder) 했다.
여기서 Denosiong auto-encoder에 대해서 잠시 설명하도록 하겠다.
먼저, auto-encoder란, 입력된 데이터를 잠재공간(latent space)으로 압축해두었다가 다시 복원하는 신경망이다. 이름처럼 encoder로 압축된 벡터를 인코딩하고, decoder로 인코딩된 벡터를 원본 입력과 비슷하게 복원하는 역할이 존재한다. auto-encoder를 사용해서 입력된 값과 auto-encoder로 복원된 값의 차이를 줄여주는 것이 목표이다.
그럼 왜 굳이 복원을해서 차이를 줄여주는걸까? 라는 의문이 생길 수 있다.
이 과정을 통해 입력의 중요한 정보만을 담고 있는 압축 표현(잠재공간에 있는 벡터)를 학습하는 것이다. 만약, 복원된 값과 원본 값의 차이가 작으면 원본의 값이 중요한 정보만을 담고 있다고 생각하면 된다.
아래의 그림을 통해서 조금 더 쉽게 이해할 수 있을 것이다.
따라서, Denoising auto-encoder는 노이즈가 섞인 입력 데이터를 원래의 깨끗한 데이터로 복원하도록 학습하는 auto-encoder의 한 변형이다. 일반 auto-encoder에 강제로 denoising을 시켜서 입력의 중요한 구조나 패턴을 학습하도록 유도한다.
즉, 입력의 핵심적인 특징만 유지하는 압축 표현을 학습하면서 중요한 feature만 학습할수 있도록 도와주는 학습방식이다.
그런데 ELMO와 그 전의 모델들은 이러한 전통적인 단어 임베딩 방식을 다른 차원으로 해결하였다. 그들은 left-to-right, right- to-left 언어 모델에서부터 문맥적 민감한(context-sensitive) 특성을 발췌했다.
문맥적 민감한 특성은 문맥에 따라 달라지는 단어 표현을 의미한다. 일반적인 단어 임베딩(Word2Vec, GloVe) 같은 경우에는 문맥에 상관없이 각 단어마다 고정된 벡터(context-independent embedding)를 사용하는데, context-sensitive featured은 각 문맥에 따라서 단어의 벡터 표현을 다르게 하는 것이다.
context-sensitive feature을 학습하는 과정은 다음과 같다. 왼쪽 문맥으로 부터 forward LSTM을 사용하고 오른쪽 문맥으로 부터 backward LSTM을 사용해서 정보를 얻은 뒤, 둘을 결합하여 벡터를 생성한다
ELMO 모델은 context-sensitive feature 기법을 사용해서 question answering, sentiment analysis, named entity recognition을 포함하는 NLP 벤치마크 과제에서 최고의 성능을 달성했다.
Melamud et al(2016) 연구에서는 LSTM 모델을 사용해서 왼쪽과 오른쪽 문맥으로부터 단일 단어를 예측해서 문맥적 표현을 학습하는 방식을 제안했다. ELMO 모델과 비슷하지만, 그들의 모델은 특성기반인 반면에 깊은 양방향적 방식은 아니었다.
📌 Unsupervised Fine-tuning Approaches _ 비지도 미세조정
처음에 feature-based 방식과 마찬가지로 단어 임베딩 파라미터를 정답이 없는(unlabeled) 텍스트를 이용해서 사전학습했다. (Collobert and Weston, 2008)
최근에는 문맥적 토큰 표현들을 만들어내는 문장이나 문서 인코더들은 정답이 없는(unlabeled) 텍스트로부터 사전학습하고, supervised task(정답(label)이 있는 데이터를 사용해서 수행하는 특정 목적의 실제 과제(task))에 미세조정(fine-tuning)을 진행한다. 이 접근법의 장점은 몇 가지 매개변수는 처음부터 학습해야 할 필요가 없다는 것이다. 이러한 장점 때문에 GPT 모델은 이전에 GLUE 벤치마크 데이터 셋에서 많은 문장 수준 과제에 최고의 결과를 성취했다.
📌 Transfer Learning from Supervised Data _ 지도 학습 데이터로부터의 전이 학습
자연어 추론(natural language inference), 기계번역(machine translation)과 같은 큰 데이터 셋에서 supervised task로 부터 효과적인 전이를 보여준 연구들도 있다.
이를 이해하기 위서는 전이학습(transfer learning)에 대해서 알아야 한다.
전이학습이란, Task A에서 학습한 지식을 Task B에 적용해서 성능을 향상시키는 학습 방법을 말한다. pretraining과 fine-tuning으로 구성되어지며 원래 데이터로 일반적인 특성을 학습한 다음에 목표하고자 한 작업에 맞게 추가적으로 학습하는 과정을 거친다.
예를 들어, 대규모 말뭉치로 언어모델을 사전학습한 다음에 이 사전학습된 모델을 기반으로 감성분석이나 문장분류, 질의응답 등의 실제 과제에 적용하는 것이다.
결국, 자연어처리에서 전이학습은 정답이 없는(unlabeled) 텍스트를 통해 사전학습하고, supervised task로 미세조정이 이루어지는데, 이미 supervised task에서부터 다른 task로 효과적인 전이가 가능하다는 연구가 있다고 설명한다.
컴퓨터비전(Computer Vision)연구에서도 또한 큰 사전학습된 모델들로터의 전이학습의 중요성을 입증했다. 이에 대한 방법으로 ImageNet 모델을 통해 사전학습된 모델들을 미세조정하는 것이 효과적이라고 설명했다.
📌 BERT
이번 섹션에서는 BERT의 상세한 구현에 대해 소개한다.
BERT의 framework에는 두가지의 단계가 있다. 바로 pre-training과 fine-tuning이다.
먼저, pre-training을 하는 동안에 BERT는 다른 사전학습 과제들을 통해 정답이 없는(unlabeled) 데이터에 대해서 훈련되어진다.
fine-tuning을 하는 과정에서 BERT는 사전학습된 파라미터들로 초기화 되고, 모든 파라미터들은 과제에 있는 정답이 있는 데이터셋을 사용해서 미세조정된다.
각각의 과제들은 그들이 사전학습된 파라미터들이 같더라도, 미세조정 모델들은 구분되어져 있다.
Each downstream task has seperate fine-tuned models, even though they are initialized with the same pre-trained parameters.
이 말은 모든 과제가 같은 사전학습모델(BERT)을 사용하더라도 각각의 과제(감성분석, 질의응답 등)에 따라 파라미터가 달라지게 되며, 결국 서로 다른 모델이 되어진다는 의미이다.
위의 그림은 question answering task에 관하여 BERT 모델의 실행 예제를 보여준다. BERT의 독특한 특징은 다양한 작업들에 걸쳐 통합된 아키텍처를 제공한다는 것이다. '통합된 아키텍처'라는 말이 실제로는 '하나의 일관된 기본구조'를 공유한다는 의미이다.
그림에서 보이듯 BERT는 크게 pre-training과 fine-tuning 두 부분으로 나뉘는데,
pre-training에서 사용되는 파라미터는 작업에 상관없이 공통적으로 사용되어지고, fine-tuning에서는 모든 파라미터들이 작업별로 조금씩 다르게 미세조정된다.
여기서 스페셜토큰이라는 것이 있는데, [CLS]는 문장의 처음에 추가되어지고, [SEP]는 문장들을 구분해주는 기호로 사용되어진다. ( ex) question [sep] answers )
Model Architecture
BERT는 Transformer의 원본 논문에서 구현된 것과 tensor2tensor library에서 보여준 것을 기반으로 multi-layer bidirectional(양방향) Transformer encoder의 구조이다. Transformer가 흔하게 사용되고, 우리의 구현이 원래의 것과 거의 동일하기 때문에, 본 논문에서는 모델의 구조에 대한 광범위한 배경설명은 생략하고 독자들에게 transformer의 원본 논문과 'The Annotated Transformer'와 같은 훌륭한 가이드를 말하고자 한다.
여기서 The Annotated Transformer란, 논문 'Attention is all you need'의 Transformer 모델을 한줄 한줄 코드로 구현하고 설명한 오픈소스 튜토리얼이다.
본 논문에서 저자는 다음과 같이 표시했다.
L : number of layers / H : hidden size / A : number of self-attention heads
또, 본 논문에서 결과로 제시한 두가지 모델에 대한 각각의 L,H,A는 다음과 같다.
BERTbase → L = 12 / H = 768 / A = 12 / Total Parameters = 110M
BERTlarge → L = 24 / H = 1024 / A = 24 / Total Parameters = 340M
BERTbase 모델은 비교목적으로 GPT모델과 동일한 사이즈로 평가를 진행하였다.
하지만, 중요한 것은 BERT Transformer는 양방향 self-attention을 사용했지만, GPT Transformer는 모든 토큰이 오직 왼쪽에 있는 문맥만 참고할 수 있도록 제약된 self-attention을 사용했다.
Input/Output Representations
BERT 모델을 다양한 작업에 처리하기 위해서, input 방식이 단일 문장과 한쌍으로 되어진 문장(ex) question, answer) 모두 명확하게 구분되어져야 한다. 이 과정을 통해서 BERT의 입장에서 '문장(sentence)'은 우리가 생각하는 문법적인 문장이 아니라, 단순히 토큰의 연속된 구간(text span)이 되어야 한다.
Throughout this work, a 'sentence' can be an arbitrary span of contiguous text, rather than an actual linguistic sentence.
본 논문에서는 WordPiece 임베딩을 30,000 토큰 단어들로 진행했고, 모든 문장의 시작토큰은 스페셜 토큰 [CLS]를 사용했다. 최종적으로 [CLS] 토큰의 상태는 분류 작업을 위한 집계 시퀀스 표현으로 사용되어졌다.
question answer과 같은 문장쌍은 하나의 시퀀스로 묶여져 있는데, 이 두 문장을 두가지의 방법으로 차별화를 시켰다. 첫째, [SEP] 스페셜 토큰을 사용해서 구분해주었다. 둘째, 각 토큰에 문장 A에 속하는지 문장 B에 속하는지 나타내는 학습된 임베딩을 추가해주었다. 이는 문장쌍 입력을 처리할 때, 문장별로 어디에 속하는지 학습된 임베딩(segment embedding)을 사용한다는 의미인데, 밑의 예시를 통해 설명해보도록 하겠다.
다음과 같은 두 문장을 처리한다고 생각해보자.
문장 A: What is your name?
문장 B: My name is John.
그럼 두 문장을 BERT에 넣을 때에는 이렇게 구성하게 된다.
[CLS] What is your name? [SEP] My name is John. [SEP]
하지만, 이렇게 묶어버리면 BERT 입장에서는 모든 토큰이 같은 문장에 속한다고 생각할 수 있다.
각 토큰이 질문에 속한건지, 답변에 속한건지 알 수 있게끔 토큰에 대해 segment embedding을 추가로 더해준다. 따라서, segment embedding을 추가해주면 다음과 같이 된다.
토큰 | [CLS] | what | is | your | name | ? | [SEP] | my | name | is | John | . | [SEP] |
Segment ID | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
결과적으로 BERT 내부에서는 이 0과 1에 해당하는 Segment ID(예: 768차원) 를 각 토큰 임베딩에 더해서 입력으로 사용한다.
BERT 구조에서 output 표현은 다음과 같다.
E : Input embedding
C : final hidden vector of the special [CLS] token
Ti : final hidden vector for the i input token
주어진 토큰에 대한 입력 표현(input)은 해당 토큰(token), 세그먼트(segment), 위치 임베딩(position embedding)을 합산하여 구성된다.
📌 Pre-training BERT
사전학습하는 과정에서 BERT 모델은 Masked LM과 Next Sentence Prediction 과정을 거쳤다. 이번 섹션에서는 두가지의 과정에 대해서 설명한다.
📌 # Task 1. Masked LM(MLM)
BERT와 같은 깊은 양방향(deep bidirectional) 모델은 left-to-right 모델과 left-to-right와 right-to-left의 얕은 연결보다 훨씬 더 강력하다고 믿는다. 기존의 언어모델은 left-to-right 또는 right-to-left로 학습하는 것밖에 안되는데, 양방향 모델은 각각의 단어를 간접적으로 자기가 볼 수 있다. 또한, 다층적인 맥락에서 대상 단어를 간단하게 예측할 수 있다.
이러한 양방향적 방식으로 깊게 학습시키기 위해서 input 토큰들 중의 몇퍼센트를 랜덤적으로 가리고(mask), 그 가려진(masked) 단어들을 예측해야한다.
본 논문에서는 이러한 과정을 MLM(Masked LM)이라고 소개한다.
마스크 되어진 토큰들 중에 최종 hidden vector는 일반적인 언어모델에서처럼 softmax을 통한 뒤 출력한다. 본 논문의 실험에서 WordPiece 임베딩 토큰들 중 15%를 마스크하였다. 또한, denoising auto-encoder와 달리 전체 입력값을 재구성하지 않고, 마스크된 단어만 예측하도록 한다.
MLM을 양방향으로 사용하면서 모델을 사전학습할 수 있지만, 단점도 분명히 존재한다.
미세조정(fine-tuning)을 하는 동안에 mask된 토큰들이 보이지 않기 때문에 fine-tuning과 pre-training 사이에 불일치가 발생할 수 있다. 불일치의 의미는 모델이 사전학습 중에 학습했던 방식과 실제로 사용되는 fine-tuning에서의 학습방식이 다를수도 있다는 의미이다.
사전학습 중에는 문장의 일부분이 mask되어져 있는데, fine-tuning 과정에서는 문장이 완전하기 때문이다. 이러한 불일치를 pretrain-finetune mismatch라고 일컫는다.
이러한 문제를 해결하기 위해서 저자는 모든 마스킹 단어들에 대해서 항상 [mask]로 바꾸지 않는다. 왜냐하면, 모델이 [mask]라는 특수한 토큰에 너무 의존하는 문제를 방지하기 위해서 다양한 방법들을 사용하는 것이다.
먼저, 입력문장의 모든 토큰 중 15%만 무작위로 예측대상을 고른 뒤,
(1) 그 중 80%는 보통의 마스킹 방법인 [mask]로 바꾸고, (2) 10%는 다른 단어로 바꾸고, 나머지 (3) 10%는 원래 단어를 그대로 두어서 다양한 상황에서 마스킹 단어를 예측할 수있도록 학습하는 것이다. 예측결과를 계산할 때에는 cross entropy loss를 사용했다.
📌 # Task 2. Next Sentence Prediction(NSP)
downstream task에서는 (ex) Q&A, NLI) 언어 모델에 의해 포착되지 않은 두가지 문장 사이의 관계를 이해하는 것이 중요한 기반이 된다.
이를 위해서 본 논문은 다음 문장 예측 (NSP)라는 이진 분류 과제를 사전학습에 사용하며, 이 과제에 필요한 학습데이터는 하나의 언어로만 구성된 말뭉치로 쉽게 만들 수 있다.
구체적으로 설명하자면, 문장 A와 B가 있으면, A 문장 뒤에 B가 이어지는 문장이면 ISNEXT, 이어지지 않은 문장이면 NOTNEXT로 라벨링하는 것이다.
Pre-training data
본 연구에서 사전학습 말뭉치는 BooksCorpus(800M words)와 English Wikipedia(2,500 words)를 사용했다. Wikipedia 말뭉치 같은 경우에는 text passages(list, tabels, headers는 무시)에 대한 것만 발췌해서 사용했는데, 이는 문장 단위 말뭉치가 섞여있는 것보다 긴 연속적인 문장들이 있는 문서 단위 말뭉치가 더 중요하기 때문이다.
📌 Fine-tuning BERT
Fine-tuning은 Transformer의 self-attention 매커니즘을 사용하되 BERT가 input과 output만 적절히 바꿔서 작업을 진행하였다. input으로 text-pairs(텍스트 쌍)은 양방향 cross attention을 적용하기 전에 두 문장을 독립적으로 encode 하는 것이 일반적인 패턴이다.
그러나 BERT는 self-attention 매커니즘을 사용해서 이러한 일반적인 패턴을 통합시켰다. 두 개의 텍스트 쌍을 연결해서 하나의 입력으로 넣은 후 self-attention을 통해 두 문장의 관계를 한번만에 볼 수 있도록 처리했다.
또, 각 작업에 대해서 입력과 출력을 BERT에 간단히 연결하고 모든 파라미터를 처음부터 끝까지 fine-tuning 했다.
input의 경우 Paraphrasing(문장 유사도 판별) / Entailment(문장 함의 판단, 논리관계) / Qustion-Answering / Degenerate text–∅ pair (단일 문장입력) 이 네가지의 작업에 대해 두 문장을 함께 연결하여 입력하였다.
output의 경우 문장 태깅이나 질의응답과 같은 토큰 단위의 작업을 위해 token representations을, 문장함의나 감성분석과 같은 분류 작업을 위해 [CLS] representation을 output layer에 보낸다.
분류 테스크에서 [CLS]를 출력으로 사용하는 이유는, [CLS] 토큰이 모든 문장마다 맨 앞에 위치하면서 문장 전체의 의미를 대표하는 요약 벡터로 발전하기 때문이다.
즉, 어떤 종류의 task인지에 따라 출력을 다르게 활용한다는 것이다.
📌 Experiments
이 섹션에서는 11개의 NLP task에서 BERT의 fine-tuning의 결과를 보여준다.
📌 GLUE
GLUE, General Language Understanding Evaluation 밴치마크는 다양한 자연어 처리 과제의 모음이다. 여기서 벤치마크라는 것은 모델의 성능을 측정하고 비교할 수 있는 표준 테스트 셋과 평가 시스템을 말한다.
GLUE 벤치마크는 총 9개의 task로 구성되어져 있다.
GLUE에서의 fine-tuning은 위에서 설명한대로 단일 문장이나 문장쌍을 하나의 입력값으로 설정하고, 첫번째 입력 토큰 [CLS] 토큰을 전체 문장의 대표 벡터로 사용했다. 그 후 아래의 선형 분류기를 사용하여 분류 레이블을 설정해준다. 결국 입력된 문장들을 이해하는 것이 끝이 아니라 '정답 레이블'로 바꾸는 역할을 맡는다.
K = 클래스 수 / H = BERT 히든 사이즈 (ex) 512차원)
다음 분류를 위해 로짓 계산을 다음 공식으로 처리한다. 즉, 예측 확률값을 뽑아준다. 여기서 손실함수는 cross-entropy loss를 사용한다.
본 논문에서 batch size = 32, epoch = 3를 사용했다. 각 작업에 대해서는 5e-5, 4e-5, 3e-5, and 2e-5 중에서 learning rate를 선정하였다. 추가적으로 BERT large 모델에 대해서 작은 데이터를 사용하면 fine-tuning이 불안정할 수 있다는 것을 발견하여 여러 차례 실행하여 가장 우수한 모델을 선정하였다. 여러차례 실행할때에는 사전학습된 동일한 checkpoint를 사용했지만, 데이터셋의 셔플링과 분류기 계층 초기화는 서로 다르게 실행했다.
위 표는 GLUE 벤치마크에 존재하는 데이터셋에 대한 여러가지 모델들에 대한 결과이다. BERT base 모델과 BERT large 모델 모두 모든 작업에서 최고의 성능을 달성했으며, 기존의 성능 대비 각각 평균 4.5% , 7.0%의 정확도 향상을 보여줬다.
가장 규모가 크고 널리 알려진 MNLI 데이터 셋의 작업 경우, BERT의 정확도가 4.6% 향상되었다. 공식 GLUE 리더보드에서 BERT large 모델은 80.5점을 받았으며, OpenAI GPT의 경우 72.8점을 받으며 능가하는 것을 보여줬다. BERT large 모델은 특히 학습 데이터가 매우 작은 작업에서 BERT base보다 훨씬 우수한 성능을 보여줬다.
📌 SQuAD v1.1
SQuAD, Stanford Question Answering Dataset은 100k 군집의 question/answer 쌍의 모음이다. 이 작업의 경우 질문과 답이 주어졌을 때, 답의 텍스트 길이를 예측하는 것이다.
자 이 그림을 보면서 설명해보겠다.
여기 fine-tuning의 입력값을 보면 Question(질문)이랑 Paragraph(지문)이 있다. 즉, answer이 아니라 질문이랑 지문을 하나의 입력 시퀀스로 묶어서 BERT에 넣는다. 그 후 input에서 보여준대로 Token embedding + Position embedding + Segment embedding(질문이랑 지문 따로) 이렇게 진행해서 최종 입력값을 만든다.
그 후 시작 위치용 벡터 S, 종료 위치용 벡터 E를 추가해서 answer가 시작하는 위치와 끝나는 위치를 예측한다.
입력된 각 토큰에 대해 히든벡터 T를 출력한다. 여기서 T와 S의 dot product 계산을 통해 이 토큰이 답의 시작일 가능성 점수를 도출해낸다. 그러한 점수들을 아래의 수식으로 softmax로 변환해서 확률로 만들어준다.
그러면 어떠한 토큰이 답의 끝일 가능성 점수는 T와 E 토큰을 통해서 계산하는 것이다.
이러한 과정을 통해 정확한 시작과 끝의 위치의 로그 우도의 합(log-likelihoods)을 구하는 것이다. 본 작업에서는 learning rates = 5e-5, batch size = 32로 설정하였다.
위의 표는 SQuAD의 성능을 측정한 결과인데, 핵심은 BERT가 기존 최고 성능 모델들을 넘어섰다는 것이다.
리더보드 1등 모델들은 코드나 설명이 공개되어져 있지 않아서 정확히 어떤 모델인지 알 수 없다. SQuAD 작업은 학습할 때 외부데이터의 사용이가능하기 때문에 BERT 모델에서도 TriviaQA라는 공개 질의응답 데이터 셋으로 먼저 fine-tuning을 진행한 후, 최종적으로 SQuAD로 fine-tuning 시켜주었다. 이러한 과정을 data augmentation(데이터 증강)이라고 부른다.
결과를 보면 BERT 모델이 ensemble 모델보다 성능이 더 뛰어난 것을 알 수 있다.
📌 SQuAD v2.0
SQuAD v2.0 과제는 앞서 SQuAD v1.1의 문제정의를 확장하여 입력된 문단에 정답이 존재하지 않을 가능성을 허용함으로써 문제를 더욱 현실화시켰다.
따라서, 앞서 계산한 방식과는 조금 차별점을 두었다. "정답이 없는 질문"을 처리하기 위해서 [CLS] 토큰을 '정답없음' 위치로 사용한 것이다. 그러니까 정답의 시작과 끝의 토큰을 모두 [CLS]로 통일시킨 것이다. 위치를 예측하는게 아니라 !
이렇게 되면, S = 시작벡터 / E = 끝 벡터 / C = CLS 위치의 출력 벡터로 3가지의 벡터를 추가한 뒤, 정답없음의 점수는 다음과 같이 계산하였다.
만약, 정답이 있다면 다음과 같이 계산하여 가능한 모든 점수 중 가장 높은 점수를 골랐다. 그 후 "정답 없음" 점수와 "정답 있음" 점수 중 가장 높은 점수를 비교해서 예측하도록 하였다.
비교하는 방법은 아래의 수식처럼 정답없음의 점수에서 임계값을 더했을 때, 정답있음 점수보다 낮을 때에만 정답이있다고 예측했다. 여기서 임계값은 f1점수가 가장 높아지는 값을 선택하기 위해 여러 값으로 실험했다.
fine-tuning을 진행할때, SQuAD v1.1과는 다르게 외부 데이터 셋을 사용하지 않았고, epoch = 2 / learning rate = 5e-5 / batch size = 48로 하여 진행하였다.
위에 표에서 보듯이 BERT large 모델은 단일모델로 최고 모델보다 F1 점수 5.1점을 높이며 최고 점수를 달성했다.
📌 SWAG
SWAG, Situations With Adversarial Generations 데이터셋으로 113k개의 근거 기반 상식 추론을 평가하는 과제이다. 주어진 문장에서 4가지의 선택지 중 가장 타당한 연속문장을 선택하는 것이 목표이다. 4지선다 객관식 문제라고 생각하면 된다.
SWAG 데이터 셋을 fine-tuning 할때, 먼저 input 값으로 4가지의 문장(기존 문장 + 후보문장 1,2,3,4)을 입력한다.
즉, 질문 하나 당 모델을 4번 돌리는 것이다. 각 후보당 예측 점수는 다음과 같이 계산한다.
[CLS] 벡터를 의미하는 C / 추가 학습 가능한 파라미터 벡터 v 로 score을 계산하여 softmax로 확률값을 구한 뒤 가장 큰 값이 예측결과가되는 것이다.
fine-tuning의 단계의 경우, epoch = 3 / learning rate = 2e-5 / batchsize = 16 으로 진행하였다.
결과적으로 BERT large 모델이 ESIM+ELMo 보다는 27.1%, OpenAI GPT 보다는 8.3% 성능향상 시켰다.
📌 Ablation Studies
이번 섹션에서는 BERT의 여러측면에 대해 절제 실험(ablation experiments)을 수행하여 각 측면의 중요성을 이해할 수 있게했다.
📌 Effect of Pre-training Tasks
본 논문에서는 BERTbase 모델과 정확히 동일한 사전학습 데이터, fine-tuning 방식, 하이퍼파라미터를 사용하여 두가지 사전학습 목표를 평가함으로써 BERT의 깊은 양방향성 기능의 중요성을 증명했다.
No NSP : NSP(next sentence prediction) 없이 MLM(masked LM)만을 사용해서 훈련시킴
LTR & No NSP : MLM을 사용하는 대신에 기존의 LTR(left-to-right)를 사용해서 훈련시킴. LTR의 경우 사전학습 때 왼쪽 단어만 보고 예측하는 제약조건이 있는데, 이 때문에 발생하는 pre-train/fine-tune 간의 mismatch를 해결하기 위해 fine-tune에도 이 제약조건을 유지했음. (fine-tune 때 제거해보니까 성능이 더 나빠짐) 추가적으로, NSP도 제거함.(-> 그러면 GPT 모델과 비슷하다고 생각할 수 있는데, 모델을 이용할 때 본 논문의 훈련 데이터셋, input 표현, fine-tune 파라미터 방식을 사용함)
먼저, NSP의 영향에 관한 실험을 진행했다. 위의 표에서 보이듯 기본 BERT base 모델의 성능과 비교했을 때, MILI / QNLI / SQuAD 데이터 셋에서 성능이 떨어지는 것을 볼 수 있다.
다음으로 LTR & No NSP인 경우에 모든 데이터 셋에서 MLM을 사용한 것이 LTR을 사용한 것보다 성능이 좋았다.
LTR의 경우 왼쪽에 있는 토큰들만 보고 예측하는 것이라서 오른쪽에 있는 토큰을 볼 수 없기 때문에 성능이 좋지 않게 나왔는데, 이에 대해서 무작위로 초기화된 BiLSTM을 사용한 성능도 함께 측정하였다.
결과적으로 LTR을 사용한 것보다 성능이 좋게 나오긴했지만, 양방향 모델로 훈련한 BERTbase 성능보다는 좋지 않게 나온것을 볼 수 있다.
이 실험을 통해서 LTR과 RTL 모델, ELMo에서 한 것처럼 두가지의 모델의 얕은 연쇄를 통해서 훈련하는 것이 가능하다는 것을 알게 되었지만,
(a) 하나의 양방향 모델을 사용하는 것보다 2배로 금액이 비싸고,
(b) RTL 모델은 질문에 대한 답변을 조건으로 삼을 수 없기 때문에 QA와 같은 작업에는 직관적이지 않고,
(c) 모든 계층에서 좌우 컨텍스트를 모두 사용할 수 있기 때문에 심층적 양방향 모델보다 성능이 훨씬 떨어진다.
* RTL 모델은 질문에 대한 답변을 조건으로 삼을 수 없다 → 질문을 입력으로 받고 답변을 생성해야하는 QA 작업에서 모델은 질문 전체를 이미 입력으로 사용할 수 있어야 하는데, 오르쪽에 있는 토큰들로 왼쪽을 예측하는 RTL은 왼쪽에 있는 질문을 읽을 수가 없기 때문에 사용할 수가 없다.
📌 Effect of Model Size
본 섹션에서는 fine-tuning 작업 정확도에서 model size의 영향을 탐구해보고자 한다.
이를 위해, layer / hidden units / attention heads의 수를 다르게 하고, 하이퍼파라미터와 학습 절차는 동일하게 사용했다.
결과에서 보이듯이 model size가 증가할수록 정확도도 비례적으로 증가했다.
이는, 이전부터 기계번역과 언어모델링에서 model size가 증가할수록 큰 규모의 작업들에 대해서 연속적인 향상을 이끌것이라고 알려져 있었다. 그러나 본 논문의 이 연구가 모델이 충분히 사전 학습된 경우, 극단적인 모델 크기로 확장하면 매우 작은 규모의 작업에서도 큰 개선이 이루어진다는 것을 설득력 있게 보여준 최초의 연구라고 밝혔다.
우리는 모델이 다운스트림 작업에 직접 미세 조정되고, 매우 적은 수의 무작위로 초기화된 추가 파라미터만 사용할 경우, 다운스트림 작업 데이터가 매우 작더라도 작업별 모델이 더 크고 모델 표현력이 풍부한 사전 학습된 표현으로부터 이점을 얻을 수 있다는 가설을 세웠다.
we hypothesize that when the model is fine-tuned directly on the downstream tasks and uses only a very small number of randomly initialized additional parameters, the task-specific models can benefit from the larger, model expressive pre-trained representations even when downstream task data is very small.
위의 내용은 사전학습과 미세조정에 관한 핵심적인 아이디어를 설명하고 있는 내용인데, 이해하기 쉽게 풀어서 작성해보도록 하겠다.
결국 실제 데이터에 학습하기 전, 사전학습된 모델은 미세조정을 통해 작은 데이터 셋만 있어도 좋은 성능을 낼 수 있다고 가정한 것이다. 이때, 새로 추가하는 작업별 파라미터는 아주 적게만 추가하고, 대부분은 사전학습 된 표현을 그대로 활용한다는 전제이다.
즉, 사전학습된 모델은 작은 데이터셋만 있어도 효과적이며, 새로 학습되는 파라미터가 적어도, 성능은 크게 변하지 않는다.
📌 Feature-based Approach with BERT
위에서 보여진 모든 BERT 결과들은 fine-tuning을 사용한 것이다. 이는 사전학습 모델에 분류층(classification layer)을 추가하였고, 모든 파라미터들은 공동으로 downstream작업에 fine-tune 되었다.
하지만, 사전학습 모델로 부터 고정된 특징이 추출되는 feature-based approach는 몇가지 장점이 있다.
첫째, 모델구조를 유연하게 활용할 수 있다. Feature-based 방식은 BERT의 출력값을 고정된 입력 특성(feature)으로 활용하기 때문에, 기존의 다양한 구조의 모델들과 쉽게 통합할 수 있다.
First, not all tasks can be easily represented by a Transformer encoder architecture, and therefore require a task-specific model architecture to be added.
둘째, 적은 자원으로 사용이 가능하다. 일반적인 fine-tuning 방식의 경우, BERT 전체를 다시 학습시키기 때문에 자원이 많이 소요되는데 반면, feature-based는 BERT는 미리 한 번만 실행하고 출력된 벡터를 저장해두면 되기 때문에 이 후의 학습은 상대적으로 가볍고 빠르게 진행할 수 있다.
Second, there are major computational benefits to pre-compute an expensive representation of the training data once and then run many experiments with cheaper models on top of this representation.
본 논문에서는 Named Entity Recognition(NER) 작업에 대해서 CoNLL-2003 데이터 셋을 사용하고, Sentence Pair Classification 작업은 MRPC 데이터 셋을 사용했다.
NER 작업은 (1) 각 단어의 임베딩을 얻기 위해 BERT의 각 subword 토큰 중 첫 번째 WordPiece의 출력만 사용했다. BERT는 입력문장을 처리할 때 WordPiece 토크나이저를 사용했다. 이는 단어를 더 작은 subword로 나누는 방법이다. 예를 들어,"playing" → ["play", "##ing"] 이 때문에 하나의 단어가 BERT에서 여러개의 subword로 분리되는 문제가 발생하면서 하나의 단어가 어디서부터 어디까지인지를 정해야한다.
이 문제를 논문에서는 하나의 단어가 여러개의 subword로 나뉘더라도, 그 중 첫번째 subword를 BERT의 출력값으로 사용했다.
(2) 또, BERT의 여러 layer 중 최상위 4개의 layer의 출력을 합쳐서 벡터로 만들었다. (3) 마지막으로 이 벡터들을 BiLSTM + CRF 모델에 입력으로 넣어서 NER 작업을 수행했다.
즉, BERT는 텍스트 → contextual embedding 역할만 하고, 실제 NER 태스크는 기존 BiLSTM+CRF가 담당.
MRPC 작업은 문장 쌍이 주어지면, BERT에 넣고 [CLS] 토큰의 출력 벡터를 feature로 사용했다. 이 벡터들을 SVM, logistic regression에 넣어서 두 문장이 의미상 유사한지를 분류했다.
결과적으로 BERT large 모델이 최고의 성능을 보여줬다. feature-based approach의 결과 concat last four hidden layer을 하는 것이 가장 성능이 좋았다.
이는 BERT가 fine-tuning과 feature-based approach 둘 다 효과적이라는 것을 입증했다.
📌 Conclusion
언어 모델을 이용한 전이 학습을 통한 최근의 실증적 개선을 통해 풍부한 비지도 사전 학습이 많은 언어 이해 시스템의 필수적인 부분임을 알 수 있었다. 특히, 이러한 결과는 자원이 부족한 작업에서도 심층 단방향 아키텍처를 사용할 수 있다는 것을 보여줬다.
본 연구의 주요 기여는 이러한 결과를 심층 양방향 아키텍처로 일반화하여 동일한 사전 학습된 모델이 다양한 자연어 처리 작업을 성공적으로 수행할 수 있도록 했다.