Ch.7 Attention — AI의 집중력

Q, K, V — 질문하고, 검색하고, 읽다

Query, Key, Value의 역할과 비유를 이해한다셀프 어텐션의 수학적 공식을 읽을 수 있다어텐션이 선형대수 + 확률 + 미적분의 집대성임을 설명한다

모든 수학이 여기서 합쳐진다

벡터, 행렬 곱셈, Softmax, 역전파 — 지금까지 배운 모든 것이 트랜스포머의 심장, '어텐션 메커니즘'에서 하나로 합쳐집니다.

AI가 '문맥을 이해한다'는 것은 수학적으로 어떤 뜻일까?

Q, K, V — AI가 '무엇을 찾을지(Q), 무엇이 관련 있는지(K), 어떤 정보를 가져올지(V)'를 행렬로 표현합니다.


article

핵심 내용

선형대수 + 확률 + 미적분이 트랜스포머의 심장에서 만납니다

Q = X × W_Q: 행렬 곱셈 (선형대수)

K = X × W_K: 행렬 곱셈 (선형대수)

V = X × W_V: 행렬 곱셈 (선형대수)

Score = Q × Kᵀ: 유사도 계산 (선형대수)

Score /= √d_k: 스케일링 (제곱근)

Weights = softmax(): 확률 분포 (소프트맥스)

Output = Weights × V: 가중 합 (선형대수)

역전파로 W 업데이트: 기울기 전파 (미적분)

도서관에서 책을 찾는 과정으로 이해합시다

Attention(Q, K, V) = softmax\left(Q × K^T/√d_k\right) × V

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 이해 완료!

key

핵심 용어

🔍

Query (Q)

토큰이 무엇을 찾고 있는가? — 검색어

🗂️

Key (K)

이 토큰이 무엇을 제공하는가? — 색인

📖

Value (V)

이 토큰의 실제 정보는 무엇인가? — 책 내용

📝

**헤드 A**

문법 관계 (주어 ↔ 동사)

🔗

**헤드 B**

대명사 참조 ('그것' → '고양이')

📍

**헤드 C**

위치적 근접성

🚀

GPT-3

96개의 어텐션 헤드를 동시에 사용!

edit_note

정리 노트

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) + 미적분(역전파)의 집대성

image

시각 자료

다이어그램: py-scene-qkv
check_circle

핵심 정리

  • 1Q=검색어, K=색인, V=내용 (도서관 비유)
  • 2Attention = softmax(Q×Kᵀ/√d_k) × V
  • 3어텐션 = 선형대수 + 확률 + 미적분의 집대성

퀴즈와 인터랙션으로 더 깊이 학습하세요

play_circle인터랙티브 레슨 시작