개발 창고/AI

GPT(Generative Pretrained Transformer) 기초

Royzero 2025. 8. 26. 22:30
반응형

1. 들어가며

앞 강의에서 BERT를 다뤘습니다. BERT가 문맥 이해(인코더 기반)에 강하다면, **GPT(Generative Pretrained Transformer)**는 **텍스트 생성(디코더 기반)**에 특화된 모델입니다.

GPT는 2018년 OpenAI에서 처음 제안된 이후, 현재의 ChatGPT, GPT-4까지 이어지는 계열의 시작점입니다.
GPT의 강점은 자연스러운 문장 생성다양한 작업에 대한 범용성입니다.


2. GPT의 핵심 아이디어

  1. 사전학습(Pretraining)

    • 대규모 텍스트 데이터로 다음 단어 예측 학습 (Language Modeling)

    • 예:

      "오늘은 날씨가" → 모델은 "맑다", "좋다" 등 확률적으로 다음 단어 예측

  2. 파인튜닝(Fine-tuning)

    • 특정 작업(요약, 번역, QA 등)에 맞춰 추가 학습
  3. 오토리그레시브(Auto-Regressive) 구조

    • 한 번에 한 단어씩 예측하면서 문장을 확장
    • 문맥을 이어가는 데 강점

3. BERT vs GPT

구분 BERT GPT
구조 Transformer Encoder Transformer Decoder
학습 방식 Masked Language Model + NSP Next Token Prediction
강점 문맥 이해 (분류, QA) 문장 생성 (텍스트 생성, 대화)
활용 분야 검색, QA, 분류 챗봇, 소설/기사 생성, 코드 생성

4. GPT 아키텍처

GPT는 Transformer의 디코더 블록을 기반으로 합니다.

  • 마스크드(Self-Attention): 미래 단어를 보지 않고 현재까지 단어만 참고
  • 포지셔널 인코딩: 단어 순서 반영
  • 피드포워드 네트워크: 단어 표현 변환
  • 여러 층을 쌓아 깊은 문맥 이해 및 생성 능력 확보

5. 파이썬 실습: Hugging Face GPT-2로 텍스트 생성

from transformers import GPT2Tokenizer, GPT2LMHeadModel
import torch

# 1. 토크나이저 & 모델 불러오기
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = GPT2LMHeadModel.from_pretrained("gpt2")

# 2. 입력 문장
input_text = "오늘은 정말"
inputs = tokenizer.encode(input_text, return_tensors="pt")

# 3. 텍스트 생성
outputs = model.generate(inputs, max_length=30, num_return_sequences=1, do_sample=True, top_k=50)

# 4. 디코딩
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

예상 출력 예시:

오늘은 정말 좋은 하루였다. 나는 친구와 함께 산책을 하며 이야기를 나누었다.

6. GPT의 활용 분야

  • 챗봇(Chatbot): 대화형 응답
  • 텍스트 생성: 소설, 기사, 마케팅 문구 자동 생성
  • 코드 생성: 프로그래밍 보조 (예: Copilot)
  • 요약/번역: 긴 문서 요약 및 언어 번역

7. 오늘의 정리

  • GPT는 오토리그레시브(Next Token Prediction) 구조를 가진 Transformer 디코더 기반 모델
  • BERT가 "이해"에 강하다면 GPT는 "생성"에 강점
  • Hugging Face의 GPT-2 모델로 간단히 텍스트 생성 실습 가능
반응형