AI Agent/텍스트 분석과 LLM

8. GPT 모델 — 사전학습, 파인튜닝, 프롬프트

427paul 2026. 7. 15. 22:47

Encoder vs Decoder — BERT와 GPT의 갈림길

핵심 차이: Attention의 방향

BERT (Encoder) — 양방향: 모든 단어가 모든 단어를 참조

"나는  영화를  [MASK]  봤다"
  ↕     ↕       ↕      ↕      ← 전후 모든 방향으로 참조
→ "봤다"를 보고 [MASK] = "재미있게"를 맞출 수 있음
→ 미래 단어("봤다")도 참조 가능!

BERT는 문장의 일부를 [MASK]로 가리고 주변 문맥을 보고 맞추는 방식으로 학습

앞뒤 단어를 모두 볼 수 있으므로 문장을 이해하는 데 강함

하지만 텍스트를 순차적으로 생성하는 데는 적합하지 않음.

GPT (Decoder) — 단방향: 왼쪽(과거)만 참조

"나는  영화를  재미있게"
  →     →       →      ???    ← 왼쪽만 참조, 오른쪽은 못 봄
                         ↓
                       "봤다"   ← 다음 단어를 예측

GPT는 왼쪽에서 오른쪽으로 한 단어씩 생성

 

구분 BERT (Encoder) GPT (Decoder)
Attention 방향 양방향 (Bi-directional) 단방향 (Left-to-right)
사전학습 방식 빈칸 맞추기 (Masked LM) 다음 단어 예측 (Causal LM)
강점 문장 이해, 분류, 정보 추출 텍스트 생성, 대화, 요약
약점 텍스트 생성 불가 양방향 이해가 약함
대표 활용 감성 분석, QA, 개체명 인식 챗봇, 코드 생성, 번역
현재 주류 특정 과제 파인튜닝 ✅ 범용 AI (ChatGPT, Claude)

GPT의 구조 — Decoder-only Transformer

입력: "나는 영화를 재미있게"
       ↓
  ┌──────────────────────────────────┐
  │  Token Embedding                  │  ← 단어 → 벡터
  │  + Position Embedding             │  ← 위치 정보
  └──────────────────────────────────┘
       ↓
  ┌──────────────────────────────────┐
  │  ★Masked★ Multi-Head Attention   │  ← **미래를 가리고 Attention**
  │       + Add & LayerNorm          │
  │                                  │
  │  Feed-Forward Network            │  ← 비선형 변환
  │       + Add & LayerNorm          │
  └──────────────────────────────────┘
       ↓  × N layers (12~96층)
  ┌──────────────────────────────────┐
  │  Linear (d_model → vocab_size)   │  ← 벡터 → 어휘별 점수
  │  Softmax                         │  ← 점수 → 어휘 전체에 대한 확률 분포
  └──────────────────────────────────┘
       ↓
  다음 단어 확률 분포
  "봤다"(0.35), "갔다"(0.12), "했다"(0.08), ...

왜 미래를 가려야 하는가?

  1. 생성 시점의 현실 반영: "나는 영화를"까지만 생성했다면, "재미있게"는 아직 존재하지 않습니다.
  2. 정보 누수 방지: 미래를 볼 수 있다면 정답을 미리 보고 맞추는 꼴이므로 학습이 의미 없습니다.
  3. 자기회귀 특성: GPT는 한 단어씩 순서대로 생성합니다. t시점의 출력이 t+1시점의 입력이 됩니다.

사전학습 — “다음 단어 예측”의 힘

레이블 없이 언어를 배운다

입력:  "오늘 날씨가 정말"     →  정답: "좋다"
입력:  "인공지능 기술이"       →  정답: "발전하고"
입력:  "대한민국의 수도는"      →  정답: "서울이다"

자기지도학습(Self-supervised Learning) : 별도의 레이블(긍정/부정 등)이 필요 없이, 텍스트 자체가 학습 데이터

사전학습에서 무엇을 배우는가?

문법 (Syntax)

"나는 학교에 ___"  →  "간다" (동사가 올 자리)

다음 단어를 정확히 예측하기 위한 문법 규칙 학습

의미 (Semantics)

"오늘 저녁은 맛있는 ___ 를 먹었다"  →  "파스타" (음식 카테고리)

빈칸에 올 수 있는 단어의 의미적 범위를 학습

세상 지식 (World Knowledge)

"대한민국의 수도는 ___"  →  "서울"

수많은 텍스트에 반복 등장하는 사실 정보도 가중치에 암묵적으로 저장

추론 능력 (Reasoning)

