본문 바로가기

Study/논문 리뷰

[논문 리뷰] BERT : Pre-training of Deep Bidirectional Transformers for Language Understanding (2019) - (1) Abstract ~ Related Work

거 너무 귀여운거 아니요

오늘 소개할 논문은 자연어에 큰 관심이 있지 않더라도 다들 한번쯤은 들어봤을 수 있는 그 유명한 "BERT : Pre-training of Deep Bidirectional Transformers for Language Understanding"이다. Google에서 2019년 발표한 논문이고 현재 GPT와 함께 pre-train language model계의 양대 산맥을 형성하고 있는 모델이라고 할 수 있다.

논문을 읽게 된 계기는 소프트웨어 마에스트로 프로젝트였다. BERT를 기반으로 fine-tuning해서 개체명 인식 모델을 만들어야 했는데 무작정 코드만 생각하기 전에 BERT에 대한 원리나 컨셉을 먼저 아는게 좋을 것 같아서 찾아 읽게 되었다. 사실 학부 3학년이 감히 도전하기엔 난이도가 높았지만 감사하게도 Youtube에 올라와 있는 수많은 리뷰 영상과 여러 블로그 글들을 보면서 조금씩 잘 읽어나갈 수 있었다.

서두가 왜 이렇게 기냐면.. 어디까지나 학부생의 얄팍한 지식으로 읽고 써내려간 리뷰이기에 혹시나 오류를 발견하신다면 anytime! anywhere! 지적해주셨으면 한다는 말을 하고 싶었기 때문이다ㅎㅎ 내 지식을 나누고 오류를 찾고 하는 이런 과정도 컴퓨터를 전공하면서 누릴 수 있는 행운이 아닐까 싶다.

 

0. Abstract

 

최근의 Language representation model들과는 달리, BERT는 unlabeled data(라벨링 작업이 이루어 지지 않은 데이터)로부터 deep bidirectional representations pre-train이 가능하다.

 

한 문장에 모르는 개념이 많아서 당황스럽다. 천천히 살펴보자.

bidirectional하다는 것은 무엇일까?

우선 bidirectional이란, 양방향의 문맥을 모두 고려한다는 뜻이다. 그 반대로는 unidirectional 하다고 하는데 단방향의 문맥 만을 고려하는 것을 말한다. 예를 들어서, "오늘 서점에 가려고 탄 _____ 5호선에 사람이 많았다."라는 문장이 있을 때 우리는 어렵지 않게 지하철이라는 단어를 떠올릴 수 있다. 우리의 사고 과정을 잘 살펴보면,

 

서점에 가려고 뭘 탔네? + 5호선이고 사람이 많았네? → 지하철이구나!!

 

이렇게 문장을 전체적으로 보면서 여러 단서를 얻고 이런 단서를 조합해서 어떤 단어가 가장 어울릴 가능성이 높을지를 판단한다. 하지만 unidirectional한 언어 모델의 경우에는 왼쪽이나 오른쪽 한 방향(unidirectional)으로 읽어나가면서 빈칸이 나오기 전까지의 단서 만을 고려하게 된다. 만약에 왼쪽에서 오른쪽으로 읽어나가는 unidirectional language model이라면 이런 과정을 거치게 될 것이다.

 

서점에 가려고 뭘 탔네? → 택시? 버스? 자가용? 킥보드? 지하철?

 

경우의 수가 너무 많다. 조금 더 중요한 정보는 다 빈칸 뒤에 있는데 unidirectional한 모델의 경우는 이 단서들을 고려할 수 없는 것이다. 그래서 본 논문에서는 bidirectional language model의 중요성을 강조한다.

그렇다면 deep bidirectional 하다는 것은 무엇일까?

이 부분을 설명하기 위해선 뒤에서 언급되는 연관 개념(shallow bidirectional language model 등)에 대한 이해가 필요하기 때문에 관련 내용이 등장하면 이어서 설명할 예정이다.

 

