Lab Meeting · Paper Review · 2026.10

Attention 메커니즘 리뷰

Scaled dot-product attention이 토큰마다 “어디를 볼지”를 계산하는 방법 — 수식에서 숫자까지

Motivation

왜 Attention인가

RNN encoder–decoder

  • 문장 전체를 고정 길이 벡터 하나에 압축
  • 문장이 길수록 앞부분 정보가 희미해짐
  • 토큰을 순서대로 처리 → 병렬화 어려움

Attention

  • 출력을 만들 때마다 입력 전체를 다시 본다
  • 관련 있는 위치에 큰 가중치 → 장거리 의존성
  • 모든 위치를 행렬 곱 한 번에 → 병렬화

Bahdanau et al., ICLR 2015 (RNN + attention) → Vaswani et al., NeurIPS 2017 (attention만으로 Transformer)

Intuition

Query · Key · Value — 검색으로 이해하기

Query \(q_i\)

지금 토큰이 찾고 있는 것

\( q_i = x_i W_Q \)

Key \(k_j\)

각 토큰이 내건 색인표 — 무엇과 맞는지

\( k_j = x_j W_K \)

Value \(v_j\)

맞았을 때 실제로 가져갈 내용

\( v_j = x_j W_V \)

q와 k가 얼마나 맞는지(내적)를 재고, 그 비율대로 v를 섞는다.

Scaled Dot-Product Attention

수식 한 줄

$$ \mathrm{Attention}(Q,K,V) = \mathrm{softmax}\!\left(\frac{QK^{\top}}{\sqrt{d_k}}\right)V $$

\(QK^{\top}\)

모든 query–key 쌍의 유사도 점수 (n×n)

\(\div\sqrt{d_k}\)

차원이 커져도 점수 크기를 일정하게

softmax

행마다 합이 1인 가중치로

\(\cdot\,V\)

가중치로 Value를 섞은 출력

\( Q, K \in \mathbb{R}^{n\times d_k},\; V \in \mathbb{R}^{n\times d_v} \) — n은 토큰 수 · Vaswani et al., 2017, Eq. (1)

Why \(\sqrt{d_k}\)?

왜 \(\sqrt{d_k}\)로 나누는가

\(q, k\)의 각 성분이 평균 0, 분산 1이고 서로 독립이라면

$$ \mathrm{Var}(q\cdot k) = \sum_{i=1}^{d_k} \mathrm{Var}(q_i k_i) = d_k $$
  • \(d_k = 64\)이면 점수의 표준편차 ≈ 8
  • 큰 점수 → softmax가 한 토큰에 거의 1 → gradient ≈ 0
  • \(\sqrt{d_k}\)로 나누면 분산이 다시 1

데모에서 확인

다음 슬라이드에서 “√dₖ로 나누기”를 끄면 가중치가 한 토큰으로 더 쏠립니다.

Demo · 한 문장에서 attention 가중치 계산하기

“it”은 어디를 볼까 — 단계별로

토큰을 클릭하면 query가 바뀜 · Esc: 컨트롤에서 빠져나오기

Implementation

모든 query를 한 번에 — 행렬 곱

데모와 같은 toy 값의 softmax(QKᵀ/√dₖ) — 행 = query, 열 = key
def attention(Q, K, V, mask=None):
    d_k = Q.size(-1)
    scores = Q @ K.transpose(-2, -1) / math.sqrt(d_k)
    if mask is not None:
        scores = scores.masked_fill(mask == 0, -1e9)
    weights = scores.softmax(dim=-1)
    return weights @ V, weights
  • 데모의 한 행 계산 = 이 행렬의 한 줄
  • 비용 \(O(n^2 d)\) — 긴 시퀀스에서 병목

In Practice

실제 Transformer에서 붙는 것들

Multi-head

h개의 head가 각자 다른 \(W_Q, W_K, W_V\)로 서로 다른 관계를 병렬로 본다

\( \mathrm{Concat}(\mathrm{head}_1,\dots,\mathrm{head}_h)W^O \)

Causal mask

decoder는 미래 토큰의 점수를 \(-\infty\)로 → softmax 후 가중치 0

생성 시 다음 토큰을 미리 보지 않게

Self vs Cross

Self: Q, K, V 모두 같은 시퀀스
Cross: Q는 decoder, K·V는 encoder

번역·멀티모달 모델의 연결 고리

Summary

정리

  • Attention = query와 key의 내적 점수 → softmax 가중치 → value 가중합
  • \(\sqrt{d_k}\) 스케일링은 softmax 포화를 막아 학습을 안정시킨다
  • 전체가 행렬 곱이라 병렬화가 쉽지만, 비용은 \(O(n^2)\)

Bahdanau, Cho, Bengio. Neural Machine Translation by Jointly Learning to Align and Translate. ICLR 2015.

Vaswani et al. Attention Is All You Need. NeurIPS 2017.