Attention in Transformers, Step-by-Step (3Blue1Brown)
3Blue1Brown | Grant Sanderson (Lesson), Justin Sun (Text) | 2024-04-07 Video + Interactive Guide | 4,214 words
핵심 Takeaways
시각적 직관
-
Ambiguity Problem: “mole”의 3가지 의미 (동물, 화학단위, 피부병변) → Embedding 단계에선 문맥 없음 → Attention이 주변 정보로 업데이트
-
Context Integration:
- “The animal didn’t cross… because it was tired”
- “it”의 의미는 “animal”과의 관계에서만 결정됨
핵심 통찰 (3가지)
-
Attention은 정보 이동(Information Routing)
- 각 토큰이 다른 토큰의 정보를 얼마나 가져올 것인가
- Softmax 가중치 = 정보 흐름의 비율
-
Masking의 필요성
- 자동회귀(Autoregressive) 생성: 미래 토큰을 모르는 상태에서 예측
- 미래 위치를 -∞로 마스크 → softmax 후 0
-
Parameter 수의 현실성
- GPT-3: 96 head × 96 layer × 6.3M = ~58B parameters
- 전체 175B의 1/3만 attention 담당
- Feed-forward가 대부분 파라미터 차지
상세 설명
Motivating Examples (문제 정의)
예시 1: 다중 의미 단어
"American shrew mole" → 동물
"One mole of CO₂" → 몰(단위)
"Take a biopsy of mole" → 피부 병변
문제: 임베딩 단계에서는 lookup table처럼 동작 → 문맥 정보 없음
해결: Attention 블록
- 각 토큰의 임베딩을 주변 정보로 업데이트
- “mole”을 수식하는 이웃(shrew, one, biopsy)를 보고 의미 조정
예시 2: Context-dependent 변환
"Eiffel tower" → 구체적: "에펠탑"을 인코드
"Miniature tower" → 구체적: "작은 탑"으로 업데이트
중요한 발견: 정보는 큰 거리에서도 전파됨 예: 미스터리 소설 전체 → 마지막 “was” 토큰이 범인 정보 보유
Attention Pattern 계산
Step 1: Query, Key, Value 생성
Query = Embedding × W^Q (512D → 64D per head)
Key = Embedding × W^K (512D → 64D per head)
Value = Embedding × W^V (512D → 64D per head)
직관:
- Query: “나는 무엇을 찾고 있는가?”
- Key: “나는 (응답 관점에서) 무엇인가?”
- Value: “나는 실제로 무엇인가?” (전달할 정보)
Step 2: Attention Scores
Scores[i,j] = Query[i] · Key[j]^T
높은 dot product = 높은 alignment = 높은 관련성
예시 (형용사-명사 패턴):
- fluffy의 key는 creature의 query와 잘 정렬
- the의 key는 creature의 query와 정렬 안 됨
Step 3: 정규화 및 Softmax
weights = softmax(Scores / √d_k)
- ÷√d_k: numerical stability (d_k = 64 → √64 = 8)
- Softmax: 각 행의 합 = 1.0 (확률 분포)
중요: 행(row) 단위로 softmax 적용
- 각 Query 위치가 모든 Key 위치에 대해 정규화된 가중치 받음
Step 4: Value 가중합
Output[i] = Σ_j (weights[i,j] × Value[j])
- fluffy, blue의 가중치가 높음 → 값이 creature에 크게 기여
- 다른 단어들의 가중치는 낮음 → 약하게 기여
Masking (자동회귀 생성의 핵심)
문제
모델이 학습할 때 각 위치에서 다음 토큰 예측
Input sequence: A fluffy blue creature roamed the verdant forest
Position: 1 2 3 4 5 6 7 8
학습 목표:
- Pos 1: A → 다음이 fluffy?
- Pos 2: A fluffy → 다음이 blue?
- Pos 3: A fluffy blue → 다음이 creature?
그런데 미래 정보를 알면?
Pos 1에서 position 8의 "forest"를 보면
→ 다음이 "fluffy"임을 쉽게 유추 가능
→ 이는 학습이 아니라 치팅!
해결: Masking (Causal Masking)
미래 위치(j > i)의 score를 -∞로 설정
↓
softmax(-∞) = 0
↓
Output이 미래 정보 받지 않음
중요한 점:
- 학습 중에만 masking 적용 (효율성)
- 생성(inference) 중에는 미래 없음 (자동회귀)
Multi-Head Attention (병렬 표현학습)
구조
Input (512D)
├─ Head 1 (64D 부분공간)
├─ Head 2 (64D 부분공간)
├─ ...
└─ Head 8 (64D 부분공간)
↓
Concatenate (512D)
↓
Linear W^O
↓
Output (512D)
각 헤드의 역할
GPT-3 분석 예시:
- Head A: 문법적 의존성 (주어-술어)
- Head B: 의미적 관계 (상위-하위 개념)
- Head C: 구조적 역할 (전치사 관계)
→ 8개 헤드가 8개 다른 “필터”로 작동
병렬화의 핵심
8 heads × 96 layers = 768 독립 계산 단위
GPU에서 parallel execution 가능
Parameter 카운팅 (현실성 검증)
Single Head Parameters
W^Q: 512 × 64 = 32,768 params
W^K: 512 × 64 = 32,768 params
W^V (factored):
- Down-projection: 512 × 64 = 32,768
- Up-projection: 64 × 512 = 32,768
W^O (shared): 512 × 512 = 262,144 (모든 헤드 공유)
────────────────────────────
Total per head: ~1.6M (한 헤드만)
Full Layer (96 heads, 1 layer)
1.6M × 96 = 154M per layer
154M × 96 layers = ~15B parameters in attention
+ Feed-forward layers: ~43B
────────────────────────────
Attention: 58B / 175B ≈ 33%
Attention 행렬의 특성
복잡도
- Time: O(n² × d_k) - 모든 토큰 쌍 비교
- Space: O(n²) - attention 행렬 저장
- n = 2000일 때: 4M 개 원소 (메모리/계산 병목)
최근 개선
- Sparse Attention: 일부 위치만 계산 (Big Bird)
- Linear Attention: 근사 (Linformer)
- Local Attention: 윈도우 기반 (처음 512 + 마지막 512)
ABCD 학습 목표
Understand (이해)
- A: IT 교육 준비 중인 전문가 (운영 경험 있음)
- B: 시각적/직관적으로 attention의 정보 흐름을 설명 가능
- C: 임의의 시퀀스 (“The cat sat on mat” 등) 제시
- D: 최소 3가지 다른 설명 방식 (Query-Key-Value, Information Routing, Weight Distribution)
Apply (적용)
- A: 모델 선택/구성 담당자
- B: 주어진 시퀀스 길이에 최적의 masking 전략 설계
- C: 한국어 처리 모델, max_seq_length = 512, VRAM = 8GB
- D: Attention 메모리 계산 및 최적화 방안 제시
Analyze (분석)
- A: Transformer 모델 성능 최적화 전문가
- B: Multi-head가 실제로 다양한 표현을 학습하는지 검증
- C: 학습된 attention weight 행렬들
- D: 헤드별 특화 패턴 식별 및 불필요한 헤드 발견
교육 설계 강점
3Blue1Brown 스타일의 장점
-
시각화: 정적 다이어그램보다 애니메이션
-
진행 순서:
- 문제(ambiguity) 제시
- 직관적 해결(정보 이동)
- 수학적 공식화
- 실제 implementation
-
Scaffolding: 간단한 예(fluffy creature) → 복잡한 예(미스터리 소설)
한국 교육 적용 시 고려사항
- 영어 문법(주어 뒤 술어)과 한국어(동사/형용사 문장 뒤)의 차이
- “것” 관형사절 등 복잡한 구조에서 attention 패턴 설명
관련 문서
- why-multihead-self-attention-works: 실증적 분석 (10+1 insights)
- the-illustrated-transformer: 전체 아키텍처
- self-attention: 이론적 기초
- masking-attention: Causal masking 상세
- 3blue1brown-methodology: 3B1B의 교육 방법론
교육학 노트: 이 자료는 “수학을 먼저 배운 후 직관을 얻는” 전통적 순서를 반전시킴. 직관 → 예시 → 수학 → 코드 순서로 구성하여 성인 학습자(특히 산업 경험자)에게 높은 효과.