본문 바로가기

Paper Review

Paper Review #19 - BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension

BART: Denoising Sequence-to-Sequence Pre-training for
Natural Language Generation, Translation, and Comprehension - (19.10.29) https://arxiv.org/abs/1910.13461
 

BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension

We present BART, a denoising autoencoder for pretraining sequence-to-sequence models. BART is trained by (1) corrupting text with an arbitrary noising function, and (2) learning a model to reconstruct the original text. It uses a standard Tranformer-based

arxiv.org

 

 

Research direction & Motivation


Main Purpose

A universal language model specialized in various fields

 

 Transformer 라는 구조의 출현에 따라 langauge model에서 대부분의 신경망 모델은 해당 구조를 적용하고있다. 대표적으로 BERT나 GPT는 다양한 task에 폭넓게 활용되어왔다. 그 가운데, text의 단어가 무작위로 mask 되었을때 이를 복원하도록 학습시키는 masked language model(MLM)의 접근방법은 self-supervised learning으로써 큰 성과를 거두었다. 그 외에도 다양한 방법들이 연구되어왔으며 좋은 성과를 얻었지만, 특정 task에만 한정적으로 적용이 가능해 범용성이 떨어지는 경우가 많았다. 

 

 예를들어, BERT는 auto-regressive한 특성의 부재로 generation이 불가능하며 반대로 GPT는 leftward한 특성으로 인해 주변 문맥에 대한 정보를 충분히 수용하지 못한다는 단점이있다. 본 논문은 이를 해결하고자 새로운 모델인 BART를 제안한다. BART는 bi-directional encoder와 left-to-right autoregressive decoder를 결합한 Encoder-Decoder 모델로써 두 단계의 pre-training stage를 거친다.

 

 BART에서 text는 임의의 noise function에 의해 오염되며 모델은 text를 복원하는 방향으로 학습한다. 사용되는 noising function의 선정은 학습에 큰 영향을 미치기 때문에 다양한 pre-training 전략에 대해 실험하였으며 최종적으로 BART는 generation task에서 큰 강점을 보인다.

 

 

Model


 BART는 transformer 구조를 기반으로 하고 있으며 기존의 GPT, BERT와 구조적으로 유사성이 높다. 하지만 일부 측면에서 차이가 있는데, 이를 비교하면 다음과 같다.

 

BERT vs GPT vs BART

 

 

 BERT는 encoder만 보유한 모델로써 무작위 token이 mask되며 encoding이 bi-directional하게 일어난다. 즉 토큰의 앞뒤 문맥을 모두 참조할 수 있는 장점이있다. 하지만 mask된 token들은 각각 독립적으로 예측되므로 regressive하지않아 generation task에는 활용되기 어렵다. 

 

 GPT는 decoder만 보유한 모델로, token들은 auto-regressive하게 예측되며 이에따라 generation task에 특화되어 있다. 앞선 BERT와는 다르게 bi-directional한 특성이 아닌, left-to-right 방향으로 진행되어 앞뒤 문맥을 모두 고려하지는 못한다. 

 

 BART는 encoder기반의 BERT와 decoder기반의 GPT2를 결합한 encoder-decoder 모델이다. 따라서 BART는 auto-regressive한 동시에 bi-directional하다. 세부적인 차이점으로는 BERT 달리 word prediction 이전에 별도의 feed-forward network를 갖고있지 않아 parameter 수가 약 10%정도 적으며 GPT와 다르게 activation function으로 GeLU를 사용한다는 점이다. 또한 decoder의 각 layer는 encoder의 final hidden layer와 cross-attention을 수행한다. 학습시에 BART는 encoder의 input과 decoder의 input이 동일하지 않아도 되기 때문에 다양한 noise function의 사용이 가능하다. 그에 따라 encoder에는 noisy한 text를 input으로 사용하며 decoder에는 원본 input을 넣어주는 꼴이된다.  

 

Fine-tuning BART


 BART는 위와같은 특성때문에 다양한 task에서 사용될 수있다.

 

