(NAACL . 2019 Best Long Paper Award ) BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
석사를 졸업하고 10년이 지난 시점에서 다시 논문을 Review 하게 될 줄 예상치 못했습니다.
회사에서의 논문 세미나 발표 주제로 선정되어 급하게 자연어 처리에 대한 배경 지식 없이 자연어 처리의 끝판 왕(Google 이기에..) 격인 BERT 를 리뷰 하게 되었습니다
NLP 학습을 위한 목표 설정과 기본적인 개념을 정리하는 것을 목적으로 하고자 합니다.
(즉 논문 리뷰(요약, 분석, 비판적 접근, 개선) 성격 보다는 21년 1학기 자연어처리 수업을 수강하게 되어서.. 사전 예습 차원에서 용어,Trend 파악 성격으로 접근할까 합니다. . ^^ )
이후, 요구 되는 배경/관련 지식은 별도 정리해 나가도록 하겠습니다
- 논문 : https://arxiv.org/abs/1810.04805
- BERT : https://github.com/google-research/bert
- BERT Pytorch : https://github.com/codertimo/BERT-pytorch
Abstract
- 1. Introduction
- 2. Related Work
- Unsupervised Feature-based Approaches
- Unsupervised Fine-tuning Approaches
- Transfer Learning from Supervised Data
- 3. BERT
- Model Architecture
- Input / Output Representations
- 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 (General Language Understanding Evaluation)
- 4-2. SQuAD v1.1
- 4-3. SQuAD v2.1
- 4-4. SWAG
- 5. ablation Studies
- 5-1. Effect of Pre-training Tasks
- 5-2. Effect of Model Size
- 5-3. Feature-base Approach with BERT
- 6. Conclusion
- Detailed Experimental Setup * NLP Task
- MNLI
- QQP
- QNLI
- SST-2
- CoLA
- STS-B
- MRPC
- RTE
- WNLI
- Abstract
- Transformer 구조를 활용한 Language Representation에 관한 논문
- BERT는 기본적으로,
- (wiki나 book data와 같은 대용랑) unlabeled data로 모델을 미리 학습 시킨 후, pre-trained
- 특정 task를 가지고 있는 labeled data 로 transfer learning 을 하는 모델 - fine Tuning
- BERT 이전에
- 이러한 접근 방법을 가지는 모델이 몇가지 대용량 unlabeld corpus를 통해 language model을 미리 학습 하고, 이를 토대로 뒤쪽에 특정 task를 처리하는 network를 붙이는 방식(ex. ELMo, OpenAI GPT…)
- BERT 논문에서는 이전의 모델 (ex. ELMo, OpenAI GPT )의 접근 방식은 shallow bidirectional 또는 unidirectional 하므로 language representation이 부족하다고 표현
- SQuAD question answering task와 같은 task까지 광범위한 부분을 커버
- 1. Introduction
- pre-trained language 은 Language model pre-training은 여러 NLP task의 성능을 향상시키는 데에 탁월한 효과가 있다고 알려져 있습니다. (Dai and Le, 2015; Peters et al., 2018, 2018; Radford et al., 2018; …)
- pre-trained language representation 을 적용하는 방식은 크게 두가지 방식
- 2-1. feature-based approach : 특정 task를 수행하는 network에 pre-trained language
- representation 을 추가적인 feature로 제공. 즉, 두 개의 network를 붙여서 사용
- 대표적인 모델 : ELMo(Peters et al., 2018)
- 2-2. fine-tuning approach : task-specific한 parameter를 최대한 줄이고, pre-trained된 parameter 들을 downstream task 학습을 통해 조금만 바꿔주는(fine-tuning) 방식.
- 대표적인 모델 : Generative Pre-trained Transformer(OpenAI GPT) (Radford et al., 2018)
- ELMo, OpenAI GPT는 pre-training시에 동일한 objective function으로 학습 수행
- 하지만, BERT는 새로운 방식으로 pre-trained Language Representation을 학습했고 이것은 매우 효과적……????? (GPT-1 과 경쟁 하여 우월 하다???)
- BERT 논문은 fine-tuning approach
- (그리고) “BERT 의 pre-training” 의 새로운 방법론은 크게 2가지로 나눌 수 있습니다. 하나는 Masked Language Model(MLM), 또 다른 하나는 next sentence prediction이다.
- 기존 방법론 : 앞에 소개한 ELMo, OpenAI GPT는 일반적인 language model을 사용 일반적인 language model이란, 앞의 n 개의 단어를 가지고 뒤의 단어를 예측하는 모델을 세우는 것 (n-gram). 하지만 이는 필연적으로 unidirectional 할 수 밖에 없고, 이러한 단점을 극복하기 위해 ELMo에서는 Bi-LSTM으로 양방향성을 가지려고 노력하지만, 굉장히 shallow한 양방향성
- Masked Language Model(MLM)
- MLM은 input에서 무작위 하게 몇개의 token을 mask 시킵니다.
- 그리고 이를 Transformer 구조에 넣어서
- 주변 단어의 context만을 보고 mask된 단어를 예측하는 모델입니다.
- OpenAI GPT도 Transformer 구조를 사용하지만,
- 앞의 단어들만 보고 뒷 단어를 예측하는 Transformer decoder구조를 사용 함
- 이와 달리 BERT에서는 input 전체와 mask된 token을 한번에 Transformer encoder에 넣고 원래 token 값을 예측
- NSP (next sentence prediction)
- 문장을 pre-training시에 같이 넣어줘서 두 문장이 이어지는 문장인지 아닌지 맞추는 것입니다.
- pre-training시에는 50:50 비율로 실제로 이어지는 두 문장과 랜덤 하게 추출된 두 문장을 넣어줘서 BERT가 맞추게 시킵니다.
- 2. Related Work
- Unsupervised Feature-based Approaches
- Pre-training 된 단어 임베딩은 현대 NLP 시스템의 필수적인 부분, 처음 부터 학습되는 임베딩보다 상당한 개선점을 제공
- 단어 임베딩 벡터를 Pre-training 하기 위해, left to right 언어 모델링의 Object 뿐 아니라 양방향 context 의 잘못된 단어 들에서 올바른 단어들을 구별하는 Objective 도 사용됨
- 문장 표현을 훈련 하기 위해서, 다음과 같은 Object 를 사용
- 다음 후보 문장들에 순위를 매김
- 이전 문장 표현이 주어지면 다음 문장 단어를 Left to right 생성
- Objectives 에서 파생된 Autoencoder 를 Denosing
- ELMO 와 이전 기법은 서로 다른 차원에 따라 전통적인 단어 임베딩 연구를 일반화 함
- 이 방법 들은 left to right & right to left 언어 모델에서 context-sensitive feature 를 추출 함
- 각 토근의 문맥적 표현은 left to right & right to left 표현의 연결로 나타남
- 기존 Task-Specific 아키텍처를 이용하여 문맥과 관련된 임베딩을 통합 할 때, ELMo 는 일부 중요한 LNP Benchmarks 를 위해 최신 기술들을 진보 시킴
- Question Answering (QA) , Sentiment Analysis (SQ) , Name Entity Recognition (NER)
- Melamud 등은 LTSM 을 이용하여 왼쪽 & 오른쪽 모두에서 단일 단어를 예측 하는 작업을 통해, 문맥과 관련된 표현 학습을 제시함.
- ELMo 와 유사 하게, 그들의 모델은 Feature-based 이며, 양방향성이 깊지 않음.
- Fedus 등은 Cloze 작업이 텍스트 생성 모델의 강건함을 향상 시키는데 사용될 수 있음을 보여줌
- 2-2. Unsupervised Fine-tuning Approaches
- Feature-Based 접근 과 마찬가지로, Fine-tuning 의 첫번째 작업은 레이블이 없는 텍스트를 이용하여 단어 임베딩 파라미터를 Pre-training 만 수행 함
- 더 최근에는, Contextual 토큰 표현을 생성하는 문장 또는 문서 Encoder 가 레이블이 없는 텍스트로 Pre-Training 되고, 지도 다운 스트림 작업에 대해 Fine-tuning 됐음
- 처음부터 학습된 파라미터가 필요 하지 않음 Open AI GPT 가 많은 문장 수준 작업에서 최신 결과를 달성 하게 됨
- Left-to-right 언어 모델링과 Autoencoder Object 사용 Pre Training 하는데 사용 됨.
- 2-3. Transfer Learning from Supervised Data
- 대규모 데이터 셋을 이용한 자연어 추론, 기계 번역 같은 지도 작업에서 효과 적인 전이 (Transfer)를 보여 주는 작업이 있음
- 컴퓨터 비전 연구는 대규모로 Pre-training 된 모델을 통해 전이 학습의 중요성을 증명해 왔음.
- 3. BERT
- 두 단계의 프레임 워크
- Pre-training
- 서로 다른 pre-training 작업을 통해 레이블이 없는 데이터로 훈련 됨 (MLM , NSP)
- Fine-tuning
- Pre-training 된 파라미터들로 BERT 모델을 초기화 하며,
- 모든 파라미터들은 다운 스트림 작업에서 레이블이 있는 데이터를 사용하여 Fine-tuning 됨
- 모델들이 동일하게 pre-training 된 파라 미터로 초기화 됐더라도, 각 다운 스트림 작업 마다 Fine-tuning 된 모델을 별도로 가짐
- Model Architecture
- 1. BERT는 transformer 중에서도 encoder 부분만을 사용.
- 자세한 내용은 Vaswani et al (2017) 또는 tensor2tensor의 transformer 참고
- 2. BERT는 모델의 크기에 따라 base 모델과 large 모델을 제공
- BERT_base : L=12, H=768, A=12, Total Parameters = 110M
- BERT_large : L=24, H=1024, A=16, Total Parameters = 340M
- - L : transformer block의 layer 수, H : hidden size, A : self-attention heads 수, feed-forward/filter size = 4H
- 3. 여기서 BERT_base 모델의 경우, OpenAI GPT모델과 hyper parameter 가 동일.
- pre-training concept를 바꾸어 주는 것만으로 GPT 보다 훨씬 높은 성능을 낼 수 있다는 것???
- 4. OpenAI GPT모델의 경우
- next token 만을 맞추어 내는 기본적인 language model 방식을 사용
- 이를 위해 transformer decoder를 사용
- 5. BERT는 MLM 과 NSP를 위해 self-attention을 수행하는 transformer encoder구조를 사용
- 6. 대부분의 NLP task SOTA는 BERT_large 모델로 이루어 냈습니다.
- Input / Output Representations
- BERT의 input은 3가지 embedding 값의 합으로 이루어 짐
- WordPiece embedding을 사용
- WordPiece(Wu et al., 2016)에 대한 자세한 내용은 논문 링크를 참고
- BERT English 의 경우 30,000개의 token 을 사용
- Position embedding을 사용
- 모든 Sentence의 첫번째 token은 언제나 [CLS](special classification token)
- 이 [CLS] token은 transformer 전체 층을 다 거치고 나면 token sequence의 결합된 의미를 가짐
- 여기에 간단한 classifier를 붙이면 단일 문장,
- 또는 연속된 문장의 classification을 쉽게 할 수 있게 됨
- Sentence pair는 합쳐져서 single sequence로 입력
- 각각의 Sentence는 실제로는 수 개의 sentence로 이루어져 있을 수 있음
- 두 개의 문장을 구분하기 위해, [SEP] token 사용
- Segment embedding을 사용하여 앞의 문장에는 sentence A embedding, 뒤의 문장에는 sentence B embedding을 더해 줌
- 3.1 Pre-training BERT
- * 기존의 (ELMO나 GPT 의 경우 ) left to right or right to left Language Model을 사용하여 pre-training을 하지만, BERT는 이와 다르게 2가지의 새로운 unsupervised prediction task로 pre-training을 수행
- Task #1: Masked LM (MLM)
- 1. 단어 중의 일부를 [MASK] token 으로 바꿈 (비율은 15%)
- [MASK] token 만을 predict하는 pre-training task를 수행
- [MASK] token 은 pre-training 에만 사용되고, fine-tuning시에는 사용되지 않음
- 해당 token을 맞추어 내는 task를 수행하면서, BERT는 문맥을 파악하는 능력을 길러내게 됨
- 2. 15%의 [MASK] token을 만들어 낼 때, 몇가지 추가적인 처리를 더 해주게 됩니다.
- 80% 의 경우 : token을 [MASK]로 변경 eg., my dog is hairy -> my dog is [MASK]
- 10% 의 경우 : token을 random word로 변경 eg., my dog is hariy -> my dog is apple
- 10% 의 경우 : token을 원래의 단어로 그대로 놔둡니다.
- 이는 실제 관측된 단어에 대한 표상을 bias해주기 위해 실시합니다.
- Task #2:Next Sentence Prediction (NSP)
- 문장 간 관계를 이해 하는 모델을 훈련하기 위해,
- BERT에서는 corpus에서 두 문장을 이어 붙여, 이것이 원래의 corpus에서 바로 이어 붙여져 있던 문장인지를 맞추는 binarized next sentence prediction task를 수행
- 50% : sentence A, B가 실제 next sentence
- 50% : sentence A, B가 corpus에서 random으로 뽑힌(관계가 없는) 두 문장
- 4. Experiments
- 4.1 GLUE
- 4.2 SQuAD v1.1
- 4.3 SQuAD v2.0
- 4.4 SWAG (Situations With Adversarial Generations)
- SWAG(The Situations With Adversarial Generations)은
- (현재 문장 다음에 이어질 자연스러운 문장을 선택하기 위한 데이터 셋)
- video captioning의 sentence가 주어졌을 때,
- 4개의 문장 중 연속되는 상황으로 타당할 문장을 고르는 task이다.
- task-specific parameter로 vector V가 추가된다.
- V와 choice I 에 해당하는 final aggregate representation Ci의 dot product에 softmax 를 적용하여 4개의 선택지에 대한 확률을 구한다.
- 5. Ablation Studies
- 5-1. Effect of Pre-training tasks
- BERT가 주장하는 deep bidirectionality 의 중요성을 실험하기 위해 다음 두 실험을 진행한다.
- Next sentence predcition(NSP) 없이 MLM만을 실험한 모델
- LTR(Left-To-Right) 모델에 no NSP로 실험하는 경우이다.
- LTR 인 경우 masking없이 모든 단어를 예측한다.
- LTR 시스템을 강화시키기 위해 fine- tunning 에서 top layer에 biLSTM 을 추가시켰다.
- 5-2. Effect of Model size
- 결론 : large model이 상당한 정확도 향상에 도움이 됨
- 5-3. Effect of Number of Training Steps
- 결론: BERT은 많은 pre-training step이 필요

