Foundations · NeurIPS 2017

Attention Is All You Need — Transformer

RNN/CNN 없이 어텐션만으로 시퀀스를 모델링한 현대 LLM의 뿌리.

Vaswani, Shazeer, Parmar, Uszkoreit, Jones, Gomez, Kaiser, Polosukhin

attentiontransformerNLParchitecture

1. 핵심 요약

이 논문은 순환/합성곱 없이 트랜스포머(Transformer) 아키텍처를 제안합니다. 병렬 처리가 가능해 학습 속도가 크게 향상되었고, 현존 대형 언어 모델의 표준 뼈대가 되었습니다.

2. 배경 및 문제 제기

2017년 이전 NLP의 주류는 RNN/LSTM이었습니다. 시퀀스를 왼쪽→오른쪽으로 순서대로 처리합니다.

구조적 한계

  • 순차 처리: t번째 상태는 t−1에 의존 → GPU 병렬화 어려움
  • 장거리 의존성: 문장이 길수록 앞 정보가 희미해짐
  • 기울기 소실/폭발: 긴 시퀀스에서 역전파가 불안정

어텐션은 이미 RNN의 보조 기법으로 쓰였지만, 이 논문은 어텐션만으로 전부 대체할 수 있다고 주장합니다.

3. 핵심 아이디어: Self-Attention

각 토큰이 다른 모든 토큰을 얼마나 주목할지 학습합니다. 입력은 세 역할로 투영됩니다.

  • Query (Q): 무엇을 찾는가?
  • Key (K): 무엇을 제공할 수 있는가?
  • Value (V): 실제 내용은 무엇인가?

셀프 어텐션 계산 흐름

토큰을 Query로 고르고, 아래 단계를 따라가면 수식과 같은 계산이 보입니다. (데모용 작은 임베딩)

1. 점수 Q·K

Query와 각 Key의 내적으로 ‘얼마나 관련 있나’ 점수를 만듭니다.

Q = cat
×
K (all)
softmax → V
The
1.18
cat
1.81
sat
1.28
on
0.34
mat
0.34
단계 1→4를 눌러 Q·K → scale → softmax → V 가중합을 따라가세요.
Attention(Q,K,V)=softmax(QKTdk)V\mathrm{Attention}(Q, K, V) = \mathrm{softmax}\left(\frac{QK^{T}}{\sqrt{d_{k}}}\right)V
스케일드 닷-프로덕트 어텐션
스케일드 닷-프로덕트 어텐션수식 상세
기호를 클릭하면 의미를 볼 수 있습니다
단계별 설명
  • d_k로 나누는 이유: 차원이 커질수록 내적이 커져 softmax 기울기가 사라지는 것을 방지
  • 결과: 각 단어가 문장 내 모든 단어의 가중합으로 표현됨

멀티헤드 어텐션

하나의 어텐션이 아니라 h개 헤드를 병렬로 수행합니다. 헤드는 구문·의미·위치 등 서로 다른 관계를 포착합니다.

멀티헤드: 병렬로 다른 관계 보기

같은 문장을 여러 헤드가 동시에 봅니다. 헤드마다 강한 연결이 다릅니다 → Concat 후 Wᴼ로 합칩니다. (설명용 예시 가중치)

Head 1Q=The · 한정사 → 명사
The
0.12
cat
0.58
sat
0.12
on
0.09
mat
0.09
Head 2Q=cat · 주어 → 동사
The
0.10
cat
0.14
sat
0.55
on
0.11
mat
0.10
Head 3Q=sat · 동사 → 전치사
The
0.08
cat
0.12
sat
0.15
on
0.52
mat
0.13
Head 4Q=on · 전치사 → 목적어
The
0.08
cat
0.10
sat
0.12
on
0.15
mat
0.55
head₁…headₕConcat× Wᴼd_model

한 헤드만 쓰면 한 종류의 관계만 봅니다. 여러 헤드를 합치면 구문·의미·위치를 동시에 담을 수 있습니다.

전체 헤드를 나란히 보거나, 하나만 확대해서 비교하세요.
MultiHead(Q,K,V)=Concat(head1,,headh)WO\mathrm{MultiHead}(Q,K,V) = \mathrm{Concat}(\mathrm{head}_1,\ldots,\mathrm{head}_h)W^{O}
멀티헤드 어텐션
멀티헤드 어텐션수식 상세
기호를 클릭하면 의미를 볼 수 있습니다
단계별 설명