Sequence Classification Tasks

 

 

 분류 문제에서는 encoder와 decoder에 동일한 input값이 사용되며, decoder의 마지막 token이 새로운 linear classifier에 투입된다. BERT가 [CLS] token을 사용하는 것과 유사하지만, 여기서는 end 라는 추가적인 token을 사용한다.

 

 

Token Classification Tasks

 

 해당 task에서는 encoder와 decoder에 모두 완전한 문장을 사용하며 decoder의 top hidden state이 각 단어에 대한 representation이 된다. 이것을 통해 token을 분류한다.

 

 

Sequence Generation Tasks

 

  요약, 질의응답의 task를 말하는데 encoder에는 일반적인 input이 들어가며 decoder가 auto-regressive하게 미리 사전학습된 표현들과 유사한 output을 생성한다.

 

 

Machine Translation

 

 

 기계번역에서는 두 개의 다른 언어를 다룬다. 같은 언어로 pretrain된 BART는 결국 encoder와 decoder가 단일어로 학습되었다는 것이므로, 둘중 하나는 다른 언어에 대해 학습해야한다. 그렇기 때문에 논문에서는 대안으로 BART 모델 전체를 single pretrained decoder로 사용한다. 따라서 새로운 encoder가 필요한데, 기존 BART의 encoder의 embedding layer를 randomly initialized된 embedding layer로 대체한다. 이렇게 형성된 새로운 encoder는 decoder와는 다른 외부 언어에 대해 학습하게 되며 decoder는 이를 번역하는 역할을 수행한다. 

 

 여기서 해당 encoder를 학습시키기 위해 두 가지 step을 거친다한다. 먼저 대부분의 parameter들을 freeze하고 encoder, positional embedding 등의 일부만 update 시키며, 모든 parameter들을 적은 횟수의 step만큼만 학습시킨다.

 

 

Comparing Pre-training Objectives


 BART는 사전학습시에 다양한 noising 전략의 사용이 가능하다. 논문에서는 어떤 전략이 학습에 가장 효과적인지를 알기위해 6가지 task들에 대해 여러가지 pre-training 방법을 사용해 실험했다. 동시에 동일한 task에 대해 BERT, XLNet, UniLM 등을 기반으로한 방법들과도 성능을 비교했다. 이때 동일한 조건을 가정하기위해 비슷한 수준의 size에 해당하는 모델을 구축했으며 pre-training dataset으로는 books and Wikipedia data를 이용해 1M step만큼 학습시켰다.

 

 

