BART : Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension
1. 논문 제목 : BART : Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension
2. 발표한 학회 : ACL 2020
3. 논문의 핵심 키워드 : Transformer, Encoder-Decoder, mapping corrupted document to original document, Pretraining, Text Infilling
4. 논문요약 :
BERT, GPT, XLNet, UniLM, MASS 5개의 모델이 사용하였던 Pretrain 방법들과 새로 제시하는 5개의 Pretrain 방법들을 동일한 설정의 Transformer 모델에서 실험하여서 Token Infilling 방법이 가장 성능이 우수하다는 것을 밝힌 논문.
해당 Pretrain 방법으로 400M의 파라미터를 가진 Transformer 구조의 모델을 학습시켜서, Comprehension task에서는 기존의 SOTA와 비슷한 성능을, Generation task에서는 더욱 우수한 성능을 보였다.
Masked Language Modeling이 진행하는 Language Understanding과 Casual Language Modeling이 진행하는 Generation 사이에서 밸런스를 맞추어서 모두 적용가능한 Pretrain 방법을 설계하는 것을 주장하였다.
5. 논문에서 소개하는 이전 SOTA / 기존 방법들의 한계:
1) Self-supervised 방법을 통해서 모델을 Pretrain하는 방법론은 NLP 분야에서 전반적으로 성공적이었고, 그 중에서도 가장 성공적인 방법은 글의 일부를 Mask처리하고, 이를 복구하는 방법이었다.
최근에는 Mask 토큰들의 분포, Mask를 예측하는 순서, Mask를 예측하기 위해서 살펴볼 수 있는 문맥등에 변화를 주는 시도가 있었지만, 이러한 방법들 모두 특정한 end task에 국한되어져 있어서 범용성이 좁다.
2) XLNet에서 pretrain-finetune discrepancy를 언급하면서, 이를 좁히는 것의 중요성을 역설하였지만, 기존의 Auto Encoding 방법들에는 해당 문제가 여전히 존재하였다.
6. 논문에서 문제점을 해결하기 위해서 사용한 방법론:
1) BART는 Transformer와 같은 Encoder-Decoder 모델 구조를 사용하게 되는데, 이는 최근에 Bidirectional Encoder로 성공한 BERT와 Left-to-right Decoder로 성공적인 GPT를 결합하여 일반화 시킨 것으로 해석할 수 있다.
2) 위와 같은 모델 구조를 차용했을 때, 가장 큰 장점은 noising flexibility이다. 이는, 텍스트 내에서 단어 단위가 아닌 임의의 길이 단위를 masking하였을 때, 이를 복구하는 Pretraining을 수행하기 가장 효율적인 구조임을 뜻한다.
굳이 한 단어가 아니라 임의의 길이를 masking하였을 때 얻게 되는 장점은 문장의 전반적인 길이 자체에도 추론을 하게 만들어서, 긴 범위의 input에 대해서도 transformation을 유동적으로 할 수 있는 것을 기대할 수 있다.
3) BART는 위와 같은 Pretraining 과정을 통해서 Text generation task와 comprehension task 모두에 효율적으로 fine-tuning될 수 있다.
4) 임의의 길이를 가진 모든 Mask를 복구할 수 있는 BART 모델이 가장 효율적으로 Pretrain을 진행할 수 있도록, 저자들은 5가지의 방법으로 Pretraining을 진행하여 가장 효율적인 방법을 찾아냈다.
첫번째는, Token Masking 방법으로, 기존에 BERT가 사용하던 한 토큰 단위로 [MASK]로 변환한 후에 이를 복구하는 task이다.
두번째는, Token Deletion 방법으로, 임의의 토큰이 삭제되면, 모델이 토큰이 삭제된 위치를 맞추는 task이다.
세번째는, Token Infilling 방법으로, span 길이를 포아송 분포로부터 정하여서, span을 [MASK]로 변환한 후, 모델이 [MASK] 내부에 존재하는 토큰들의 갯수를 맞추는 task이다.
네번째는, Sentence Permutation 방법으로, 문장들의 순서를 뒤섞었을 때, 이를 복구하는 task이다.
다섯번째는, Document Rotation 방법으로, 글 내에서 한 토큰을 임의로 선택한 후에, 그 토큰으로부터 문장이 시작되도록 rotate를 시키면, 해당 토큰이 무엇인지 맞추는 task이다.
위의 5가지 방법과 GPT의 Casual Language Modeling, XLNet의 Permuted Language Modeling, BERT의 Masked Language Modeling, UniLM의 Multitask Masked Language Modeling, MASS의 Masked Seq-to-Seq 5가지를 추가로 비교하였다.
5) 새로 제시하는 5가지 Pretraining 방법, 기존에 성공적이었던 5가지의 Pretraining 방법들을 비교한 결과, 여전히 end-task에 따라 가장 성능이 좋은 pretraining 방법이 다르다는 것을 확인할 수 있었다.
토큰을 [MASK]로 대체하지 않고, 순서를 바꾸거나 rotate 하는 방법들은 성능이 좋지 않았고, Generation task들을 수행하는데는 Casual Language Modeling이 좋은 성능을 냈으며, SQuAD와 같은 classification task들에는 bidirectional encoder들이 주요했다.
결론적으로, BART는 text-infilling Pretraining 방법을 사용했을 때, 다른 9가지 방법들의 성능을 압도하는 것을 확인할 수 있었다.
6) BART는 Encoder의 input만 corrupted된 text가 들어가고, Decoder는 Auto-regressive한 방법으로 진행되어서 corrupted되지 않은 text가 들어간다는 특징이 존재한다.
Decoder가 left-to-right이라는 unidirectional한 방향으로 진행되었음에도 성능이 저하되지 않았고, Decoder의 input에는 MASK가 존재하지 않아서 pretrain-finetune mismatch가 줄어들게 된다.
7. 사용한 데이터셋, 측정한 metric, 학습 진행을 위해서 사용한 hyperparameter, 기존모델대비 성능:
1) 데이터셋 :
Book Corpus, CC News, Open WebText, Stories (Pretraining, 160GB of data, same with RoBERTa)
SQuAD(Finetuning), GLUE(Finetuning), CNN/DM(Finetuning), XSum(Finetuning), ELI5(Finetuning), WMT16(Finetuning), ConvAI2(Finetuning)
2) 수행한 task : NMT, Summarization, Conversational Response Generation, Question Answering, Commonsense Inference, Natural Language Inference, Semantic Textual Similarity, Classification
3) 학습을 위해서 사용한 hyperparameter :
model -> Transformer of 12-layer encoder, 12-layer decoder, 1024 embedding/hidden size, 4096 feed-forward filter size (400M parameters)
vocabulary -> BPE vocab with size 50256 (same with GPT2)
batch size -> 8000 for 500000 steps(pretraining)
pretraining objective -> text infilling and sentence permutation, masking 30% of tokens
beam size(for generation during finetuning) -> 5
optimizer -> Adam
learning-rate -> 10^(-4)(pretraining), 10^(-4)(fine-tuning)
dropout -> rate=0.1
activation function -> GELU
learning rate, batch size used for finetuning ->
4) 사용한 metric :
BLEU(higher the better), ROUGE(higher the better), EM/F1(higher the better), mc(higher the better)
5) 기존 모델 대비 성능 향상:
SQuAD1.0 (Extractive Question Answering) : similar result compared to XLNet, RoBERTa
SQuAD2.0 (Extractive Question Answering) : slightly lower result compared to RoBERTa, similar result compared to XLNet
MNLI(Natural Language Inference) : slightly lower result compared to RoBERTa
QQP(Semantic Similarity) : 0.3% improvement compared to RoBERTa
QNLI(Natural Language Inference) : 0.2% improvement compared to RoBERTa
SST-2(Classification) : 0.2% improvement compared to RoBERTa
COLA(Classification) : Better than BERT, UniLM, lower result than XLNet, RoBERTa
STS-B(Semantic Textual Similarity) : slightly lower result compared to RoBERTa
MRPC(Semantic Textual Similarity) : slightly lower result compared to RoBERTa
RTE(Textual Entailment) : 0.4% improvment compared to RoBERTa
CNN/DM (Extractive Summarization) : 0.83 R1 score higher than UniLM, 1.07 R2 score higher than UniLM, 0.41 RL score higher than UniLM
XSum (Abstractive Summarization) : 6.23 R1 score higher than BERTSumEXTABS, 5.77 R2 score higher than BERTSumEXTABS, 5.98 RL score higher than BERTSumEXTABS
ConvAI2 (conversational response generation) : didn't mention other models
ELI5 (abstractive question answering) : didn't mention other models
WMT16 RO-EN (Neural Machine Translation) : didn't mention other models
8. 추후에 발전할 여지가 있는 점:
1) Pretraining을 진행할 때, text를 corrupt하여 이를 개조하는 더 효율적인 새로운 방법이 제시될 것이다.
2) Generation task에서는 좋은 성능을 보였지만, discriminative task에서는 비슷하거나 살짝 더 낮은 성능을 보여주었는데, Generation과 Language Understanding 사이의 밸런스를 맞추는 후속 연구가 더 필요할 것이다.