결과적으로, 모델 아키텍처를 Task-specific하게 수정하지 않고 Pre-trained BERT 모델에 하나의 추가적인 output layer를 추가하는 것만으로도 QA 같은 주요 NLP task에서 SOTA(State Of The Art)를 달성한다.

 

나중에 포스팅하겠지만 내가 소마 프로젝트에서 NER task의 기반 모델로 BERT를 선택한 이유가 바로 이 내용때문이었다. 따로 task에 맞는(task-specific) 아키텍처를 만들어 주지 않아도 괜찮은 성능을 보여줄 수 있다고 판단했고 실제로도 그랬다.

 

1. Introduction

 

Pre-training language model은 많은 natural language processing task들의 성능을 향상시키는데 효과적인 것으로 나타났다.

 

Language model을 사전 학습하는 방식이 NLP task들을 효과적으로 수행한다는 것을 언급하면서 서론이 시작된다.

Pre-training language model이 효과를 보인 Task는 두가지 종류가 있는데 간단히 살펴보자면,

첫번째, Natural language inference나 Paraphrasing를 포함하는 Sentence-level Task와 같이 문장들을 전체적으로 분석하면서 각 문장 간의 관계를 예측하는 것이 중요한 Task에서 큰 효과를 보였고,

두번째, Named entity recognition이나 question answering을 포함하는 Token-level Task와 같이 fine-grained output을 내야하는 Task에서도 큰 효과를 보였다.

 

Pre-trained language representation을 downstream task(풀고자 하는 구체적인 task)에 적용하는 방법에는 Feature-based와 Fine-tuning 두가지의 접근이 있다.

 

Feature-based approach란, Embedding은 그대로 두고 그 위의 layer만 학습하는 방식인데 논문에서는 대표적인 예로 ELMo (Embedding from Language Models)를 언급한다. ELMo는 Pre-trained representations를 하나의 추가적인 feature로 포함하는 task-specific 아키텍처를 사용한다.

 

ELMo에서 buLMs를 downstream task에 적용하는 절차

 

Fine-tuning approach란, Embbeding까지 모든 layer를 미세하게 학습하는 방식으로 OpenAI의 GPT(Generative Pre-trained Transformer)가 언급된다. GPT는 Task-specific parameters의 수를 최소화하는 방식으로 범용적인 모델 아키텍처를 가지고 모든 pre-trained paremeter들을 미세하게 조정하는 방식으로 downstream task를 수행한다.

 

이러한 두 접근 방식 모두 pre-train을 진행하는 동안 같은 목적 함수(objective function)을 공유하게 되는데, 이 과정에서 language representation을 학습하기 위해서 unidirectional language model을 사용한다.

 

여기서 목적 함수(objective function)란, 학습을 통해 최적화시키려는 함수로 Cost function, Loss function 등의 상위 개념이다.

논문에서는 현재의 접근들이 (특히 Fine-tuning approach가) Pre-trained representation의 효과를 제한하고 있다고 하는데 이는 Standard language model이 unidirectional하기 때문이다.

 

unidirectional하다는 것은 앞에서도 설명했듯이 단방향의 문맥 만을 고려한다는 것이다.

 

그 예시로, GPT에서는 left-to-right 아키텍처를 사용하기 때문에 각각의 토큰은 이전에(왼쪽에) 등장했던 토큰들만을 attention할 수 있다.

이러한 제한은 Sentence-level Task에서는 차선책이고 Token-level Task에서 Fine-tuning approach를 수행할 때는 성능의 하락을 불러올 수 있다. 왜냐하면 Token-level Task에서는 양쪽 방향의 문맥을 모두 포함하는 것이 매우 중요하기 때문이다.

필자가 소마에서 수행했던 Token-level Task인 NER을 예시로 들어보면,

 

야채를 그릇에 넣고 간을 하기 위해서 소금을 준비한다

 