- 6. Conclusion
- 지금까지 language model에서의 transfer learning을 이용한 실험들로
- unsupervised pre-training이 많은 language understanding system의 필수불가결한 요소가 될 것임으로 보였다.
- 앞으로의 연구는 BERT가 캡쳐 하거나 하지 못하는 언어적인 요소에 대한 조사가 될 것 을 예상
- Detailed Experimental Setup * NLP Task
- a) sequence-level task : 문장 쌍 분류 문제로 두 문장을 하나의 입력으로 넣고 두 문장 간 관계를 구함
- MNLI( Multi-Genre Natural Language Inference):
- 두 문장 사이의 내포된 의미 모순 찾기
- 현재 문장 다음에 이어지는 문장이 문맥상 이어지는 문장인지, 반대 되는 문장인 상관 없는 문장 인지 분류를 위한 데이터 셋
- QQP( Quora Question Pairs):
- 두 질문이 의미상 같은지 다른지 분류를 위한 데이터 셋
- QNLI(Question Natural Language Inference): 질의 응답 데이터 셋
- SQuAD의 이진분류 버전. paragraph가 answer를 포함하는지 안하는지 확인하는 문제.
- STS-B(Semantic Textual Similarity Benchmark):
- 뉴스의 헤드라인과 사람이 만든 의역 문장이 의미상 같은 문장인지 비교를 위한 데이터 셋
- MRPC(Microsoft Research Paraphrase Corpus):
- 문장쌍의 유사성 확인하는 문제.
- RTE(Recognizing Textual Entailment):
- MNLI와 유사하나 데이터가 적음.
- b) sequence-level task
- 한 문장을 입력으로 넣고 문장의 종류를 분류
- SST-2(Stanford Sentiment Treebank):
- 단 문장 이진분류문제.
- 영화리뷰 문장에 관한 감성 분석을 위한 데이터 셋
- CoLA(Corpus of Linguistic Acceptability):
- 영어 문장이 언어학적으로 acceptable한지 확인하는 이진분류문제
- 문법적으로 맞는 문장인지 틀린 문장인지 분류를 위한 데이터 셋
- (c)는 token-level task
- 문장이나 문단 내에서 원하는 정답 위치의 시작과 끝을 구한다
- SQuAD는 paragraph와 question pair가 주어지면 정답을 포함하는 text span을 찾는 문제
- (d) token-level task
- Named Entity Recognition(NER)이나 형태소 분석과 같이 single sentence에서 각 토큰이 어떤 class를 갖는지 모두 classifier 적용하여 정답을 찾음.
- 입력 문장 Token들의 개체 명 (Named entity recognition)을 구함
- 품사(Part-of-speech tagging) 를 구함
- CoNLL 2003 NER (Named Entity Recognition) datasets – 개체 명 분류 데이터 셋
ref : 학습 요약
Comments
Post a Comment