2019년 Facebook에서 발표한 BART라는 논문을 알아보도록 하겠습니다. BART는 Bidirectional and Auto-Regressive Transformers의 약자로, 다른 논문들과 비슷하게 애니메이션 캐릭터인 바트 심슨을 노리고 네이밍을 한 것 같습니다.
BART는 트랜스포머 기반의 구조를 사용하고 있는데, BERT의 학습 방식과 GPT의 학습 방식을 일반화한 방식을 사용했습니다. 이는 아래 그림에 표현되어 있습니다.
Model
BART는 시퀀스 투 시퀀스 트랜스포머 아키텍쳐를 사용하고 있습니다. 다만 GPT와 같이 ReLU를 GeLU로 수정한 점의 차이가 있습니다.
BERT의 구조를 사용하지만 약간의 차이도 있는데요. BERT와는 달리
- 디코더의 각 레이어는 인코더의 최종 은닉층에 대해서 cross-attention을 수행하는 점.
- 단어 예측 전에 FFN을 수행하지 않는 점.
라는 점에서 차이가 존재합니다. BERT보다 약 10% 정도 파라미터가 더 많다고 합니다.
Pre-training BART
기본적으로 논문 이름에 있듯이 Denoising을 사용하며, seq2seq 아키텍쳐를 사용하고 있습니다. 여기서의 사전 학습은 대규모의 레이블되지 않은 데이터를 사용하여 모델을 학습하는 방법을 말합니다. 임의의 구간을 마스킹하거나 디노이징하여 그것을 예측하는 방식으로 주로 학습을 하는데요. BART는 다음과 같은 방식으로 사전학습을 진행합니다.
- 임의의 노이즈 기법을 통해 텍스트를 손상시키고,
- 원본 텍스트를 재구성하기 위해 모델이 학습을 진행하는 방식
다시 정리하면, BART는 문서를 손상시킨 후 디코더의 출력과 원래 문서 간의 교차 엔트로피를 최적화하는 방식으로 학습을 수행합니다. 기존 디노이징 방법들과의 차이점은 기존 방식들은 특정한 노이즈 방식에 맞추어 개발이 되었지만, BART는 어떤 종류의 디노이징 기법도 적용할수 있습니다.
저자는 다양한 디노이징 기법을 테스트해보았는데요. 각각에 대해 설명해보도록 하겠습니다.
Token Masking
BERT(Devlin 등, 2019)의 방식처럼 무작위로 토큰을 [MASK] 토큰으로 마스킹하는 방식입니다.
Token Deletion
토큰 마스킹과는 달리 무작위로 토큰을 삭제하는 방법으로, 모델은 어디에서 토큰이 누락되었는지를 결정해야 합니다.
Text Infilling
가장 성능이 좋게 나온 방식이라고 하는데요. 포아송 분포(λ = 3)를 사용하여 여러 개의 텍스트 구간을 샘플링하며, 각 구간은 하나의 [MASK] 토큰으로 대체되고, 가끔은 길이가 0인 구간도 있습니다. 이 방식을 통해 각 span에서 얼마만큼의 토큰들이 없어졌는지를 학습합니다.
Sentence Permutation
문서를 마침표 기준으로 문장으로 나눈 후 이를 섞는 방식입니다.
Document Rotation
랜덤으로 임의의 토큰을 선택한 후 해당 토큰부터 문서를 시작하는 방식으로 로테이션하는 방법입니다. 이 작업은 모델이 문서의 시작을 식별하는 것을 훈련하는 방식입니다. 위의 그림에서 볼 수 있듯이 토큰 이전 문장은 뒤에 붙어있는 걸 확인하실 수 있습니다.
Fine-tuning BART
Sequence Classifications Tasks
Encoder, Decoder에 동일한 인풋값이 들어오고, 마지막 디코더 토큰의 마지막 히든 스테이트를 새로운 멀티클래스 Classifier에 입력합니다. 이 방식은 버트의 CLS와 유사하다고 하는데, 버트는 Classifier를 구성할 때 마지막 토큰인 [CLS]의 히든 스테이트를 사용하는데, BART는 마지막 디코더 토큰을 사용한다는 차이가 있는 것으로 보입니다.
아까 위의 모델쪽 내용과 합치면 이 마지막 토큰은 전체 입력과 cross-attention 연산을 하기 때문에, 이 토큰은 모든 입력값이 반영된 결과라고 볼 수 있을 것 같습니다.
Token Classification Tasks
answer endpoint classification for SQuAD 와 같은 태스크에서 사용하는 방법을 말하는데요. 제가 아직 이 태스크가 정확하게 어떤건지는 모릅니다 ㅜㅜ.
내용은 디코더 각각의 히든 스테이트를 사용해서 토큰을 분류할 수 있다는 내용입니다.
Sequence Generation Tasks
Auto-Regressive한 디코더 특성상 abstractive question answering나 summarization과 같은 태스크(Sequence Generation Tasks)에 파인튜닝할 수 있습니다.
Machine Tranlsation Tasks
기계번역 태스크에서는 위의 그림과 같은 방식을 사용합니다. 특정 언어에 학습된 BART에 대해 다른 언어에 대해 학습된 인코더를 붙이는 작업이라고 이해할 수 있을 것으로 보이는데 정확하게는 조금 더 살펴봐야 할 것 같습니다.
Large-scale Pre-training Experiments
마지막으로 Large-scale로 프리트레인한 결과를 확인해보도록 하겠습니다.
BART는 인코더, 디코더 각각에 12개의 레이어를 사용했으며, hidden size를 1024로 둔 큰 모델을 프리트레이닝 했습니다.
학습 방법은 RoBERTa를 참고하여, 배치 사이즈는 8000, 모델은 500000 스텝 동안 훈련을 진행합니다. 문서는 GPT-2와 동일한 인코딩 방식(byte-pair encoding)을 사용해 토큰화했습니다. 위에서 봤던 마스킹 기법 중 Text Infilling, Sentence Permutation을 사용했고, 문서별로 30%를 마스킹을 했습니다. 마지막 10%의 훈련에는 드롭아웃을 비활성화하여 학습했습니다. 사용한 데이터는 RoBERTa와 동일한 뉴스, 책, 이야기, 웹 텍스트로 이루어진 160GB의 데이터입니다.
Discriminative Tasks
Discriminative Task에 대해서는 RoBERTa와 비슷하거나 오히려 낮을 때도 있는데요, 저자는 BART의 생성 작업에 대한 개선이 분류 성능을 희생하지 않고 이루어진다는 근거로 이 결과를 얘기하고 있습니다.
Generation Tasks
대망의 Generation Task에 대해 확인해보도록 하겠습니다.
파인튜닝을 할 때에는 label smoothed cross entropy loss를 사용했으며 스무딩 파라미터는 0.1, 생성 중 beam 크기는 5로 설정했으며, beam search에서 중복된 trigram을 삭제, min-len, max-len, length penalty를 검증 세트에 대해 조정했습니다.
이 부분은 Generation Tasks에서 자주 사용하는 파라미터들로 보여 향후 스터디가 필요할 것으로 보입니다.
Summarization
요약 태스크는 CNN/DailyMail, XSum이라는 두 개의 데이터셋에 대해 실험했습니다. CNN/DailyMail은 원본 문장과 유사한 경향이 있는 쉬운 데이텃셋으로 보이며, XSum은 조금 어려운 데이터셋입니다.
BART는 이 모든 데이터셋에 대해 좋은 성능을 보이고 있다는 걸 확인할 수 있습니다.
Dialogue
이 태스크는 대화 응답을 생성하는 태스크인데요. 이 분야에서도 상당히 높은 성능을 보이고 있는 것을 확인하실 수 있습니다.
Abstractive QA
이 태스크는 ELI5 데이터셋에 대해 긴 길이의 freeform answer를 생성하는 태스크인데요. BART는 이전에 비해 성능이 향상되었지만, 아직 이 분야는 도전적인 분야라고 설명하고 있습니다.
Translation
번역 분야도 한번 확인해보도록 하겠습니다. 저자는 6개 레이어의 트랜스포머 인코더를 추가로 사용하였고, WMT16 Romanian-English 데이터에 대해 실험을 진행했는데, 과적합 우려가 있다보니 향후에는 추가적인 정규화 기법을 탐구해야 할 것으로 보인다고 설명했습니다.
Qualitative Analysis
BART는 summarization 분야에서 상당한 개선을 이루었습니다. 따라서 저자는 이 성능을 이해하기 위해 Qualitative Analysis를 수행했습니다. 그 내용이 아래 그림이라고 볼 수 있습니다. 결과가 매우 잘 나오기는 했지만 일부 출력에서는 올바르지 않은 결과가 있는 것으로 보입니다. 예를 들어 첫 예시에서는 “물고기가 산호초를 전염병으로부터 보호하고 있다”라는 문장이 있고 이 작업이 Science에 있다고 하는데 사실 없는 내용입니다.
저자는 이러한 샘플이 BART의 사전 훈련이 자연어 이해와 생성의 강력한 조합을 배웠기 때문에 생긴 결과라고 얘기하고 있습니다. 사실 무슨 얘기인지 잘 모르겠네요..