라는 레시피에서 '간'이 식재료에 해당하는지 그렇지 않은지를 판단한다고 했을 때, left-to-right 아키텍처를 사용한다면

 

야채를 그릇에 넣고 간을 하기 위해서 소금을 준비한다

 

파란색으로 하이라이트 되어 있는 previous token 정보들 만을 가지고 판단해야하기 때문에 '간'이 식재료에 해당한다고 판단할 가능성이 생긴다.

 

야채를 그릇에 넣고을 하기 위해서 소금을 준비한다

 

하지만 이렇게 bidirectional language model을 사용한다면 정보에 대해서 모두 attention을 계산할 수 있어서 식재료에 해당하지 않는다고 판단할 가능성이 높아진다.

 

BERT는 이러한 제한을 완화시키기 위해서 "Masked Language Model(이하 MLM)"을 pre-training objective로 사용한다.

 

Masked Language Model은 input 토큰 중의 일부를 랜덤하게 [mask]로 바꿔서 모델이 해당 문장의 문맥 정보만으로 [mask]된 토큰을 예측하는 것에 목적을 두고 있다.

 

오늘 제가 입은 옷은 베이지색 가디건입니다. → 오늘 제가 입은 [mask]은 베이지색 가디건입니다.


MLM은 양쪽 문맥 정보를 모두 결합할 수 있기 때문에 Deep bidirectional Transformer를 사전 학습할 수 있다.

 

또한 "Next Sentence Prediction(이하 NSP)" Task를 수행하도록 text-pair representation을 추가로 사전학습한다.

 

2. Related Work

 

Related Work에서는 과거에 연구되어 온 general language representation을 pre-training하는 접근 방식들이 간단하게 언급된다.

 

2 - 1. Unsupervised Feature-based Approach

 

범용적으로 적용 가능한 word 레벨의 representation learning은 수십년 동안 연구되어온 분야이고 현재도 활발하게 연구되고 있는 분야이다.

 

논문에서는 과거의 연구 내용들을 두가지 범주로 구분하여 소개하고 있다.

1. Non-Nueral

  • Brown et al., "Class-based n-gram models of natural language" -> n-gram 기반 모델
  • Ando and Zhang., "A framework for learning predictive structures from multiple tasks and unlabeled data" -> structure learning 기반 모델
  • Blitzer et al., "Domain adaptation with structural correspondence learning" -> sourcerich한 domain의 feature를 자동으로 sourcepoor한 domain의 feature로 대응시키는 모델

2. Nueral

  • Mikolov et al., "One billion word benchmark for measuring pregress in statistical language modeling" ->
  • Pennington et al., "Glove : Gloval vectors for word representation" ->

 

Pre-training word embedding은 현대 자연어 처리 분야에서 중요한 파트이고 특히 처음부터(from scratch) embedding을 학습하는 경우에 놀라운 성능 향상을 제공한다.

 

과거의 연구에서 Word embedding을 학습하기 위해서 left-to-right language modeling이나 좌우 문맥에서 부정확한 단어들을 구분해내는 방법이 사용되었고 이러한 접근(Word embedding)들은 Sentence embedding이나 Paragraph embedding으로 일반화되었다.

 

Sentence representation을 학습하기 위해서, 과거의 연구들은 다음과 같은 방법을 이용하였다.

 

1. 다음 문장 후보들의 순위를 매기는 방법

2. 이전 문장이 주어졌을 때에 다음 문장의 left-to-right generation을 하는 방법

3. denoising autoencoder에서 파생된 방법

  • denoising autoencode란, autoencoder에서 input data에 random noise를 추가하여 나온 결과와 noise를 추가하지 않았을 때의 결과의 차이를 최소화하는 목적을 가지는 autoencoder의 한 종류이다.

 

ELMo와 후속 모델들은 전통적인 word embedding 연구들을 다른 차원(unidirectional to shallow bidirectional)으로 확장시켰다.

 

