Ch.7 Attention — AI의 집중력

어텐션 히트맵 시각화

어텐션 가중치를 히트맵으로 시각화하고 해석한다멀티헤드 어텐션에서 각 헤드의 역할 차이를 설명한다실제 LLM(GPT-4)에서 어텐션이 어떻게 작동하는지 이해한다

AI가 어디를 '바라보는지' 볼 수 있다면?

어텐션 가중치를 색깔로 표현하면 — 진한 색은 강한 주목, 연한 색은 약한 주목 — AI의 '시선'이 보입니다.

'The cat sat on the mat'에서 'cat'은 어떤 단어에 주목할까?

어텐션 히트맵 — AI의 집중 패턴을 시각적으로 확인하는 도구입니다.


article

핵심 내용

어텐션 가중치를 시각화해봅시다

import numpy as np

# === 어텐션 히트맵 시각화 ===

tokens = ["The", "cat", "sat", "on", "the", "mat"]

# 가상의 어텐션 가중치
attention = np.array([
    [0.10, 0.05, 0.02, 0.01, 0.80, 0.02],  # "The" → "the"
    [0.05, 0.30, 0.10, 0.05, 0.05, 0.45],  # "cat" → "mat"
    [0.02, 0.40, 0.20, 0.10, 0.03, 0.25],  # "sat" → "cat"
    [0.05, 0.05, 0.10, 0.15, 0.05, 0.60],  # "on" → "mat"
    [0.75, 0.05, 0.03, 0.02, 0.10, 0.05],  # "the" → "The"
    [0.02, 0.35, 0.05, 0.50, 0.03, 0.05],  # "mat" → "on"
])

# 히트맵을 텍스트 블록으로 시각화
shade = " ░▒▓█"

print("=== 어텐션 히트맵 ===")
print(f"{"":>6s}", end="")
for t in tokens:
    print(f"{t:>6s}", end="")
print()

for i, token in enumerate(tokens):
    print(f"{token:>6s}", end="")
    for j in range(len(tokens)):
        level = min(4, int(attention[i][j] * 5))
        block = shade[level] * 4
        print(f"  {block}", end="")
    print()

# 가장 강한 연결 표시
print("\n주요 어텐션 연결:")
for i, token in enumerate(tokens):
    j = np.argmax(attention[i])
    print(f"  '{token}' ──({attention[i][j]:.2f})──▶ '{tokens[j]}'")

어텐션 패턴에서 언어의 구조가 보입니다

어텐션 히트맵에서 발견되는 패턴: 'The' ↔ 'the': 같은 단어 참조 (0.80) 'cat' → 'mat': 주어-장소 연결 (0.45) 'sat' → 'cat': 동사-주어 연결 (0.40) 'on' → 'mat': 전치사-목적어 연결 (0.60) → 어텐션이 문법 구조를 자동으로 학습!

GPT-3는 96개의 어텐션 헤드를 동시에 사용합니다

각 헤드가 다른 관계를 포착: 헤드 A: 문법 관계 (주어 ↔ 동사) 헤드 B: 대명사 참조 ('그것' → '고양이') 헤드 C: 위치적 근접성 (인접 토큰) 헤드 D: 구두점 패턴 (문장 경계) 이 모든 것이 행렬 곱셈 + 소프트맥스 + 역전파로 자동 학습됩니다.

'sat'이 'cat'에 높은 어텐션(0.40)을 보이는 이유는?

멀티헤드 어텐션에서 각 헤드는 서로 다른 종류의 관계를 학습한다.

어텐션 히트맵에서 'on'이 'mat'에 높은 가중치(0.60)를 보이는 이유는?

GPT-3는 몇 개의 어텐션 헤드를 사용하나요?

멀티헤드 어텐션의 출력은 각 헤드의 출력을 합산(sum)한 것이다.

Attention 마스터!

edit_note

정리 노트

어텐션 히트맵 — AI의 시선을 시각화하다

히트맵 해석

진한 색
강한 주목 — 두 토큰 사이의 관련성이 높음
연한 색
약한 주목 — 두 토큰 사이의 관련성이 낮음
행(row)
해당 토큰이 다른 토큰들에 배분한 주의 (합=1)

발견되는 패턴

동사→주어
'sat' → 'cat' (0.40) — 문법 관계 포착
전치사→목적어
'on' → 'mat' (0.60) — 구문 구조 포착
같은 단어
'The' ↔ 'the' (0.80) — 동일 단어 참조

멀티헤드의 역할 분화

헤드 A
문법 관계 (주어 ↔ 동사)
헤드 B
대명사 참조 ('그것' → '고양이')
헤드 C
위치적 근접성 (인접 토큰)

어텐션 패턴은 학습 데이터로부터 자동으로 학습되며, 문법 구조를 스스로 발견한다

image

시각 자료

다이어그램: py-scene-positional-enc
check_circle

핵심 정리

  • 1Q(검색어) × Kᵀ(색인) → 유사도 → Softmax → 가중치 × V(내용)
  • 2NumPy로 6단계 셀프 어텐션 직접 구현
  • 3히트맵으로 어텐션 패턴(문법, 의미, 참조) 시각화
  • 4GPT-4: 128개 헤드가 각기 다른 관계를 동시 포착

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

play_circle인터랙티브 레슨 시작