49일차 자연어처리3 BART, T5

차지예·2025년 7월 22일

생성AI

목록 보기
44/56
post-thumbnail

✅ 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 비교

항목BARTT5
프리트레이닝 목적훼손된 문장 복원다양한 태스크 동시 학습
입력 구조단순한 입력작업 지시가 포함된 입력
출력 구조디코더 생성디코더 생성

0개의 댓글