"비가 오면 우산을 ___ "  →  "챙긴다" (인과 추론)

모델이 커지면 논리적 추론 가능

스케일링 법칙(Scaling Law)

2020년 OpenAI가 발견한 경험적 법칙:

모델 성능 ∝ (모델 크기)^a × (데이터 양)^b × (연산량)^c
  1. 성능 향상을 예측 가능하게 만듦
  2. 복잡한 아키텍처 변경보다 단순 스케일업이 효과적
  3. GPT-3 이후 "거대 모델" 경쟁의 이론적 근거

자기회귀 생성 — GPT가 텍스트를 만드는 방법

한 단어씩 순차적으로 생성

자기회귀(Autoregressive) 생성 : 한 단어씩 생성하며, 생성된 단어를 다시 입력에 추가

Step 1: 입력 "나는"                    → 선택: "영화를"
Step 2: 입력 "나는 영화를"              → 선택: "재미있게"
Step 3: 입력 "나는 영화를 재미있게"      → 선택: "봤다"
Step 4: 입력 "나는 영화를 재미있게 봤다"  → 선택: [종료]

최종: "나는 영화를 재미있게 봤다"

확률 분포에서 단어를 선택하는 방법

Greedy — 항상 1등 선택

"봤다"(0.35), "갔다"(0.20), "했다"(0.15) → "봤다" 선택
장점: 안정적 / 단점: 반복적이고 지루함

Temperature Sampling — 확률 분포의 뾰족함을 조절

Temperature=0.3 → 분포가 뾰족 → 1등 단어 위주 (안전)
Temperature=0.7 → 적당한 다양성 (일반 추천값)
Temperature=1.5 → 분포가 평평 → 다양하지만 엉뚱할 수 있음

Top-k — 상위 k개에서만 선택

Top-k=3: "봤다", "갔다", "했다" → 이 3개에서만 샘플링

Top-p (Nucleus) — 누적 확률 p까지의 단어에서 선택

Top-p=0.7: "봤다"(0.35) + "갔다"(0.20) + "했다"(0.15) = 0.70 → 이 3개에서 샘플링

 

용도 temperature top_p 특징
코드 생성 0.2 0.9 정확성 중시
일반 대화 0.7 0.9 균형
창작 글쓰기 1.0 0.95 다양성 중시

세 가지 패러다임 — NLP 방법론의 진화

Feature Engineering : 사람이 특성을 직접 설계

Pre-train + Fine-tune : 대규모 사전학습 + 미세조정

Prompt Engineering(GPT-3 이후) : 질문(프롬프트)만으로 과제 수행

Prompt Engineering

Zero-shot, Few-shot, Chain-of-Thought

Zero-shot — 예시 없이:

다음 리뷰의 감성을 긍정/부정 중 하나로 판단하세요.
리뷰: 이 영화 정말 재미있다
감성:

Few-shot — 예시 포함:

리뷰: 최고의 영화! → 긍정
리뷰: 지루하다 → 부정
리뷰: 배우 연기가 좋았다 →

Chain-of-Thought — 단계별 사고 유도:

리뷰를 분석하고, 단계별로 이유를 설명한 뒤 감성을 판단하세요.
리뷰: 스토리는 좋은데 연기가 아쉽다

분석:
1. "스토리는 좋은데" → 스토리에 대한 긍정
2. "연기가 아쉽다" → 연기에 대한 부정
3. 긍정과 부정이 섞여 있음
결론: 중립

프롬프트 설계 원칙

원칙 설명 예시
명확한 지시 원하는 것을 구체적으로 "긍정/부정/중립 중 하나로 분류"
역할 부여 전문가 역할 설정 "당신은 영화 평론가입니다"
예시 제공 입출력 패턴 보여주기 Few-shot 예시 2~3개
출력 형식 포맷 지정 "JSON으로 응답하세요"
단계별 사고 CoT 유도 "단계별로 분석하세요"

프롬프트 vs 파인튜닝

기준 프롬프트 파인튜닝
구현 난이도 쉬움 어려움
필요 데이터 0~수십 건 수백~수만 건
비용 API 호출 GPU 학습
일관성 낮음 높음
최고 성능 좋지만 한계 과제 특화 시 최고

방법론 선택 가이드

상황 추천 방법 이유
데이터 적고 빠르게 TF-IDF + ML 단순하고 충분한 성능
순서가 중요 LSTM 단어 순서 반영
최고 성능 필요 BERT/GPT 파인튜닝 사전학습의 힘
데이터 없음 프롬프트 (GPT API) 학습 없이 즉시 사용