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), ...
왜 미래를 가려야 하는가?
- 생성 시점의 현실 반영: "나는 영화를"까지만 생성했다면, "재미있게"는 아직 존재하지 않습니다.
- 정보 누수 방지: 미래를 볼 수 있다면 정답을 미리 보고 맞추는 꼴이므로 학습이 의미 없습니다.
- 자기회귀 특성: GPT는 한 단어씩 순서대로 생성합니다. t시점의 출력이 t+1시점의 입력이 됩니다.
사전학습 — “다음 단어 예측”의 힘
레이블 없이 언어를 배운다
입력: "오늘 날씨가 정말" → 정답: "좋다"
입력: "인공지능 기술이" → 정답: "발전하고"
입력: "대한민국의 수도는" → 정답: "서울이다"
자기지도학습(Self-supervised Learning) : 별도의 레이블(긍정/부정 등)이 필요 없이, 텍스트 자체가 학습 데이터
사전학습에서 무엇을 배우는가?
문법 (Syntax)
"나는 학교에 ___" → "간다" (동사가 올 자리)
다음 단어를 정확히 예측하기 위한 문법 규칙 학습
의미 (Semantics)
"오늘 저녁은 맛있는 ___ 를 먹었다" → "파스타" (음식 카테고리)
빈칸에 올 수 있는 단어의 의미적 범위를 학습
세상 지식 (World Knowledge)
"대한민국의 수도는 ___" → "서울"
수많은 텍스트에 반복 등장하는 사실 정보도 가중치에 암묵적으로 저장
추론 능력 (Reasoning)
"비가 오면 우산을 ___ " → "챙긴다" (인과 추론)
모델이 커지면 논리적 추론 가능
스케일링 법칙(Scaling Law)
2020년 OpenAI가 발견한 경험적 법칙:
모델 성능 ∝ (모델 크기)^a × (데이터 양)^b × (연산량)^c
- 성능 향상을 예측 가능하게 만듦
- 복잡한 아키텍처 변경보다 단순 스케일업이 효과적
- 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) | 학습 없이 즉시 사용 |
'AI Agent > 텍스트 분석과 LLM' 카테고리의 다른 글
| 7. Transformer — Attention Is All You Need (0) | 2026.07.09 |
|---|---|
| 6. 텍스트 분석을 위한 딥러닝 기초 (1) | 2026.06.30 |
| 5. 단어 임베딩 — Word2Vec (0) | 2026.06.24 |
| 4. 텍스트 분류 — 긍정/부정 자동 판단 (0) | 2026.06.09 |
| 2. 텍스트 전처리(Text Preprocessing) (0) | 2026.05.26 |