본문 바로가기
논문리뷰

[논문리뷰] BART 논문 리뷰

by 단깅수 2024. 5. 15.
728x90

자, 오늘은 X:AI Seminar 2024에서 진행한 BART 논문 리뷰를 가져왔습니다.

해당 논문은 2019년에 발표된 논문입니다.

 

NLP 모델계의 중추 역할을 담당하고 있는 BERT와 GPT-1 의 두 모델의 각각 문제점을 짚고 이를 해결하려는 방향으로 BART 모델을 구현했다고 시사하고 있습니다.

 

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

저자 : Mike Lewis, Yinhan Liu, Naman Goyal, Marjan Ghazvininejad, Abdelrahman Mohamed, Omer Levy, Ves Stoyanov, Luke Zettlemoyer

[1]  Background

 BART는 NLP 분야의 중추가 되는 BERT, GPT-1의 특징을 먼저 짚고 시작합니다. 모델 학습을 할 때 보통 사전학습 단계, 파인튜닝 단계로 나누어 진행하는데 이 사전학습 부분에서 대표적인 Task로 Auto Encoding과 Auto Regressive가 있습니다.

 

pre-training의 대표적인 objective 두 가지 AE, AR

 

  • Auto Encoding
    • 대표적인 예시로 BERT가 있음
    • 입력 토큰 중 일부분을 마스킹 처리하고 마스킹된 부분을 예측하는 과정
    • Mask Token이 뭔지 독립적으로 예측하기 때문에 Mask Token들 사이의 관계와 의존성은 학습할 수 없고 사전학습 시에만 Mask Token이 등장하기 때문에 Pre-training과 Fine-tuning 사이에 mismatch가 발생한다는 문제가 있음
  • Auto Regressive
    • 대표적인 예시로 GPT가 있음
    • 앞의 토큰을 토대로 뒤에 나올 내용(토큰)이 뭔지 예측하는 과정
    • 단방향으로만 학습한다는 문제가 있음

 그래서 이 각 방식에 대해 문제점이 있기 때문에 이를 해결하기 위해서 XLNet, MASS, BART 등의 논문이 나왔고 이번 포스팅에서는 BART를 자세히 볼 예정입니다.


[2] Introduction

최근 Self-Supervised 방법론들은 NLP Task에서 엄청난 성과를 거둬왔습니다.

Self-Supervised 방법론이란 비지도 학습과 같은 의미라고 생각하면 되겠고, 그 중에서 눈여겨봐야 하는 점은 MLM, Masked Language Model입니다.

BERT에서도 사용한 이 MLM 방식은 NLP 분야에서 특히 번뜩이는 아이디어였던 거죠.

 

BERT에서 사용했던 또 다른 학습법인 NSP는 성능이 잘 나오지도 않고 오히려 학습에 방해된다고 여겨져 안쓰이는 추세가 됐다고 합니다. 이러한 기존의 방법론들은 아래 예시처럼 특정 Task에 집중했기 때문에 모든 방법론에 적용할 수 없다는 점이 문제였는데요.

 

따라서 BERT와 GPT의 장점을 결합하며 Seq2Seq 모델을 기반으로 해 텍스트 생성, 요약, 번역, QA 등 다양한 NLP Task 작업에 활용될 수 있도록 범용적인 모델을 고안한 것이 BART입니다.

 

인코더 - 디코더 구조의 BART 모델

 

BART 모델은 기본적으로 인코더 – 디코더 구조를 따릅니다. 임의의 Denoising 함수를 통해 손상된 Input이 Encoder에 입력되고 이를 디코더에서 원래의 텍스트로 복원하기 위해 학습을 진행합니다. 여기서 핵심은 Denoising 방법의 유연성인데요. BART에서는 5가지 Denoising 방법을 사용했고 이 중에서 어떤 방법이 가장 성능이 좋을지 평가하는 식으로 연구를 이어나갔다고 합니다.

 

또한 기계번역 Task에 대한 새로운 파인튜닝 접근법을 제시하기도 하였는데, 위의 5가지 Denoising 방식과 새로운 파인튜닝 접근법에 집중해서 봐주시면 좋을 것 같습니다.

 


[3] Model Architecture

1) Pretraining

 

BART는 Seq2Seq 구조로 Encoder와 Decoder로 구성됩니다.

 

BERT처럼 양방향으로 문장을 이해하는 인코더와 GPT처럼 왼쪽에서 오른쪽으로 문장을 생성하는 디코더를 조합한 구조로 문맥을 깊게 이해하고 이를 바탕으로 자연스럽게 문장을 생성할 수 있게 되는 것이죠.

 

이렇게 생성된 문서는 원래 문서와 얼마나 가까운지 측정하고 차이를 최소화하도록, Cross Entropy Loss를 줄여나가도록 최적화하는 방식으로 학습됩니다.

 

