✅ 1. 인코더-디코더 구조 이해하기
🔹 인코더 (예: BERT)
- 문장 이해(NLU) 에 특화됨
- 양방향 문맥을 반영
- 예시 작업: 텍스트 분류, 개체명 인식 등
🔹 디코더 (예: GPT)
- 문장 생성(NLG) 에 특화됨
- 왼쪽 → 오른쪽으로 다음 단어 생성
- 예시 작업: 요약, 번역, 챗봇 응답 등
🔹 인코더-디코더 (예: BART, T5)
- 인코더가 문장을 이해, 디코더가 문장을 생성
- 이해 + 생성 둘 다 가능
- 구조 이름:
Encoder-Decoder, Seq2Seq
✅ 2. BART 모델 이해하기
🔹 BART란?
- BART = Bidirectional + Auto-Regressive Transformers
- Facebook AI가 2020년에 발표
- 자연어 이해 + 생성 모두 강력
🔹 BART의 사전학습 전략
훼손된 문장을 인코더에 넣고 → 디코더에서 원문 복원
* 주요 사전학습 기법
| 기법 | 설명 |
|---|
| Token Masking | 단어 하나를 마스킹 후 복원 |
| Text Infilling | 연속된 단어 구간을 마스킹 |
| Sentence Permutation | 문장 순서를 무작위로 섞고 복원 |
| Document Rotation | 문장의 앞뒤 일부를 잘라내 재배열 |
| Token Deletion | 토큰을 제거하고 복원 (마스크 표시 없이) |
✅ 3. BART 파인튜닝 실습: 뉴스 요약
🔹 실습 목표
- AI Hub 뉴스 데이터를 활용한 한국어 요약
- 모델:
gogamza/kobart-base-v1 (KoBART)
🔹 실습 단계 요약
*데이터 전처리
article_original → 'news'
abstractive → 'summary'
- 리스트 → 문자열로 변환 후 컬럼 추가
* 정수 인코딩 및 마스킹 처리
- 입력:
input_ids
- 디코더 입력:
decoder_input_ids
- 디코더 정답:
labels (PAD는 -100)
예시:
input_ids: [101, ..., 0, 0]
decoder_input_ids: [1, 101, ..., 0]
labels: [101, ..., 1, -100, -100]
* Dataset 클래스 정의
class KoBARTSummaryDataset(tf.keras.utils.Sequence):
def __getitem__(self, idx):
return {
'input_ids': ...,
'decoder_input_ids': ...,
'labels': ...
}
* 모델 선언 및 로딩
from transformers import TFBartForConditionalGeneration, BartTokenizerFast
model = TFBartForConditionalGeneration.from_pretrained('gogamza/kobart-base-v1', from_pt=True)
tokenizer = BartTokenizerFast.from_pretrained('gogamza/kobart-base-v1')
* 학습 구성 및 옵티마이저
lr_schedule = CosineDecay(lr, decay_steps=total_steps)
optimizer = Adam(learning_rate=lr_schedule)
* 학습 루프
with tf.GradientTape() as tape:
outputs = model(batch, training=True)
loss = outputs.loss
gradients = tape.gradient(loss, model.trainable_variables)
optimizer.apply_gradients(zip(gradients, model.trainable_variables))
✅ 4. T5 모델 파인튜닝
🔹 개념
- T5 = Text-to-Text Transfer Transformer
- Google에서 발표
- 모든 NLP 작업을 텍스트 입력 → 텍스트 출력 형태로 통일함
* 예시
- 번역: "translate English to German: Hello" → "Hallo"
- 요약: "summarize: 긴 뉴스 기사" → "한 줄 요약"
🔹 T5 vs. BART 비교
| 항목 | BART | T5 |
|---|
| 프리트레이닝 목적 | 훼손된 문장 복원 | 다양한 태스크 동시 학습 |
| 입력 구조 | 단순한 입력 | 작업 지시가 포함된 입력 |
| 출력 구조 | 디코더 생성 | 디코더 생성 |