seq2seq에서 당연하게 쓰이던 recurrence와 convolution을 전부 제거하고 attention만으로 encoder-decoder를
구성한 Transformer 논문. WMT14 English→German BLEU 28.4(앙상블 포함 기존 최고 대비 +2.0 이상),
English→French 41.8(단일 모델 신기록)을 8×P100 3.5일 학습으로 달성했다 — 기존 SOTA들의 수분의 1 비용.
RNN의 근본 문제는 ht가 ht−1에 의존하는 순차성 — 시퀀스 내부 병렬화가 불가능하다.
Transformer는 전체 시퀀스를 병렬로 계산하고, 임의의 두 위치 사이 경로 길이도 O(1)로 만든다.
핵심 부품 3개: Scaled Dot-Product Attention(dk1의 이유를 분산으로 증명),
Multi-Head Attention(저차원 subspace h개로 쪼개 병렬 attention), Sinusoidal Positional Encoding
(상대 위치가 선형 변환이 됨을 증명).
재밌는 각주: 저자 8명이 전원 equal contribution, 나열 순서는 랜덤이다. “RNN을 self-attention으로
대체하자”는 Jakob의 제안, scaled dot-product/multi-head/파라미터 없는 위치 표현은 Noam의 제안이라고
기여를 명시해뒀다.
이후 BERT, GPT, ViT, diffusion의 UNet 속 attention까지 전부 이 논문의 부품을 쓴다.
리뷰는 논문 섹션 구성(1~7장)을 그대로 따라간다.
[1] Introduction & [2] Background
RNN(LSTM, GRU)은 sequence modeling의 확고한 SOTA였다. 하지만 본질적인 순차성 때문에 학습 샘플
내부에서 병렬화가 불가능하고, 이는 (메모리 제약으로 batch도 못 키우는) 긴 시퀀스에서 치명적이다.
factorization trick이나 conditional computation이 효율을 개선했지만 순차성이라는 근본 제약은 그대로다.
attention은 이미 seq2seq의 필수 부품이었지만[Bahdanau], 거의 모든 경우 RNN에 붙어서 쓰였다.
순차 계산을 줄이려는 선행 시도들은 전부 CNN 기반이다 — Extended Neural GPU, ByteNet, ConvS2S.
이들은 임의의 두 위치를 연결하는 연산 수가 거리에 따라 증가한다 (ConvS2S 선형, ByteNet 로그).
멀리 떨어진 위치의 의존성을 배우기 어렵다.
Transformer는 이걸 상수로 줄인다. 대신 attention 가중평균 때문에 유효 해상도가 줄어드는
비용이 있는데, 이는 Multi-Head Attention으로 상쇄한다. (3.2.2의 복선)
self-attention(intra-attention) 자체는 독해, 요약, 함의, 문장 표현 학습에서 이미 쓰이고 있었다.
선언: “Transformer는 sequence-aligned RNN이나 convolution 없이 전적으로 self-attention만으로
입출력 표현을 계산하는 최초의 transduction 모델이다.”
[3] Model Architecture — 부품 하나하나 뜯어보기
3.1 Encoder and Decoder Stacks
전체는 표준 encoder-decoder: encoder가 (x1,...,xn)→z, decoder가 z에서
(y1,...,ym)을 auto-regressive하게 (이전 출력을 입력에 붙여가며) 생성한다.
Encoder: 동일 layer N=6 스택, 각 layer는 2개 sub-layer — ① multi-head self-attention,
② position-wise FFN.
Decoder: N=6 스택, 각 layer는 3개 sub-layer — ① masked self-attention,
② encoder 출력에 대한 multi-head attention(cross), ③ FFN.
masking + “출력 embedding을 한 칸 offset”의 조합으로 위치 i의 예측이 i 미만의 출력에만
의존하게 보장한다.
모든 sub-layer에 residual connection + LayerNorm (Post-LN):
output=LayerNorm(x+Sublayer(x))
residual을 위해 모든 sub-layer와 embedding의 출력 차원을 dmodel=512로 통일.
참고: 이후 연구들(GPT-2 등)은 LayerNorm을 앞으로 옮긴 Pre-LN을 쓴다 — 깊은 모델에서 더 안정적.
원조는 Post-LN이다.
3.2 Attention
attention의 일반 정의: query와 (key, value) 쌍들을 출력으로 매핑하는 함수. 출력은 value들의
가중합이고, 가중치는 query와 각 key의 호환성 함수로 계산된다.
logit 스케일이 커지면 softmax는 one-hot에 수렴한다. si≈1인 곳은 si(1−si)≈0,
si≈0인 곳도 0 — Jacobian 전체가 붕괴해서 attention 가중치로 gradient가 흐르지 않는다.
scaling은 이 포화 영역 진입을 막는 장치다. ■
3.2.2 Multi-Head Attention
dmodel 차원으로 attention 한 번을 하는 대신, 학습된 projection으로 h번 쪼개서 병렬로
attention 하고 concat 후 다시 projection 한다.
왜 쪼개는가 (논문 문장 그대로): “multi-head attention은 서로 다른 위치의 서로 다른 representation
subspace 정보를 동시에 참조하게 한다. 단일 head면 averaging이 이걸 방해한다.” — 2장에서 예고한
“유효 해상도 손실”의 해결책.
계산량은 공짜: head당 차원을 1/h로 줄였으므로 전체 비용은 full-dimension 단일 head와 같다.
파라미터를 세보면 MHA 하나당 WQ,WK,WV,WO 합쳐 4dmodel2=4×5122≈1.05M개.
3.2.3 Attention이 쓰이는 3곳
위치
Q
K, V
Mask
역할
Encoder self-attn
이전 encoder layer
이전 encoder layer
✗
입력의 모든 위치 참조
Decoder self-attn
이전 decoder layer
이전 decoder layer
✓
현재까지의 출력만 참조 (auto-regressive 보존)
Encoder-decoder attn
decoder
encoder 최종 출력
✗
기존 seq2seq attention의 역할
masking 구현: softmax 입력에서 불법 연결에 해당하는 값을 −∞로 설정 (softmax 후 정확히 0).
3.3 Position-wise Feed-Forward Networks
각 위치에 독립적으로, 동일하게 적용되는 2-layer MLP (ReLU):
FFN(x)=max(0,xW1+b1)W2+b2
dff=2048 (dmodel의 4배 — 이후 표준이 되는 비율). “kernel size 1짜리 convolution 두 번”으로
볼 수도 있다고 논문이 명시. 파라미터는 layer당 2×512×2048≈2.1M개 —
사실 attention보다 FFN이 파라미터를 더 먹는다.
3.4 Embeddings and Softmax
입력 embedding, 출력 embedding, softmax 직전 linear의 weight 3벌을 공유한다 (Press & Wolf).
embedding으로 쓸 때는 dmodel을 곱한다.
3.5 Positional Encoding
attention은 순서 개념이 없으므로 위치 정보를 embedding에 더해준다. 주파수가 기하수열
(2π→10000⋅2π)을 이루는 sin/cos:
Mi(k)는 pos와 무관하게 offset k에만 의존하는 회전 행렬. 모든 차원 쌍의 블록을 대각으로
쌓으면 PEpos+k=M(k)⋅PEpos. ■
“위치 = 회전” 아이디어를 끝까지 밀면 요즘 LLM의 RoPE(Rotary Position Embedding)가 된다.
학습된 positional embedding과 비교 실험 결과 거의 동일했다 (Table 3 row E). sinusoidal을 고른 건
학습보다 긴 시퀀스로의 외삽 가능성 때문.
3.6 (보충) 파라미터가 어디에 있는지 세보기 — base 65M의 내역
부품
개수
파라미터/개
소계
MHA
18개 (enc self 6 + dec self 6 + cross 6)
4×5122≈1.05M
≈ 18.9M
FFN
12개 (enc 6 + dec 6)
2×512×2048≈2.1M
≈ 25.2M
Embedding (공유 1벌)
1개
37000×512≈18.9M
≈ 18.9M
LayerNorm 등
-
-
1M 미만
인상과 달리 **attention(29%)보다 FFN(39%)이 크고 embedding도 29%**다. “Transformer의 몸통은 FFN”이라는
사실이 이후 스케일링/MoE 연구(FFN만 sparse하게 키우는)의 배경이 된다. weight 공유(3.4)가 없었다면
embedding 계열만 +38M이었을 것.
3.7 (보충) Inference — auto-regressive 디코딩
학습은 정답 전체 + masking으로 병렬(teacher forcing)이지만 생성은 한 토큰씩 순차다.
이전 스텝의 K/V는 변하지 않으므로 캐싱(KV cache) 하면 스텝당 새 토큰의 Q만 계산하면 된다 —
지금 LLM inference의 KV cache가 이 구조에서 나왔다.
즉 “학습은 병렬, 생성은 순차”라는 비대칭이 남는다. 논문도 결론에서 “생성을 덜 순차적으로 만드는 것”을
연구 목표로 명시한다.
[4] Why Self-Attention
self-attention을 택한 이유를 3가지 기준으로 정당화한다: ① layer당 계산 복잡도, ② 병렬화 가능성
(필요한 최소 순차 연산 수), ③ 장거리 의존성의 최대 경로 길이 — “순방향/역방향 신호가 지나야 하는
경로가 짧을수록 장거리 의존성 학습이 쉽다”. (논문 Table 1)
Layer Type
Complexity per Layer
Sequential Ops
Maximum Path Length
Self-Attention
O(n2⋅d)
O(1)
O(1)
Recurrent
O(n⋅d2)
O(n)
O(n)
Convolutional
O(k⋅n⋅d2)
O(1)
O(logkn)
Self-Attention (restricted)
O(r⋅n⋅d)
O(1)
O(n/r)
계산 복잡도: n<d일 때 self-attention이 RNN보다 빠르다 — word-piece/BPE 문장 표현은 대부분
n<d라 실제로 유리하다.
n이 아주 길면 주변 r개만 보는 restricted self-attention(O(n/r) 경로)을 future work로 언급 —
O(n2) 병목은 이후 sparse/linear attention, FlashAttention 연구를 낳는다.
convolution 관련 디테일: k<n인 conv 하나는 모든 쌍을 연결하지 못해 O(n/k) 또는 dilated로
O(logkn)개 layer가 필요하고, separable convolution까지 낮춰도(O(k⋅n⋅d+n⋅d2))
self-attention + FFN 조합과 같은 복잡도다 — “그게 바로 우리가 택한 접근”이라는 깔끔한 마무리.
부수 효과: attention 분포를 시각화하면 head별로 다른 역할(구문/의미 구조 관련 행동)이 관찰된다 —
해석 가능성 (부록의 시각화).
5.3 Optimizer: Adam (β1=0.9, β2=0.98, ϵ=10−9) + 커스텀 스케줄:
lrate=dmodel−0.5⋅min(step−0.5,step⋅warmup−1.5)
warmup=4000 step까지 선형 증가 후 step−0.5로 감소. 두 구간이 step=warmup에서 정확히
만나도록 지수가 맞춰져 있다. (Post-LN Transformer는 초반 lr이 크면 발산하기 쉬워 이 warmup이 사실상
필수임이 이후 연구로 밝혀진다)
5.4 Regularization 3종:
Residual Dropout (Pdrop=0.1): 각 sub-layer 출력에(residual 더하기 전), 그리고
embedding + PE 합에도.
Label Smoothing (ϵls=0.1): perplexity는 나빠지지만(모델이 더 unsure해짐)
accuracy와 BLEU는 좋아진다.
(6.1에서 추가되는 실전 기법) Checkpoint Averaging: base는 10분 간격 저장된 마지막 5개,
big은 마지막 20개 체크포인트의 weight 평균으로 평가. beam search는 beam 4, length penalty
α=0.6, 최대 출력 길이 입력+50 (조기 종료 가능).
[6] Results
6.1 Machine Translation (WMT14, newstest2014)
Model
EN→DE BLEU
EN→FR BLEU
학습 비용 (FLOPs, EN-DE)
ByteNet
23.75
-
-
GNMT + RL
24.6
39.92
2.3×1019
ConvS2S
25.16
40.46
9.6×1018
MoE
26.03
40.56
2.0×1019
GNMT + RL Ensemble
26.30
41.16
1.8×1020
ConvS2S Ensemble
26.36
41.29
7.7×1019
Transformer (base)
27.3
38.1
3.3×1018
Transformer (big)
28.4
41.8
2.3×1019
big이 앙상블 포함 전부를 EN→DE에서 +2.0 BLEU 이상으로 이긴다. base조차 이전의 모든 발표 모델과
앙상블을 이기면서 학습 비용은 경쟁 모델 대비 수분의 1.
EN→FR big은 이전 SOTA의 1/4 미만 비용으로 단일 모델 신기록. (이 세팅만 Pdrop=0.1 사용)
6.2 Model Variations (Table 3 — newstest2013 dev)
base에서 하나씩 바꿔가며 측정 (checkpoint averaging 없이 beam search만). 주요 행 발췌:
변경
PPL (dev)
BLEU (dev)
params
base (h=8)
4.92
25.8
65M
(A) h=1
5.29
24.9
(A) h=4
5.00
25.5
(A) h=16
4.91
25.8
(A) h=32
5.01
25.4
(B) dk=16
5.16
25.1
58M
(C) N=2
6.11
23.7
36M
(C) dmodel=1024
4.66
26.0
168M
(C) dff=4096
4.75
26.2
90M
(D) Pdrop=0.0
5.77
24.6
(D) ϵls=0.0
4.67
25.3
(E) learned positional embedding
4.92
25.7
big
4.33
26.4
213M
행별 해석 (논문 서술 순서대로):
(A) head 수: 1개면 BLEU −0.9, 32개도 하락 — h=8∼16이 sweet spot. “여러 subspace를
동시에 본다”는 가설의 정량 근거.
(B) dk 축소: 품질 하락 — “호환성 판정은 쉽지 않은 문제고, dot product보다 정교한 호환성
함수가 이득일 수도 있다” 는 논문의 솔직한 해석.
(C) 크기: 클수록 좋다. dropout은 overfitting 방지에 매우 유효.
(D) label smoothing 제거: PPL은 가장 좋아지는데(4.67) BLEU는 떨어진다(25.3) —
“PPL과 생성 품질은 다른 지표”임을 보여주는 유명한 행.
(E): sinusoidal ≈ learned. 외삽 기대 때문에 sinusoidal 선택.
6.3 English Constituency Parsing — 일반화 확인
출력이 입력보다 훨씬 길고 강한 구조 제약이 있는 태스크. 4-layer, dmodel=1024 Transformer를
task 특화 튜닝 거의 없이(dropout/lr/beam만 dev에서 선택, 나머지는 EN-DE base 그대로) 적용했다.
추론은 beam 21, α=0.3, 최대 출력 입력+300. (논문 Table 4 발췌)
Parser
학습
WSJ 23 F1
Vinyals & Kaiser (2014)
WSJ only
88.3
Petrov (2006) / Zhu (2013)
WSJ only
90.4
Dyer RNNG (2016)
WSJ only
91.7
Transformer (4layers)
WSJ only (40K 문장)
91.3
McClosky (2006) / Vinyals
semi-supervised
92.1
Transformer (4 layers)
semi-supervised (17M 문장)
92.7
WSJ 40K 문장만으로 BerkeleyParser를 이긴다 — “RNN seq2seq는 소규모 데이터에서 SOTA를 못 냈던”
영역에서의 일반화 증거. semi-supervised에서는 RNNG 계열 빼고 전부 이겼다.
[7] Conclusion + 개인적인 생각
논문의 결론: 최초의 순수 attention transduction 모델로 번역 SOTA. future work로 텍스트 외
모달리티(이미지/오디오/비디오), local/restricted attention, 생성의 비순차화를 꼽는다 —
셋 다 이후 10년의 연구 지도가 됐다 (ViT/멀티모달, sparse attention/FlashAttention, non-autoregressive
생성과 speculative decoding). 코드는 tensor2tensor로 공개.
diffusion model UNet 안의 attention block도 이 논문의 multi-head attention이다
(Diffusion 계보 ② 리뷰의 32/16/8 해상도
attention이 정확히 이 부품).
word2vec 계보의 관점에서 보면,
정적 임베딩의 한계(문맥 의존 의미)를 이 구조 위의 사전학습(BERT/GPT)이 이어받았다.
지금 다시 읽으면 복선이 많다: ablation의 “키우면 좋아진다”는 scaling law로, sinusoidal PE의
회전 행렬 해석은 RoPE로, restricted attention 언급은 sparse attention 연구로 이어졌다.
수식 자체는 어렵지 않다(행렬곱 + softmax가 사실상 전부). 이 논문의 진짜 가치는
“왜 이렇게 설계했는가”에 대한 논증 — scaling의 분산 논리, path length 비교, head 분리의
subspace 논리 — 이라고 생각한다. 결과 표보다 Section 4를 곱씹는 것을 추천.
Reference
[1] J. Ba et al., “Layer Normalization” (2016)
[2] D. Bahdanau et al., “Neural Machine Translation by Jointly Learning to Align and Translate” (2015)
[9] J. Gehring et al., “Convolutional Sequence to Sequence Learning” (ConvS2S, 2017)
[11] K. He et al., “Deep Residual Learning for Image Recognition” (ResNet, 2016)
[18] N. Kalchbrenner et al., “Neural Machine Translation in Linear Time” (ByteNet, 2017)
[30] O. Press & L. Wolf, “Using the Output Embedding to Improve Language Models” (2017)
[31] R. Sennrich et al., “Neural Machine Translation of Rare Words with Subword Units” (BPE, 2016)
[36] C. Szegedy et al., “Rethinking the Inception Architecture for Computer Vision” (Label Smoothing, 2016)
[38] Y. Wu et al., “Google’s Neural Machine Translation System” (GNMT, 2016)