추가로, 구체적인 사진이나 시각 자료는 첨부되지 않았지만 디테일한 학습전략 변경사항이 있는데,

  1. 기존 Transformer 에서는 활성화함수로 ReLU를 사용했지만, BART에서는 가중치의 부드러운 변화를 위해 GeLU를 사용
  2. 모든 가중치값을 초기화할 때 원래는 랜덤으로 초기화하지만 BART에서는 $𝒩(0,0.02)$ 로 초기화해 안정적인 학습을 노림
  3. BART의 디코더는 각 레이어에서 Encoder의 최종 Hidden Layer와 cross attention 수행 (Transformer와 동일)
  4. BERT는 단어를 예측하기 전에 Feed Forward Network를 거치지만 BART는 추가적인 FFN 없이 바로 단어를 예측해 더 단순한 구조로 단어를 예측하는 방식 사용

 

→ BART base는 인코더, 디코더가 각각 6개의 Layer로 구성, BART large는 각각 12개의 Layer로 구성

→ BART는 BERT와 구조적으로 비슷하지만 디코더에 cross attention 추가 등으로 인해 파라미터 수가 약 10% 더 많음

 

2) Nosing Strategies

BART에서 사용한 5가지 Noise 방법론

 

BART에서 5가지 Noise 방법론을 사용했다고 앞에서 언급드렸는데 뭐뭐가 있는지 하나씩 살펴보겠습니다. 먼저 두 개의 문장 ABC와 DE가 입력되었다고 가정하겠습니다.

 

  • 1번 Token Masking
    • BERT에서 사용한 방식과 동일
    • 임의의 토큰을 마스크 토큰으로 바꾸고 그 마스크 토큰이 뭔지 예측하는 방식
    • ex) "나는 학교에 갔다." → "나는 [MASK] 갔다."
  • 2번 Token Deletion
    • 임의의 토큰을 삭제하고 삭제한 토큰의 위치를 찾도록 학습하는 방식 (어떤 단어가 삭제된 건지도 추론해야 함)
    • ex) "나는 학교에 갔다." → "나는 갔다."
  • 3번 Text Infilling (성능 향상 으뜸)
    • $λ=3$인 포아송 분포를 따르도록 설정 후 한 부분을 Span Length의 Mask 토큰으로 대체
    • Span length라고 언급한 이유는 그 길이가 0이 될수도 있고 K개의 토큰이 있다면 K개 전부 마스킹 될 수도 있기 때문
    • 한 구간에 해당하는 마스크 토큰 안에 몇 개의 토큰이 존재할지 예측하도록 학습하는 방식이 Text Infilling
    • ex) "나는 오늘 학교에 갔다." → "나는 [MASK] 갔다." or  "나는 오늘 학교에 갔다." → "나는 오늘 학교에 [MASK] 갔다."
  • 4Sentence Permutation
    • 문장의 순서를 랜덤으로 섞는 방식
    • ex) "나는 학교에 갔다. 친구를 만났다. 저녁을 먹었다."   "저녁을 먹었다. 나는 학교에 갔다. 친구를 만났다."
  • 5Document Rotation
    • 하나의 토큰을 임의로 뽑고 그 토큰을 시작점으로 해서 회전하도록 Denosing을 주는 방식
    • 그래서 모델로 하여금 문서의 시작점을 찾도록 학습시키는 방식
    • ex) "나는 학교에 갔다. 친구를 만났다. 저녁을 먹었다."   " 만났다. 저녁을 먹었다. 나는 학교에 갔다. 친구를"

 

3) Fine Tuning

