[ACL 2020] BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension 논문 정리

Jiwung Hyun
12 min readSep 1, 2020

ACL 2020 논문 읽기 (3)

[paper] [fairseq github]

Reference

[1] M. Lewis, Y. Liu, N. Goyal, M. Ghazvininejad, A. Mohamed, O. Levy, V. Stoyanov, L. Zettlemoyer, BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension, The 58th Annual Meeting of the Association for Computational Linguistics (ACL 2020)

Facebook AI에서 발표한 ACL 2020 논문이다.

Outline

  • Abstract + Introduction
  • Model
  • Pre-training BART
  • Fine-tuning BART
  • Result

Abstract + Introduction 읽고 정리해보기

BARTBidirectional Transformer와 Auto-Regressive Transformer가 결합된 모델이다. 이 모델은 denosining autoencoder 방식으로 사전학습(pre-training)된다.

먼저 원본 텍스트가 임의의 noise function에 의해 변환된다. 그리고 모델은 이를 원본 텍스트로 복구하도록 학습한다.

BART의 모델 구조는 Transformer 기반의 neural machine translation 구조이다. 이는 단순하지만 양방향 인코더는 BERT, left-to-right 디코더는 GPT, 그리고 그 외에 다른 최신 pre-training schemes을 일반화하는 것으로 볼 수 있다.

이러한 setup의 핵심 장점은 어떠한 noising 방법도 적용이 가능하다는 것이다. 텍스트에 noise를 주는 방식에 대하여 다양한 noising 접근법으로 실험을 하였는데, 원본 문장의 순서를 랜덤으로 섞고 최신 in-filling 기법(임의 길이의 text span을 하나의 mask token으로 바꾸는 것)을 사용하는 것이 가장 좋은 성능을 보였다.

특히 BART는 text generation과 reading comprehension task에서 효과적이였는데, RoBERTa와 동일한 학습 환경에서 abstractive dialogue, question answering, summarization에서 SOTA를 달성하였다.

BERT, GPT, BART 비교

Model

Architecture

활성화 함수를 ReLU대신 GeLUs를 사용한 것을 제외하고 기본적인 sequence-to-sequence Transformer 구조 (Vaswani et al., 2017)를 채택하였다.

base model은 인코더와 디코더가 6개의 layer로 이루어져 있고, large model은 12개의 layer로 이루어져 있다.

BERT와의 차이점

  • BERT와 달리, decoder의 각 레이어는 추가적으로 encoder의 마지막 hidden layer에 걸쳐 cross-attention을 수행한다.
  • BERT는 word prediction 전에 feed-forward network를 추가하여 사용하지만, BART는 그렇지 않다.

→ 같은 수의 레이어일 때, BERT보다 약 10% 많은 파라미터 수를 갖는다.

Pre-training BART

reconstruction loss로 원본 문서와 decoder의 출력 간의 cross-entropy를 사용한다.

기존의 denoising autoencoder들은 특정 noising 스키마에서만 한정되어 있지만, BART는 어떠한 문서 corruption이 가능하다.

저자들은 다양한 방식의 변형을 실험해보았다. 사용한 transformation은 다음과 같다. (각 transformation은 함께 사용할 수도 있다.)

Transformations for noising the input

Token Masking

BERT와 같은 방식으로, 랜덤으로 한 토큰을 [MASK] 토큰으로 바꾼다.

Token Deletion

랜덤으로 한 토큰을 삭제한다. Token masking과 달리, 모델은 입력의 어느 위치에 누락된 token을 넣어서 복구해야할지 결정해야 한다.

Text Infilling

Poisson 분포에서 구한 span 길이로 여러 text span을 샘플링한다.
각 span은 하나의 [MASK] 토큰으로 대체되고, 길이가 0인 span은 [MASK] 토큰이 삽입된다.
Text infilling은 모델이 span에서 누락된 토큰의 수를 예측하는 것을 가르친다.

Sentence Permutation

문서를 문장 단위로 나누고, 랜덤 순서로 섞는다.

Document Rotation

랜덤으로 선택된 토큰이 문서의 첫 시작이 되도록 rotate한다.
Document rotation은 모델이 문서의 시작점을 구분하도록 학습한다.

Fine-tuning BART

Sequence Classification Tasks

encoder와 decoder에 같은 입력을 넣고 마지막 decoder token의 마지막 hidden state를 새로운 multi-class linear classifier에 넣는다. BERT에서 CLS 토큰을 넣는 것과 유사하다. 이를 위한 추가 스페셜 토큰 end을 추가하였다.

Token Classification Tasks

완전한 문서를 encoder와 decoder에 넣고, decoder의 맨 위 hidden state가 각 단어의 representation으로 사용된다. 이 representation이 token을 분류하는 데 사용되는 것이다.

Sequence Generation Tasks

