Attention은 시퀀스 내 토큰 간 가중 의존성을 동적으로 학습하는 메커니즘으로, Bahdanau(2014) additive → Luong multiplicative → scaled dot-product → multi-head → Flash Attention 진화를 거쳐 모든 현대 LLM의 코어가 되었다.
매 핵심
1. Attention 일반 공식
attention(Q, K, V) = softmax(score(Q, K)) · V
score 함수가 변형의 핵심: additive vs multiplicative vs dot-product.
출력은 V의 가중합, 가중치는 Q-K 유사도.
2. Bahdanau (Additive, 2014)
score(q, k) = vᵀ tanh(W_q q + W_k k)
MLP 기반 — 학습 파라미터 많음.
작은 차원에서 더 풍부한 매칭.
seq2seq 번역 (RNN encoder-decoder) 출시.
3. Luong (Multiplicative, 2015)
score(q, k) = qᵀ W k (general)
score(q, k) = qᵀ k (dot)
행렬 곱 1번 — 빠름.
GPU 친화적.
4. Scaled Dot-Product (Vaswani 2017, Transformer)
Attention(Q,K,V) = softmax(QKᵀ / √d_k) V
√d_k로 나눠 큰 차원 softmax saturation 방지.
행렬 연산 — 병렬 GPU 최적.
이게 Transformer의 핵심.
5. Multi-Head Attention
MHA(Q,K,V) = Concat(head_1, ..., head_h) W^O
head_i = Attention(Q W^Q_i, K W^K_i, V W^V_i)
h개의 head가 서로 다른 sub-space에서 attention.
표현력 ↑ — 한 head는 syntactic, 다른 head는 semantic.
표준 h = 8, 16, 32, 64 (모델 크기 의존).
6. Self vs Cross Attention
Self: Q=K=V (같은 시퀀스) — encoder, decoder masked.
Cross: Q from decoder, K=V from encoder — encoder-decoder bridge.