ELMo는 left-to-right representation과 right-to-left representation을 concatenation하는 방식을 사용해서 양쪽 문맥을 모두 반영하는 것과 유사한 결과를 도출했고 QA나 Sentiment Analysis같은 몇몇 NLP Task에서 SOTA를 달성했다. 이러한 방식을 Shallow bidirectional하다고 하는데 bidirectional이라는 말이 붙었으니 논문에서 그렇게 제기하던 unidirectional language model에서 발생하는 문제를 해결한 것이 아닌가?라는 의문이 들 수 있다.

그러나 논문에서는 이러한 Shallow bidirectional language model이 Deep하지 못하다고 하는데 그럼 도대체 Deep bidirectional하다는 것은 무엇일까?

기존의 unidirectional한 방식은 물론이고 shallow bidirectional한 방식의 경우에도 밑바닥까지 파고 들어가보면 결국 unidirectional language model이 기본이고 여기서 도출된 결과값을 단순히 concatenation한 것에 불과하다. 따라서 양쪽 문맥의 attention을 한번에 계산하는 것이 아니기 때문에 진정한 의미의 Deep bidirectional한 방식이라고는 할 수 없는 것이다.

하지만 이렇게 유사한 bidirectional 매커니즘을 통해서도 몇몇 Task에서 SOTA를 달성한 것을 보면 bidirectional language model이 NLP TASK를 해결하는데 매우 효과적임을 알 수 있다.

 

2 - 2. Unsupervised Fine-tuning Approaches

 

앞서 Feature-based approach를 살펴봤으니 이번에는 Fine-tuning approach를 살펴보자. BERT가 Fine-tuning approach에 해당하는 모델이기 때문에 이 쪽이 좀 더 메인이라고 할 수 있다.

 

Feature-based approach와 마찬가지로, Fine-tuning approach의 초기 연구들은 Unlabeled data에서 word embedding parameter들을 사전 학습하는 방향으로 이루어졌다.

 

최근에는 (1) 문맥을 반영한 representation (contextual representation)을 생성하는 Sentence나 Document 레벨의 encoder를 unlabeled data로 사전학습하고, (2) 학습된 encoder를 수행하고자 하는 downstream task에 맞게 fine-tuning하는 방식이 사용된다.

이러한 방식의 장점은 처음부터(from scratch) 학습할 때에 학습되는 파라미터 수가 적다는 것이다. 비용적인 면에서 좋은 장점이라고 할 수 있다.

GPT가 이러한 방식으로 몇몇 Sentence-level Task에서 SOTA를 달성했고 이때 unidirectional language model과 auto-encoder를 사용했다.

  • Sentence-level Task이었기 때문에 unidirectional language model로도 좋은 성능을 낼 수 있지 않았나 싶다.

 

2 - 3. Transfer Learning from Supervised Data

 

기계 번역(machine translation)이나 자연어 추론(natural language inference) task에서 대규모 데이터셋으로부터 사전 학습된 모델을 transfer learning하는 것에 대한 효과를 입증한 연구들이 있고,

컴퓨터 비전 분야에서도 ImageNert과 같은 대규모 데이터셋으로부터 모델을 사전 학습한 뒤에 fine-tuning하는 방식이 중요하고 효과적이라는 것을 입증한 연구들이 있다.

unsupervised 방식뿐만 아니라 supervised 방식에서도 pre-training model이 효과적임을 언급하기 위해서 등장하는 내용들인 것 같다.

 

여기까지가 Related Work까지의 내용이고 다음 포스팅부터는 BERT의 핵심과 BERT를 여러 Task에 적용한 결과에 대한 분석을 다뤄보려고 한다. 얕은 지식이지만 본 논문을 처음 접한 분들에게 조금이나마 도움이 되었으면 좋겠고 오류나 첨언은 언제나 환영이라는걸 다시 한번 말씀드리면서! BERT 1편을 마친다!