4. 아키텍처 구조

Transformer 전체 구조

블록을 클릭하면 역할이 하이라이트됩니다.

Encoder ×N
+ Residual · LayerNorm
+ Residual · LayerNorm
Memory (K, V for decoder)
Decoder ×N
+ Residual · LayerNorm
+ Residual · LayerNorm
+ Residual · LayerNorm
Linear → Softmax → next token
전체 한눈에

왼쪽 Encoder가 원문 전체를 읽고, 오른쪽 Decoder가 번역을 한 토큰씩 생성합니다. 가운데 Cross-Attention으로 Encoder 정보를 끌어옵니다.

블록을 클릭해 Encoder / Masked / Cross / FFN / PE 역할을 확인하세요.

인코더 (Encoder)

N=6개의 동일 레이어. 각 레이어:

  • Multi-Head Self-Attention
  • Position-wise Feed-Forward Network
  • 각 서브레이어 뒤 Residual + LayerNorm

디코더 (Decoder)

N=6 레이어, 서브레이어 3개:

  • Masked Multi-Head Self-Attention (미래 토큰 차단)
  • Multi-Head Cross-Attention (인코더 출력을 K/V로 사용)
  • Position-wise Feed-Forward Network

한 레이어 안: Residual + LayerNorm

Encoder/Decoder 블록은 같은 패턴을 두 번(어텐션→FFN) 반복합니다.

x
skip
Multi-Head AttnF(x)
⊕ add
LayerNorm
out
입력 x

이전 레이어(또는 임베딩+PE)에서 온 벡터.

서브레이어마다 반복되는 Add & Norm 패턴.

포지셔널 인코딩 사인/코사인

차원 i를 바꾸면 파장이 달라집니다. 위치 pos를 옮기며 각 차원이 어떤 값을 갖는지 보세요.

+10-1pos →
sin · dim 0cos · dim 1
위치 4의 PE 벡터 앞 8차원 (데모 d_model=64)
0
1
2
3
4
5
6
7
왜 사인/코사인인가?

낮은 차원은 천천히, 높은 차원은 빠르게 진동합니다. 상대 위치 오프셋을 선형 변환으로 표현하기 쉬운 형태입니다.

차원·위치를 움직이며 사인/코사인 파형을 확인하세요.
PE(pos,2i)=sin ⁣(pos100002i/dmodel),PE(pos,2i+1)=cos ⁣(pos100002i/dmodel)PE_{(pos,2i)}=\sin\!\left(\frac{pos}{10000^{2i/d_{model}}}\right),\quad PE_{(pos,2i+1)}=\cos\!\left(\frac{pos}{10000^{2i/d_{model}}}\right)
포지셔널 인코딩 — 순서 정보를 임베딩에 더함
사인·코사인 포지셔널 인코딩수식 상세
기호를 클릭하면 의미를 볼 수 있습니다
단계별 설명

5. 실험 결과

ModelEN-DE BLEUEN-FR BLEUTraining FLOPs
Prior SOTA (ensemble)26.3041.29
Transformer (base)27.3038.103.3×10¹⁸
Transformer (big)28.4041.802.3×10¹⁹
WMT 2014 번역 결과 (원 논문 표 기반 요약)
  • WMT 2014 영어→독일어에서 기존 대비 2 BLEU 이상 향상
  • 학습 비용은 기존 대비 크게 절감되면서도 성능 우위

6. 의의 및 영향

즉각적 영향

  • NLP의 사실상 표준 아키텍처
  • BERT(2018), GPT-2(2019), T5(2019) 연달아 등장

장기적 영향

  • 이미지(ViT), 오디오, 단백질, 비디오 등으로 확장
  • 수천억 파라미터 LLM의 직접적 기반

7. 한계점

  • 어텐션은 시퀀스 길이 제곱 메모리/연산 → FlashAttention, Linear Attention 등으로 보완
  • 사인 포지셔널 인코딩은 최대 길이에 묶이기 쉬움 → RoPE, ALiBi 등 상대 위치 인코딩으로 발전