BART의 Fine-tuning

  1. Sequence Classification (감성분석 / 카테고리분류 등) 
    • 시퀀스분류 작업에서는 동일한 입력을 인코더와 디코더에 동시에 넣고 디코더의 마지막 토큰 Hidden State를 multi-class linear classifier에 전달해 분류
    • BERT의 CLS 토큰과 유사하지만 BART는 마지막에 추가 토큰을 삽입해 디코더의 마지막 토큰이 입력 문맥 전체를 고려할 수 있도록 설계
  2. Token Classification (개체명인식 / 품사 태깅 등)
    • 시퀀스분류와 동일하게 전체 입력을 인코더와 디코더에 동시에 넣고 디코더에서 출력한 각 단어의 Hidden State 를 가지고 적절한 Label을 부여하는 방식으로 학습
  3. Token Classification (요약 / QA 등)
    • BART는 GPT처럼 Auto Regressive하게 문장을 생성할 수 있기에 질문에 대한 답변 생성 / 요약 Task에 적합
    • 문장의 일부를 Masking하고 복원하면서 사전학습되어 기존 문장을 변형하고 새로운 문장을 생성하는 작업에 강함
    • 인코더로 원본 시퀀스가 입력되고, 디코더는 입력된 정보를 바탕으로 순차적으로 문장을 생성
  4. Machine Translation
    • 본 논문에서 BART로 기계번역 Decoder를 개선, 특히 외국어 → 영어 번역 성능 향상을 주로 연구
    • 사전학습시킨 BART 인코더는 영어로 학습했기에, 외국어를 입력으로 받는 새로운 인코더가 필요함
    • 새로운 인코더는 번역 병렬 데이터(bitext)를 이용해 학습 ( 예시 : "Hello" ↔ "Bonjour" ) 
      • 새로운 인코더의 출력은 masking 된 영어 문장 (프랑스어 masking된 영어)
    • 새로운 인코더에 대한 설명이 명시되어 있지는 않지만 일반적으로 Transformer의 인코더 구조와 유사할 가능성이 높고 새로운 인코더는 외국어 문장을 BART가 이해할 수 있도록 변환하는 과정을 학습
    • BART 전체 모델(인코더 + 디코더)을 기존 방식처럼 사용하는 것이 아니라, 하나의 강력한 디코더로 변형하여 기계 번역에 활용 (따지고 보면 인코더 - 인코더 - 디코더 구조)
    • 기존에는 사전훈련된 인코더를 기계번역에 활용하는 방법만 연구되었으나 BART는 사전훈련된 디코더까지 포함해 더 강력한 기계번역 모델을 설계

 


[4] Experiments & Results

 다음으로 여러 실험과 결과 부분 보겠습니다.

 

1) Comparison Objectives

첫 번째 실험은 5가지 사전학습 모델들과 비교해서 여러 Downstream Task 성능을 비교해 본 지표입니다.

 

공정한 비교가 사실상 힘들기 때문에 모든 모델을 같은 코드, 데이터로 재학습시키고 모델 크기를 비슷하게 유지하는 등 최대한 사전훈련 방법 자체의 차이만 성능에 영향을 주도록 실험 설계를 했다고 합니다.

 

결론적으로, 각각의 모델들은 Task에 따라 성능이 좋고 나쁨이 확실하게 갈리는데 특히 앞에서 설명드렸던 Text Infilling Denoising 방식을 사용한 BART가 대부분의 Task에서 일관적으로 뛰어난 성능을 보였습니다.

 

Experiments 1

 

  • Language Model : GPT와 유사한 Left - to - Right Transformer 모델
  • Permuted Language Model : XLNet 기반, 1/6 의 토큰만 샘플링 후 무작위로 토큰을 생성하는 모델
  • Masked Language Model : BERT와 같은 방법론 적용, 15% 토큰을 마스크 토큰으로 대체 후 예측
  • Multitask Masked Language Model : MLM에 attention mask를 추가해서 학습 (왼오, 오왼, 전체문맥 등 다양하게)
  • Masked S2S : MASS 에서 영감을 받아 토큰의 50%를 마스킹 후 마스킹 된 부분 예측
☑️실험 결과

- Task 별로 성능이 좋고 나쁨이 확실한데 BART는 대부분의 Task에서 일관적으로 뛰어난 성능을 보임
- rotation, sentence shuffling 방식의 사전학습은 단독으로 사용하면 성능이 낮음
- 단순히 문장을 섞기보다 특정 단어를 삭제하거나 마스킹하는 MLM 방식이 효과적, 생성 Task에서는 토큰 삭제가 더 효과적
- 왼쪽   오른쪽 같이 auto regressive 하게 순차적으로 단어를 예측하는 방식이 생성 Task에서 효과적
- SQuAD 처럼 QA Task는 미래의 문맥이 중요하기에 양방향 인코더가 중요
- 사전학습 방식뿐 아니라 모델 구조나 기타 설정 또한 성능에 영향을 미침 (BART 저자들이 설계한 permuted LM은 XLNet보다 성능이 낮았음)

 

 

2) Large - Scale Experiments

두 번째 실험은 모델 크기를 키워서 성능이 좋게 만든 후에 다른 모델과 성능을 비교한 내용입니다.

→ 사전학습에서 배치크기나 데이터 규모를 크게 확장하면 성능이 오른다는 연구를 보고 진행 (XLNet, RoBERTa)

 