BART가 auto-regressive decoder를 갖고 있기 때문에, 직접적으로 fine tuning이 가능하다.
대표적인 sequence generation task인 abstract QA 또는 summarization 모두 입력에서 정보가 복사되지만 변형이 되기 때문에, pre-training objective와 밀접한 관련이 있다.
encoder의 입력으로 input sequence가 들어가고, decoder에서 출력이 생성된다. (auto-regressive)

Machine Translation

새로운 encoder parameter를 추가하고, BART 전체가 pre-trained decoder가 되는 방식으로 활용이 가능하다.
BART의 encoder의 embedding layer를 랜덤으로 초기화된 encoder로 대체하고, 이 새로운 encoder (embedding layer)가 외국어를 영어로 de-noise 가능한 입력으로 만들 수 있도록 학습한다.

완벽한 이해는 아니지만, 예시를 들자면 이렇게 표현할 수 있는 것 같다.

한국어: 나는 라면을 먹는다.

영어: I eat ramen.

추가 인코더의 결과: I ramen eat

추가 인코더가 무조건 단어 단위의 번역을 수행하도록 만드는 것은 아니지만, BART로 하여금 bitext word alignment을 수행하도록 할 수 있게 만들어주는 역할을 하는 것 같다. (저의 추측…)

Fine-tuning BART for classification and translation

Result

결과는 base model 기준과 large model 기준으로 실험하여 비교하였다.

Comparing Pre-training Objectives (base model)

base-size model을 기준으로 여러 task에 대하여 비교하였다.
(6 encoder and 6 decoder layers, with a hidden size of 768)

책과 Wikipedia data을 합친 데이터를 이용하여 같은 step 수 (1M)만큼 학습을 진행하였다.

비교에 사용된 모델은 Language Model, Permuted Language Model, Masked Language Model, Multitask Masked Language Model, Masked Seq-to-Seq이다.

비교에 사용된 Task는 SQuAD, MNLI, ELI5, XSum, ConvAI2, CNN/DM이다.

Result Table

Comparison of pre-training objecitves

결과에 대한 저자진의 정리는 다음과 같다.

  • 사전 교육 방법의 성능은 task에 따라 크게 다르다.
  • Token masking은 중요하다.
  • Left-to-right 방식의 사전 학습은 생성 성능이 좋다.
  • SQuAD에서 양방향 인코더는 중요하다.
  • 사전 학습 objective만 중요한 요소는 아니다.
  • Pure language model이 ELI5에서 가장 성능이 좋다.
  • BART는 가장 일관성있게 강력한 성능을 보인다.

Large-scale Pre-training Experiments

RoBERTa 모델과 같은 규모로 BART를 학습하여 BART의 large-scale 사전 학습 성능을 확인하였다. 8000이라는 매우 큰 batch size로 500,000 steps 학습을 진행하였고, base model에서 입증된 Text infilling + Sentence shuffling을 사용하였다.
(12 encoder and 12 decoder layers, with a hidden size of 1024)

Results on Discriminative Tasks

Results for large models on SQuAD and GLUE tasks

대부분의 task에서 RoBERTa와 비슷한 성능을 보인다. 하지만, 생성 task에서의 성능 향상이 분류 task의 성능 희생을 만들지는 않는다.

Results on Generation Tasks

  1. Summarization
Results on two standard summarization datasets

요약 task에서 모두 SOTA를 달성하였고, 특히 XSum에서 모든 ROUGE metric에서 약 6.0 point의 향상을 보였다. Sample quality도 훌륭하다.

XSum으로 튜닝된 모델로 WikiNews 기사를 요약한 샘플 중 일부 (더 많은 샘플은 논문을 보기를 추천!)

유창하고 문법에 맞는 영어를 보여주고 있다. 입력으로 부터 복사한 구문이 거의 없고 잘 요약되었다.
물고기가 지구 온난화로부터 암초를 보호하고 있다고 추론한 것은 매우 훌륭!
하지만, 이 연구가 저널 Science에 게재되었다는 것을 support하는 문장은 없었음.
→ 그래도 이러한 샘플들은 BART의 사전 교육이 자연어 이해 및 생성의 강력한 조합을 배웠다고 볼 수 있다.

2. Dialogue

Result on ConvAI2

Dialogue response geration에서도 SOTA를 달성하였다.

3. Abstractive QA

Result on ELI5

이전 연구보다 1.2 ROUGE-L 향상을 보이며 SOTA를 달성하였다. 하지만, 여전히 challenge가 필요한 데이터셋이다. (질문에 대한 답이 여전히 약하게 명시되어 있음)

Result on Translation

BLEU on WMT’16 RO-EN

baseline은 Transformer large setting이다. BART는 back translation data을 사용하지 않을 경우에는 덜 효과적이였다고 한다. (over-fitting 문제)

My Discussion

사전 학습 모델의 objective로 사용할 수 있는 것이 아직도 많이 남았구나 생각했다. 자연어 이해와 생성이라는 두 마리 토끼를 잘 잡은 연구가 아닌가 생각해본다. 특히, 요약 모델의 Qualitative result는 진짜 놀라운 결과를 보여준 것 같다.

--

--