BART(Bidirectional Auto-Regressive Transformer)는 2019년에 페이스북에서 발표한 논문입니다. BART는 BERT와 GPT를 하나로 합친 형태로, sequence-to-sequence 모델이면서 denoising task를 pre-training objective로 하고 있는 모델입니다.
BERT : 양방향으로 언어 시퀀스의 토큰들을 어텐션 메커니즘을 통해 모두 반영하여 인코딩 (transfomer encoder)
GPT : 이전의 입력을 바탕으로 새로운 출력을 만들어내는 모델 (transfomer decoder)
BART 모델은 여러 자연어 벤치마크에서 SOTA를 달성하며, 여러 pretrain task에 대한 면밀한 분석을 진행했다고 합니다.
BERT는 인코더이기 때문에 generation task에 대응할 수 없고, GPT는 디코더만 존재하기 때문에 양방향 문맥정보를 반영하지 못합니다. BART는 “Bidrectional”과 “Auto-Regressive” Transformer를 합친 모델이며 seq2seq 모델로 만들어진 denoising autoencoder로, 많은 downstream task에서 잘 동작합니다.
BART 사전학습의 2가지 단계는 다음과 같습니다.
1) 텍스트가 임의의 noising 함수를 통해 오염된다. (다른 토큰[Mask]으로 교체 or 삭제 or 순서 변환 등)
2) seq2seq 모델이 원래의 텍스트를 복원하기 위해 학습된다.
왼쪽 아래 인풋으로 들어오는 문장을 보게 되면, BERT의 MLM(masked language model)처럼 노이즈가 낀 입력으로 들어옵니다. 따라서 pretraining은 corrupted된 인풋 문장을 오른쪽 상단의 A,B,C,D,E와 같이 원래 original document 혹은 sentence로 복원시키는 태스크를 풀게 됩니다.
BART는 BERT의 MLM처럼 어떤 corrupted된 document를 원래 original document로 복원하는 방법을 학습하면서 사전학습을 진행합니다. XLNet, SpanBERT, UniLM 등 기존 방법론들은 특정 end task 형태에 집중해서 활용성이 떨어진다는 문제점이 있는 반면, BART의 장점은 활용성이 떨어지는 이런 MLM들의 noise Flexibility를 제공한다는 점입니다. ***어떤 임의의 변형이라도 기존 텍스트에 바로 적용될 수 있으며, 심지어 길이도 변화시킬 수 있다고 합니다. 저자는 여러 noising 방법론을 실험하였고, 최고의 성능을 보이는 방법은 “기존 문장의 순서를 랜덤하게 섞고, 임의의 길이의 텍스트를 하나의 단일 마스크 토큰으로 교체하는 것(Text Infilling)”*이라는 것을 발견했습니다.
BART는 손상된 문서를 기존 문서로 되돌리는 denoising autoencoder로, pretraining objective로는 denoising task를 하면서 sequence-to-sequence를 기본 아키텍처로 삼고 있습니다. BART는 bidirectional한 encoder (즉, BERT)와 auto-regressive한 decoder (즉, GPT)의 모양과 같은 encoder-decoder 모양을 가집니다.
[BERT와 BART의 비교]
BERT
(Bidirectional Encoder Representation from Transformer)
BART
(Bidirectional Auto-Regressive Transformer)
BART는 문서를 오염시키고 난 뒤 reconstruciton loss, 즉 디코더의 output과 기준 문서와의 cross entropy loss를 최적화하는 것으로 훈련됩니다. BART는 output 개수가 정해져 있지 않고, auto-regressive하게 생성되기 때문에 어떠한 종류의 corruption이든 모두 적용할 수 있습니다.
BART의 사전학습 objective는, 여태껏 제안된 여러 noising 기법과 새로운 변형기법에 대해 실험하였습니다. 실험의 사용한 5가지 noising 기법은 다음과 같습니다.
1) Token Masking
BERT에서 제시한 기법으로, MLM과 동일합니다. random token들을 샘플링하고, 이를 [MASK] token으로 대체합니다. 모델은 [MASK] token이 어떤 토큰이었는지 맞추어야 합니다.
EX) ‘어제 그녀와 만났다. 그녀와의 데이트는 너무나도 달콤했다.’라는 문장이 있을 때, ‘그녀와’, ‘그녀에게’가 랜덤하게 각각 문장별로 샘플링 되었다면, BERT와 동일하게 해당 토큰들을 80% 확률로 마스킹하고, 10%는 그대로 놔두고, 10%는 임의의 다른 토큰으로 변형하는 식으로 진행
2) Token Deletion
랜덤한 토큰들을 input에서 임의로 제거하는 태스크입니다. Token Masking과 다르게, 모델은 input의 어느 위치가 없어졌는지에 대한 정보도 함께 결정해야 합니다.
EX) ‘그녀와’, ‘그녀에게’가 랜덤하게 샘플링 되었다면, 오른쪽에서 없어지는 것
3) Text infilling
SpanBERT에서 영감을 받은 기법이며, 5가지 noise task 중에서 가장 성능이 좋았고 중요합니다. 포아송 분포(람다=3)에서 span length를 추출한 길이만큼의 텍스트 span을 샘플링하고, 토큰을 단일 [MASK] token으로 대체합니다. 모델에게 얼마나 많은 토큰이 하나의 span으로부터 없어졌는지 예측하도록 학습시킵니다.
포아송 분포
: 람다라는 파라미터를 가짐. (람다는 포아송분포의 기댓값, 분산과 같음)
→ 람다=3인 포아송 분포의 출력값 : 분산=3, 기댓값=3이니까 대략 0~6 사이의 값들 중에서 span length가 추출될 확률이 높은 것이고, 이 중에서도 3에서 가장 높은 것
** span length가 0인 경우도 존재
→ 이상한 곳에 [MASK] token을 삽입하는 것과 동일
EX) ‘어제 그녀와 만났다’라는 문장에서의 span length가 0으로 뽑혔다고 가정
→ masked token을 중간에 삽입하는 식으로 진행
‘그녀와의 데이트는 너무나도 달콤했다.’라는 문장에서의 span length가 2로 뽑혔다고 가정
→ length 2를 length 1의 단일 single maksed token으로 대체함
⇒ spanBERT와의 차이점(SpanBERT는 span 길이를 다른 분포로 샘플링하고, 각 span을 가려진 단어 길이와 동일한 만큼 [MASK] token으로 치환)
4) Sentence Permutation
XLNet에서 영감을 받은 기법으로, 하나의 문서가 마침표를 기준으로 문장별로 모두 분리되며 분리된 문장들은 순서가 랜덤으로 섞입니다. 모델은 섞인 토큰들을 원래의 순서대로 배열해야 합니다.
EX) 인풋은 sentence로 들어올 수도 있고, document로 들어올 수도 있음 → 즉, ‘어제 그녀와 만났다’가 abc, ‘그녀와의 데이트는 너무나도 달콤했다.’가 de, 이런식으로 입력이 들어간다고 논문에서 설명함
5) Document Rotation
하나의 토큰이 랜덤으로 동일한 확률로 선택되고, 문서가 해당 토큰으로 시작하도록 섞습니다. 이 태스크는 모델이 문서의 시작이 어디인지 학습할 수 있게 도와줍니다.
Ex) ‘만났다’라는 토큰이 선택됐으면, ‘만났다’를 기준으로 그 뒤에 문장이 계속 나열되고, 앞에 있는 토큰들은 맨 뒤로 붙여버림
BART가 생성해내는 representation은 여러 downstream에서 다양한 방법으로 적용될 수 있습니다. 논문에서는 4개의 task별로 어떻게 파인튜닝이 진행되는지 설명합니다.
1) Sentence Classification task
어떠한 문장을 분류하는 태스크로, 대표적으로 주어진 문장이 문법적으로나 영어적으로 합당한지 분류하는 GLUE의 CoLA가 있습니다. 해당 태스크에서는 동일한 입력이 인코더와 디코더에 들어가고, 마지막 decoder token의 마지막 hidden state가 새로운 multi-class 선형 분류기에 들어가게 됩니다. (이 방법론은 BERT가 CLS 토큰으로 분류하는 것에 영감을 얻었다고 합니다) 추가적인 토큰을 마지막에 추가하여, 마지막 토큰의 representation이 전체 입력과 attention을 수행할 수 있도록 하여 마지막 output이 모든 입력을 반영할 수 있도록 했습니다. BERT는 classification special token이 들어가지만, BART는 단순히 end token으로 구분해줘서, 완벽한 문장을 인풋으로 넣어줘도 문제 없이 설계했습니다.
2) Token Classification task
토큰단위로 분류를 수행하는 태스크로, 대표적으로 주어진 본문 내에서 정답을 찾아야 하는 SQuAD가 있습니다. SQuAD에서는 정답에 해당되는 start와 end point의 토큰을 찾아야 합니다. BART에서는 모든 문서를 인코더와 디코더의 입력으로 하고, 디코더의 최상단 hidden state를 각 토큰의 representation으로 사용하여 분류했습니다.
3) Sequence Genreation task
BART는 autoregressive decoder를 가지고 있기 때문에 abstractive question answering과 summarization과 같은 sequence generation task에 바로 적용할 수 있습니다. 인코더의 입력은 input sequence가 되고, 디코더는 autoregressive하게 출력을 생성합니다.
4) Machine Translation task
기계번역은 2개의 다른 언어를 다루기 때문에 인코더와 디코더 모두 같은 언어로 사전학습된 BART 모델을 바로 사용할 수 없습니다. 이전 연구에 따르면 사전학습된 인코더를 합쳐 성능을 향상시킬 수는 있었지만, 사전학습된 디코더의 경우 성능 향상이 제한됨으로 알려져 있었습니다. ****BART에서는 BART 모델 전체를 기계번역 디코더를 사용하고, 여기에 bitext로 학습된 새로운 인코더 파라미터를 추가하여 해결할 수 있음을 보여주었습니다.
BART 인코더의 임베딩 레이어를 랜덤하게 초기화된 인코더로 교체하고, end-to-end로 학습합니다. 이 새로운 인코더를 외국어 단어(영어가 아닌)들을 매핑하도록 학습하며 BART가 이를 영어로 denoise할 수 있도록 학습합니다. 이때 새로운 인코더는 기존 BART 모델과 다른 vocabulary를 사용해도 됩니다.
해당 태스크에서는 인코더를 2가지 단계로 학습시킵니다. 2가지 단계 모두 BART 모델의 출력으로 나온 cross entropy loss로 역전파를 수행합니다. 첫번째 단계에서 대부분의 BART 파라미터는 freeze 시킵니다. 그리고 랜덤하게 초기화된 encoder, BART positional embedding, BART 인코더의 첫번째 레이어의 self-attention input projection matirx만을 학습시킵니다. 두번째 단계로 적은 수의 iteration으로 전체모델 파라미터를 학습시킵니다.
EX) 알파,베타~ 부분이 한국어, abc~ 부분이 영어라고 가정 → BART는 영어 혹은 한국어에 대한 단일 언어로 noise objective를 학습했는데, 번역 태스크에서는 입력으로 한국어가 들어와야하기 때문에 discrependency가 발생함 → 따라서 임의의 초기화된 인코더 레이어를 붙여서 영어의 인풋으로 바꿔줘서 이거를 출력하도록 파인튜닝을 설계함
BART는 이전 연구보다 pretraining 단계에서 더 넓은 범위의 noising 방법론을 지원합니다. 연구팀은 먼저 base-size model(6 encoder and 6 decoder layers, with a hidden size of 768)을 사용하여 여러 denoising task에 대해 실험을 진행했습니다.
1) Language Model
훈련은 GPT모델이 훈련하는 방식으로, left-to-right 트랜스포머 언어 모델입니다. 해당 모델은 BART의 디코더와 동일하지만, cross-attention을 수행하지 않습니다.
2) Permuted Language Model (PLM)
XLNet에 기반 모델이며, 토큰들의 1/6을 샘플링하고, 이를 autogregressive하게 랜덤한 순서로 생성하는 모델입니다.
3) Masked Language Model (MLM)
BERT와 같이, 토큰의 15%를 [MASK]로 대체하고, 모델을 각 토큰마다 기존 토큰을 예측하도록 훈련합니다.
4) Multitask Masked Language Model (MMLM)
UniLM에서 제안한 방법으로, MLM을 추가적인 self-attention mask를 통해 훈련합니다. Self attention의 mask는 다음과 같은 비율로 랜덤하게 선택됩니다. → ⅙ left-to-right, ⅙ right-to-left, ⅓ unmasked, 그리고 ⅓의 처음 50% 토큰이 unmask되고 나머지 비율은 left-to-right mask가 됩니다.
5) Maksed Seq-to-Seq
MASS에 영감을 받은 모델로, 50%의 토큰을 포함하는 span을 마스킹하고, seq2seq 모델로 [MASK] token을 예측하도록 훈련합니다.
위의 모델을 기반으로 아래의 태스크들을 수행했습니다.
1) pretraining method의 성능은 task별로 매우 다르다
Simple Language Model의 경우 ELI5에서 가장 좋은 성능을 보였으나, SQuAD에서는 가장 나쁜 성능을 보여줬습니다.
2) token masking은 매우 중요하다
Doument Rotation이나 permuting sentences 기법의 경우 단독으로 사용하면 성능이 좋지 않았습니다. Token Deletion이나 Masking 또는 self-attention masks를 사용했을 때 좋은 성능을 보였습니다. 특히 Token Deletion의 경우 generation task에서 높은 성능을 냈습니다.
3) Left-to-right 기반 언어 모델은 gerneration task에 효과적이다.
MLM과 PLM은 generation task에서 성능이 좋지 못했습니다. 해당 모델들은 left-to-right auto-regressive 모델링이 적용되지 않았기 때문이라 추정합니다.
4) Bidirectional Encoder는 SQuAD에서 아주 중요하다.
left-to-right 디코더는 SQuAD에서 약한 성능을 보입니다. 왜냐하면 classification decision에서 future context 정보가 중요하기 때문입니다. 그렇지만, BART는 절반의 양방향 레이어를 가지고도 비슷한 성능을 달성하여 BART 모델의 효과성을 보여준다고 주장했습니다.
5) pretraining method 이외에도 중요한 요소가 많다.
PLM은 기존 XLNet보다 약한 성능을 보였습니다. 그 이유로 XLNet에 적용된 relative-position embeddings 또는 segment-level recurrence와 같은 기법이 적용되지 않았기 때문입니다. 따라서 사전 학습 방법론 이외에도 성능 향상에 중요한 요소가 많이 존재할 것이라고 주장하였습니다.
6) 순수한 언어 모델이 ELI5에서 최고의 성능을 보인다.
ELI5의 경우 다른 task에 비해 높은 PPL을 가지고, BART보다 다른 모델의 성능이 더 높습니다. 해당 태스크에서는 순수한 언어 모델이 가장 성능이 좋았으며, input과 output의 연관성이 적어, BART가 좋은 성능을 내지 못했기 때문입니다.
7) BART가 가장 일관되게 최고의 성능을 달성했다.
ELI5를 제외하면, BART를 Text Infilling으로 학습한 모델이 모든 태스크에서 좋은 성능을 보여 BART의 우수성을 주장했습니다.
연구팀은 large size BART에 대해서도 실험을 진행했습니다. 실험 구성은 다음과 같습니다.
BART를 RoBERTa large 크기의 모델과 동일한 수준으로 학습했을 때 다른 모델과의 성능 비교를 하였습니다. 트랜스포머 인코더만 있는 BERT 기반 모델들은 Generation 태스크를 수행하지 못합니다. 따라서 다른 모델과의 비교를 위해 BART 논문의 저자들은 실험한 다운스트림 태스크를 “답을 정해진 범위 내에서 내야하는 결정적인 태스크(Discriminative Task)”와 “정해져 있지 않은 자유형식의 문장을 생성하는 생성 태스크(Generation Task)”, 그리고 “영어를 다른 Target 언어로 번역하는 기계 번역 태스크(Translation Task)”로 나누어 분석을 진행하였습니다.
전체적으로 BART는 대부분의 task에서 다른 모델들과 비슷한 성능을 보이고 있습니다. 이는 BART가 generation Task에서 성능 향상을 이뤘는데, 이것이 discriminative task에는 영향을 미치지 않았다는 것을 의미합니다.
1) Summarization
문서 요약 태스크들의 SOTA와 비교하기 위해, 두 개의 서로 특징이 다른 요약 데이터셋, CNN/DailyMail과 XSum를 이용해 실험을 진행했습니다. CNN/DailyMail의 경우 Extractive summarization의 특성상 이전 모델들의 성능도 매우 높았고, BART 또한 높은 성능을 보였습니다. XSum의 경우 Abstractive summarization 특성상 Extractive summarization에 비해 낮은 성능을 보였고, BART는 이전 SOTA 모델인 BERTSUMEXTABS보다 약 6.0 ROUGE metric 만큼의 비약적인 향상이 있었습니다.
2) Dialogue
ConvAI2 데이터셋으로 실험을 진행했고, 해당 태스크는 반드시 이전 문맥과 텍스트로 명시된 화자 둘 다 고려하여 응답을 생성해야합니다. 2개의 자동화된 평가 메트릭스(Valid F1 score, Valid Perplexity)를 이용하여 BART가 이전 모델들의 성능을 압도한 것을 알 수 있습니다.
3) Abstracitve Question Answering
ELI5 데이터셋을 활용하여 긴 자유형식의 답변을 생성하는 능력을 평가했고, BART가 이전 모델들보다 1.2 ROUGE-L 만큼 더욱 좋은 성능을 보였습니다. 하지만 아직 데이터셋에서 질문에 대한 답변이 잘 정의되어 있지 않아서, 어려움이 많은 태스크입니다.
해당 실험에서 베이스라인은 기존 Large Transformer 모델로 두었습니다. BART를 영어로 표현으로 매핑하는 6개의 레이어만 학습하고 나머지 파라미터는 freeze한 Fixed BART와 Fixed BART의 모든 파라미터를 한번 더 학습시킨 Tuned BART로 나누어 실험했다는 특징이 있습니다. large-size Transformer보다 성능이 향상된 것을 볼 수 있습니다.
BART는 손상된 문장을 원본으로 복구하도록 학습하는 pretrain method를 사용한 모델입니다. BART는 Discriminative Task에서 RoBERTa와 비슷한 성능을 보였으나, 여러 텍스트 Generation Task에서 SOTA의 성능을 달성했습니다. 추가 연구로 pretrain을 위해 텍스트를 손상시키는 새로운 방법을 제안했습니다.
https://arxiv.org/pdf/1910.13461.pdf
https://www.youtube.com/watch?v=VmYMnpDLPEo
https://chloelab.tistory.com/34
https://facerain.club/bart-paper/