BART가 대규모 학습에서 얼마나 잘 작동하는지 테스트하기 위해 RoBERTa와 동일한 규모로 학습했다고 합니다.

 

  • 실험 설계 및 설정
    • BART Base : 인코더 6 Layer, 디코더 6 Layer, hidden size = 768
    • BART Large : 인코더 12 Layer, 디코더 12 Layer, hidden size = 1024
    • RoBERTa와 동일하게 Batch Size 8,000으로 500,000 Step 동안 학습, 데이터도 동일
    • Byte-Pair Encoding 방식으로 토큰화
    • 5가지 noising 방식 중에 Text Infilling과 문장 섞기를 조합해 사전학습
    • 30%의 토큰을 마스킹하고 모든 문장을 랜덤하게 섞었으며 훈련 마지막 10% step 동안 dropout을 비활성화 (성능 향상을 위해)
    • 파인튜닝 과정에서는 Label Smoothed cross-entropy loss 사용 (0.9는 정답, 0.1은 다른 단어에 분배해 과적합 방지)
    • Beam Search의 Beam size를 5로 설정, 중복된 trigram 제거(같은 단어 반복 출력 방지), 문장 길이 조정 등 튜닝

 

 

Experiments 2

 

☑️실험 결과

1) 분류 Task
- 가장 직접적으로는 RoBERTa와 성능 비교 (동일한 훈련 자원, but 다른 학습 목표)

→ 전반적으로 RoBERTa와 비슷한 경향

2) 요약 Task
- CNN/DM Dataset
    - CNN/DM의 요약은 원문 문장과 비슷한 구조 (baseline이 단순히 원문 처음 3개의 문장을 사용)
    - 추출 기반 요약 모델이 효과적이지만 BART가 가장 높은 성능을 보임
- XSum Dataset
    - XSum의 요약은 매우 추상적인 요약을 요구 (추출 기반 요약 모델은 이 데이터셋에서 성능이 낮음)
    - BART가 모든 ROUGE Score  지표에서 이전 최고 성능보다 약 6점 정도 성능 향상

3) Translation Task
- WMT16 루마니아어 영어 데이터셋에서 성능 평가
- BackTranslation 데이터 추가 (영어 루마니아어 번역한 데이터를 학습 데이터로 사용)
    - BackTranslation 데이터를 사용하지 않으면 성능이 낮아지고 과적합되는 경향
- BART가 영어 기반 사전훈련을 수행했기 때문에 역번역 효과가 좋았고 기존 Transformer 성능보다 우수했음

→ 사실 루마니아 말고 다른 언어에 대해서는 성능이 별로였기 때문에 루마니아어만 보여준게 아닌가 싶긴 하고 Transformer(2017)와 성능 비교한 것도 의아하긴 합니다.  

[5] Qualitative Analysis

본 논문에서 수치적 평가 외에 요약 Task에 한해서 정성평가도 진행하였습니다.

 

정성평가는 사전학습 이후에 게시된 뉴스 기사에서 가져왔다고 합니다. (평가 데이터가 사전학습에 포함됐을 가능성 배제)

본 포스팅에서는 PG&E 관련 결과만 가져왔습니다.

 

많은 요약 모델은 문서의 첫 번째 문장을 가져와서 요약하는 경향이 있는데, BART가 더 창의적이고 추상적인 요약을 수행할 수 있도록 기사의 첫 번째 문장을 제거해서 학습시켰다고 합니다.

 

☑️실험 결과, BART가 생성한 문장은 문법적으로 정확하며 추출적 요약이 아니라 창의적인 방식의 추상적 요약이 잘 이루어졌음이 확인되었습니다. 특히, 위 예시처럼 PG&E라는 기업이 캘리포니아에 위치한 점 등 이해한 문서 내용을 바탕으로 추가 정보를 스스로 추론할 수 있었습니다.


[6] Conclusion

  • BART는 AutoEncoding (Encoder) + AutoRegression (Decoder)을 결합한 모델
  • 문장 이해, 분석뿐만 아니라 생성, 요약, 번역 등 다양한 Task에 모두 잘 적용될 수 있도록 학습하는 것이 목표
  • 5가지 Denoising 방식을 사용했는데 그 중 Span Mask에 몇 개의 Token이 들어 있는지 예측하는 Text Infilling 방식을 채택한 BART 모델이 가장 성능이 뛰어났음 (실제 사용은 Infilling + Permutation)
  • 특히 문장 요약, 생성 등의 분야에서 성능이 뛰어났으며 이러한 분야에서 특출남에도 기존 분류 Task에서도 RoBERTa와 비슷한 성능을 보여주어 여러 Task에서 SOTA 달성

[7] Reference

https://www.youtube.com/watch?v=v7diENO2mEA

https://www.youtube.com/watch?v=VmYMnpDLPEo&t=1332s

https://chloelab.tistory.com/34

https://velog.io/@choonsik_mom/BART-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0

https://westshine-data-analysis.tistory.com/152

 

 

[논문리뷰] BERT 논문 리뷰

자, 오늘은 X:AI Seminar 2024에서 진행한 BERT 논문 리뷰를 가져왔습니다.해당 논문은 2019년에 발표되어 ELMO, GPT-1의 모델과 비교를 하면서 얘기를 시사하고 있습니다. 논문 : BERT, Pre-training of Deep Bidire

dangingsu.tistory.com

728x90
반응형