이 논문에서는 그림과 같이 5가지의 noise 기법을 사용했다.

  • Token Masking: BERT처럼 random token을 masking하고 이를 복구하는 방식이다.
  • Token Deletion: Random token을 삭제하고 이를 복구하는 방식이다. Masking과의 차이점은 어떤 위치의 토큰이 지워졌는지 알 수 없다는 점이다.
  • Text Infilling: Poisson 분포를 따르는 길이의 text span을 생성해서 이를 하나의 mask 토큰으로 masking한다. 즉, 여러 토큰이 하나의 mask 토큰으로 바뀔 수 있고 길이가 0인 경우에는 mask 토큰만 추가될 수도 있다. SpanBERT에서 아이디어를 얻었는데 SpanBERT는 span의 길이를 알려주었으나 여기서는 알려주지 않고 모델이 얼마나 많은 토큰이 빠졌는지 예측하게 한다.
  • Sentence Permutaion: Document를 문장 단위로 나눠서 섞는 방법이다.
  • Document Rotation: 토큰 하나를 정해서 문장이 그 토큰부터 시작하게 한다. 모델이 document의 시작을 구분하게 한다.

 

 

 표의 윗부분은 타모델들의 성능을 의미하며, 아랫부분은 BART의 pre-training strategy에 따른 결과를 나타낸다. 

 

  • Language Model: GPT와 비슷하다. left-to-right 트랜스포머 모델을 학습시킨다. 이 모델은 cross-attention이 빠진 BART decoder와 같다.
  • Permuted Language Model: XL-Net을 기반으로 한다. 1/6 토큰을 샘플링하고 이것을 랜덤한 순서로 auto-regressive하게 생성한다.
  • Masked Language Model: BERT처럼 15% 토큰을 mask 토큰으로 바꾸고 독립적으로 이 토큰을 예측하게 한다.
  • Multitask Masked Language Model: UniLM처럼 self-attention mask를 추가해서 MLM을 학습한다. self-attention mask는 1/6은 left-to-right, 1/6은 rignt-to-left, 1/3은 unmasked로 적용되고, 나머지 1/3은 처음 50% 토큰에는 mask가 없고 나머지 토큰에는 left-to-right mask를 적용한다.
  • Masked Seq-to-Seq: MASS와 비슷하다. 토큰의 50%를 포함하는 span에 mask를 하고 mask된 토큰을 예측하는 seq-to-seq 모델을 학습시킨다.

 일반적인 seq2seq 처럼 source를 encoder에 주고 target을 decoder output으로 하는 방법과, source를 decoder target의 prefix로 주고 target 부분만 loss를 계산하는 방법으로 학습시켰다. 전자의 방법이 BART 모델에 더 적합했고, 후자는 나머지 모델에서 더 효과가 좋았다.

 

 타모델들과의 비교를 먼저보면, ELI5를 제외한 모든 task에서 상당히 높은 성과를 거두었다. 또한 left-to-right 모델들이 bi-directional 모델 들보다 generation task에서는 월등히 좋은 성능을 보여준다. 

 

 다음으로 BART의 pre-training 전략 부분에서는 token masking이 가장 중요했다. Token masking과 token deletion은 둘다 좋은 효과를 가져오는데, generation task의 경우 deletion이 효과적이었다. 반면 document rotation, sentence shuffling은 단독으로 사용될 경우 성능에 큰 하락을 가져온 것을 보여준다.

 

 

Large-scale Pre-training Experiments


 최근 연구들에 따르면 pre-training시에 큰 규모의 batch size를 사용할 경우 성능이 크게 향상되는 경향성이 존재했다. 이에 기반해 BART의 성능 개선을 알아보고자하는 실험을 진행했다. 사전학습시, text infilling과 sentence permutation 방법을 사용하며 batch size는 8,000으로 500,000 step동안 학습시켰다. 앞선 실험들과 마찬가지로 모델들간의 동일한 pre-training data를 사용해 비교했다.

 

 

Discriminative Tasks

 

 SQuAG와 GLUE task에서 RoBERTa와 대등한 성능을 보인다. 이후 나오는 generation task에서도 상당히 좋은 결과를 보여주는데, 이는 generation task에서의 높은 성능은 discriminative task와 trade-off를 가지지 않는 다는 것을 의미한다. 즉, 범용적인 task에 보편화될 수있는 좋은 성능을 갖고있는 모델인 것을 증명한다고 할 수 있다.

 

 

Generation Tasks

 

 논문에서 제시한 generation task는 summarization, dialogue, abstractive QA가 있으며 별도로 translation이 있다. 이중 앞선 3가지에서는 모두 큰 차이로 sota를 달성했다. 마찬가지로 translation에서도 기본 transformer 모델보다 높은 성능을 보여주었다.

 

 

 마지막으로 summarization 결과에 대한 quality를 보면 문법적인 측면에서 완벽하며, 어색하지 않은 문장들을 생성하고 있음을 알 수 있다. 내용적인 측면에서는 pretrain된 내용에 대한 사전정보들을 이용해 input에 대한 정보와 결합하여 요약을 생성하고있다. 이러한 결과들을 볼때 저자들은 BART가 자연어에 대한 이해와 생성간의 관계를 올바르게 학습했다고 주장했다.

 

 

Comparing Pre-training Objectives


 결과적으로 BART는 다른 모델들보다 대부분의 task에서 대등하거나 더 높은 성능을 보여주었다. 단순히 한영역에만 특화된 language model이 아닌, 여러 task에 보편화될 수 있는 범용성이 강한 모델로 생각된다. 본 논문은 pre-training 방법에 대한 결과들을 추가적으로 제시함으로써 효율적인 방법을 모색해 모델의 발전에 한 단계 더 기여한 연구라고 볼 수있다.