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
수식 한 줄
\(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이고 서로 독립이라면
- \(d_k = 64\)이면 점수의 표준편차 ≈ 8
- 큰 점수 → softmax가 한 토큰에 거의 1 → gradient ≈ 0
- \(\sqrt{d_k}\)로 나누면 분산이 다시 1
데모에서 확인
다음 슬라이드에서 “√dₖ로 나누기”를 끄면 가중치가 한 토큰으로 더 쏠립니다.
Demo · 한 문장에서 attention 가중치 계산하기
“it”은 어디를 볼까 — 단계별로
토큰을 클릭하면 query가 바뀜 · Esc: 컨트롤에서 빠져나오기
Implementation
모든 query를 한 번에 — 행렬 곱
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.