Encoder
- Encoder : source 문장의 정보를 압축
- Encoder는 주어진 문장을 분류하는 Task에서 좋은 성능을 보임. (ex. 감정 분석)
- Masked Language Modeling : 문장 중 빈칸을 임의로 만들어 해당 앞/뒤 문맥에서 어떤 단어가 와야 가장 적절한지를 맞추는 방식으로 학습 -> 양방향(Bidirectional) 성격
- 예) 우리는 지금 어렵지만 열심히 “공부를” 하는 중이야. ○ 예) 우리는 지금 어렵지만 열심히 [MASK] 하는 중이야.
Decoder
- Decoder : source 문장의 정보를 받아서 target 문장을 생성
- Decoder는 다음 단어를 생성하는 task에서 좋은 성능을 보임. (ex. 요약, 번역)
- Causal Language Modeling : 문장의 흐름대로, “앞” 의 문맥이 주어졌을 때 다음으로 오는 단어를 맞추는 방식으로 학습 -> 단방향(Unidirectional) 성격
- 예) 우리는 어렵지만 열심히 “공부를” ○ 예) 우리는 어렵지만 열심히 ______
Encoder-Decoder
- Encoder와 Decoder를 동시에 사용하는 구조
- Sequence-To-Sequence task 수행에 특화된 모델 구조
- Sequence-To-Sequence는 source 문장을 target 문장으로 변환하는 작업 - Encoder-Decoder는 source 문장과 target 문장의 속성이 다르고 이를 변환하는 task에서 좋은 성능 (ex. 요약, 번역)
- source 문장과 target 문장의 길이가 다르더라도 이 부분을 반영하여 task 를 수행 가능
- Encoder-Decoder 구조를 사용해 번역 task를 해결하는 예시
- Source sequence : this is a sentence
- Target sequence : 이것은 문장이다
BART
(Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension)
- Encoder-Decoder 구조의 효과적인 활용을 위해 새로운 학습 방식 제안
- Encoder-Decoder 구조는 생성을 위해 Fine-Tuned 될 때 특히 효과적. - 임의로 Noise를 다양한 방식으로 추가하여 원본 문장을 손상시키고 복원시킴으로써 Pretraining 진행
- 원본 문장 중 연속된 여러 개의 단어 쌍(span)을 mask 하는 등 5개의 다양한 Noise 추가 방식 제안.
- Noise 를 추가하는 Pretraining 방식으로 포괄적인 task 에도 잘 작동 - BART 구조
- BART는 Transformer와 같은 구조를 사용
- 입력 문장에 다양한 방식의 Noise를 추가. - BART Pre-training
- BART는 총 5개의 다양한 유형의 noise 추가 방법을 사용.
- 다양한 task 에도 적용 가능.
1) Token Masking
- BERT(Devlin et al., 2019)와 같이 임의의 token 을 샘플링하여 [MASK] token 으로 대체한 문장을 Encoder에 입력
- Decoder에서는 원래 문장을 생성
2) Token Deletion
- Token Masking과는 대조적으로, 임의의 token 을 원본 문장에서 삭제한 뒤 Encoder에 입력
- Decoder에서는 원래 문장을 생성
3) Text Infilling
- 각각의 Token을 Masking 하지 않고, 연속된 0 ~ N개의 token으로 이루어진 다수의 span을 마스킹 한 뒤, Encoder에 입력
- Decoder에서는 원래 문장을 생성
4) Sentence Permutation
- 문서를 마침표 (.)를 기준으로 여러 문장들로 나누고, 이 문장들은 임의의 순서로 섞은 뒤, Encoder에 입력.
- Decoder에서는 원래 문장을 생성
5) Document Rotation
- 전체 문서에서 임의로 선택된 token이 시작 token이 되도록 회전한 문장을 Encoder에 입력.
- Decoder에서는 원래 문장을 생성 - BART Fine-tuning
- Source 문장을 Encoder에 넣고, Decoder가 target 문장을 생성하는 방식으로 Fine-tuning 진행
- 생성 Task에서 Fine-tuning 될 때 특히 효과적
- 기계번역에서는 Pre-training 학습하지 않은 언어도 번역할 수 있도록 Randomly Initialized Encoder 를 추가하는 새로운 방식 제시. - BART로 풀 수 있는 downstream task
1) Sequence Classification Tasks
- 문장의 class 을 분류하는 task ○ 예) 감정분석 (NSMC)
- 동일한 입력이 Encoder 및 Decoder에 입력되고 최종 Decoder 토큰이 Classifier를 통과하여 Classification
- BERT에서는 [CLS] 토큰으로 분류를 수행하지만, 이에 Decoder 가 추가되기에, 토큰에 대한 Representation이 전체 입력으로부터 Decoder 에 반영될 수 있도록 Decoder 에 토큰 을 추가
2) Token Classification Tasks
- 문장의 각 토큰을 분류하는 task ○ 예) 개체명 인식(NER : Named Entity Recognition), 품사 구분(POS : Part-Of-Speech Tagging)
- 전체 문서를 Encoder와 Decoder에 입력하고 Decoder 의 마지막 layer 결과를 각 단어에 대한 Representation으로 사용해서 토큰을 분류.
3) Sequence Generation Tasks
- 주어진 문장의 이후 토큰을 생성하는 task ○ 예) 요약
- Autoregressive 구조의 Decoder를 가지고 있기 때문에 질의 응답, 요약과 같은 Sequence 생성 task 수행가능
- Encoder에 Input Sequence가 입력되면, Decoder는 출력을 Autoregressive하게 생성
4) Machine Translation
- Source 언어로 작성된 문장을 Target 언어로 번역하는 task ○ 예) “Hi” 영어 문장을 한국어로 번역하면 “안녕”
- 기존에 학습되지 않은 언어도 번역 가능하도록 Randomly Initialized Encoder 도입
- 새로운 언어로 학습된 새로운 Encoder를 추가
- 기존 BART 모델과는 별도의 Vocab를 사용 가능. - BART 실험 결과
- Encoder-Decoder 구조로 인해, 요약, 번역과 같은 seq2seq task 에 대해 높은 성능
- 5개의 Noise 추가 방식 중, 전반적으로 Text-Infilling 이 가장 효과적.
- Token Deletion 또는 Masking 사용시 성능 향상.
- Deletion는 생성 Task(요약, QA)에서 Masking을 능가
- 다중 문장 Task(예 : SQuAD 1.1, CNN/DM)에서는 Text-Infilling 과 Sentence Shuffling 을 결합하는 방식이 가장 좋은 성능.
- Document Rotation이나 Sentence Shuffling 방식은 단독으로 사용했을 때 상대적으로 효과가 적음.
- 단순한 Task 인 ELI5를 제외한 모든 작업에서 Text-Infilling를 사용하는 BART 모델이 좋은 성과를 보임.
- Text-Infilling 과 Sentence Shuffling 을 결합한 방식에서 최고의 성능을 달성하는 Task 도 존재
'Study > 자연언어처리 NLP' 카테고리의 다른 글
NLP 대회 전략 (0) | 2025.01.17 |
---|---|
BERT 이후의 모델 (0) | 2025.01.17 |
Decoder Model (GPT) (0) | 2025.01.17 |
Encoder Model (BERT) (0) | 2025.01.17 |
자연어 처리 Task와 파이프라인 (2) | 2025.01.15 |