Ch.7 Attention — AI의 집중력
Q, K, V — 질문하고, 검색하고, 읽다
모든 수학이 여기서 합쳐진다
벡터, 행렬 곱셈, Softmax, 역전파 — 지금까지 배운 모든 것이 트랜스포머의 심장, '어텐션 메커니즘'에서 하나로 합쳐집니다.
AI가 '문맥을 이해한다'는 것은 수학적으로 어떤 뜻일까?
Q, K, V — AI가 '무엇을 찾을지(Q), 무엇이 관련 있는지(K), 어떤 정보를 가져올지(V)'를 행렬로 표현합니다.
핵심 내용
선형대수 + 확률 + 미적분이 트랜스포머의 심장에서 만납니다
Q = X × W_Q: 행렬 곱셈 (선형대수)
K = X × W_K: 행렬 곱셈 (선형대수)
V = X × W_V: 행렬 곱셈 (선형대수)
Score = Q × Kᵀ: 유사도 계산 (선형대수)
Score /= √d_k: 스케일링 (제곱근)
Weights = softmax(): 확률 분포 (소프트맥스)
Output = Weights × V: 가중 합 (선형대수)
역전파로 W 업데이트: 기울기 전파 (미적분)
도서관에서 책을 찾는 과정으로 이해합시다
Query와 Key의 유사도를 [[행렬]] 곱으로 계산하고, √d_k로 스케일링 후 [[소프트맥스]]로 확률 분포를 만들고, 그 가중치로 Value를 합산합니다.
Q, K, V 행렬로 어텐션 점수를 직접 계산해봅시다
import math
# === Q, K, V 어텐션 직접 계산 ===
# 3개 토큰, 차원 d_k = 4
Q = [[1, 0, 1, 0], [0, 1, 0, 1], [1, 1, 0, 0]]
K = [[1, 1, 0, 0], [0, 0, 1, 1], [1, 0, 0, 1]]
V = [[0.1, 0.2], [0.3, 0.4], [0.5, 0.6]]
d_k = len(Q[0]) # 차원 수
# 1단계: Q × Kᵀ (유사도 점수)
scores = []
for i in range(len(Q)):
row = []
for j in range(len(K)):
dot = sum(Q[i][k] * K[j][k] for k in range(d_k))
row.append(dot / math.sqrt(d_k)) # 스케일링
scores.append(row)
print("스케일된 점수 (Q×Kᵀ/√d_k):")
for i, row in enumerate(scores):
print(f" 토큰{i}: {[round(v, 3) for v in row]}")
# 2단계: Softmax (확률 분포)
def softmax(xs):
mx = max(xs)
exps = [math.exp(x - mx) for x in xs]
s = sum(exps)
return [e / s for e in exps]
weights = [softmax(row) for row in scores]
print("\n어텐션 가중치 (softmax):")
for i, w in enumerate(weights):
print(f" 토큰{i}: {[round(v, 3) for v in w]}")
# 3단계: Weights × V (가중 합)
output = []
for i in range(len(weights)):
out = [0.0] * len(V[0])
for j in range(len(V)):
for k in range(len(V[0])):
out[k] += weights[i][j] * V[j][k]
output.append([round(v, 4) for v in out])
print("\n어텐션 출력:")
for i, o in enumerate(output):
print(f" 토큰{i}: {o}")셀프 어텐션에서 Query(Q)와 Key(K)를 행렬 곱하는 이유는?
어텐션의 수학적 공식에는 선형대수(행렬 곱), 확률(소프트맥스), 미적분(역전파)이 모두 사용된다.
어텐션 공식에서 √d_k로 나누는 이유는 무엇인가요?
다음 어텐션 공식의 빈칸을 채우세요. Attention(Q, K, V) = softmax(Q × Kᵀ / √d_k) × ___
softmax(QKᵀ/√d_k) × ___
Q, K, V는 각각 서로 다른 가중치 행렬 (W_Q, W_K, W_V)로 생성된다.
Q, K, V 이해 완료!
핵심 용어
Query (Q)
이 토큰이 무엇을 찾고 있는가? — 검색어
Key (K)
이 토큰이 무엇을 제공하는가? — 색인
Value (V)
이 토큰의 실제 정보는 무엇인가? — 책 내용
**헤드 A**
문법 관계 (주어 ↔ 동사)
**헤드 B**
대명사 참조 ('그것' → '고양이')
**헤드 C**
위치적 근접성
GPT-3
96개의 어텐션 헤드를 동시에 사용!
정리 노트
Q, K, V — AI가 문맥을 이해하는 메커니즘
Q, K, V 역할 (도서관 비유)
- Query (Q)
- 이 토큰이 무엇을 찾고 있는가 — 검색어
- Key (K)
- 이 토큰이 무엇을 제공하는가 — 색인
- Value (V)
- 이 토큰의 실제 정보 — 책 내용
어텐션 공식
- 유사도 계산
- Score = Q × Kᵀ (행렬 곱으로 관련성 측정)
- 스케일링
- Score / √d_k (차원이 클수록 값이 커지는 것 방지)
- 확률 변환
- Softmax → 0~1 사이의 가중치로 변환
- 정보 추출
- 가중치 × V → 관련 정보를 가중 합산
멀티헤드 어텐션
- 여러 관점
- 각 헤드가 문법, 의미, 위치 등 다른 관계를 포착
- GPT-3
- 96개 어텐션 헤드를 동시에 사용
어텐션 = 선형대수(행렬 곱) + 확률(Softmax) + 미적분(역전파)의 집대성
시각 자료
핵심 정리
- 1Q=검색어, K=색인, V=내용 (도서관 비유)
- 2Attention = softmax(Q×Kᵀ/√d_k) × V
- 3어텐션 = 선형대수 + 확률 + 미적분의 집대성
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작