한 줄 요약: RNN 없이 순수 Attention만으로 seq2seq를 구성해도 번역 품질이 더 높고 훨씬 빠르게 학습된다.
왜 Transformer가 필요했나
2017년 이전까지 seq2seq(번역, 요약 등)은 RNN 계열(LSTM, GRU)로 처리했다. 하지만 RNN에는 두 가지 구조적 한계가 있었다.
RNN의 문제
순차 처리: 토큰을 하나씩 처리해야 하므로 병렬화 불가 → 긴 문장일수록 느려짐
장거리 의존성: 50번째 단어가 1번째 단어를 참조하려면 hidden state가 49번 전달되어야 함 → 정보 희석
그래디언트 소실: 역전파 시 긴 체인에서 그래디언트가 사라지거나 폭발
Transformer의 해법
Attention: 모든 토큰 쌍의 관계를 한 번에 직접 계산 → 장거리도 동일한 비용
병렬 처리: 토큰 간 연산에 순서 의존성이 없어 GPU/TPU 활용 극대화
고정 경로: 어떤 두 토큰이든 항상 1-hop으로 정보 교환 → 그래디언트 안정적
전체 구조
Transformer는 Encoder(입력 이해)와 Decoder(출력 생성)로 나뉜다. 번역의 경우 Encoder는 원문 전체를 이해하고, Decoder는 번역문을 한 토큰씩 생성한다. 각 블록은 N번 쌓인다(논문 기본값 N=6).
각 블록의 역할 정리:
Self-Attention: 같은 시퀀스 내 토큰들끼리 서로 참조. "cat"이 "The", "sat", "mat"과 어떤 관계인지 파악.
Masked Self-Attention (Decoder): 아직 생성하지 않은 미래 토큰을 보지 못하도록 마스킹. 자기회귀(autoregressive) 생성을 위해 필수.
Cross-Attention (Decoder만): Decoder가 Encoder의 출력(번역 원문 표현)을 참조. K, V는 Encoder에서 오고, Q는 Decoder 현재 상태.
Feed-Forward: 각 토큰 위치마다 독립적으로 적용되는 2층 MLP(dim → 4×dim → dim). Attention이 "어디서 정보를 가져올지" 결정한다면, FFN은 "그 정보로 무엇을 계산할지" 담당.
Add & LayerNorm: ResNet의 skip connection과 동일 원리 — 그래디언트 흐름 안정화. LayerNorm은 각 토큰의 표현 분포를 정규화.
Positional Encoding: Attention은 순서를 모르므로, sin/cos 함수로 위치 정보를 임베딩에 더해줌. 같은 단어도 문장 위치에 따라 다른 표현을 가짐.
Attention 직접 체험하기
Self-Attention의 핵심은 "모든 토큰이 다른 모든 토큰을 동시에 참조한다"는 것이다. 아래 히트맵에서 선택된 토큰(Query)이 각 토큰(Key)에 얼마나 주의를 기울이는지 확인할 수 있다. 예를 들어 "sat"은 주어인 "cat"과 장소인 "mat"에 높은 attention을 보인다.
Attention 히트맵 (행 = Query, 열 = Key)
* 실제 모델의 attention 패턴을 시각화한 예시입니다
Scaled Dot-Product Attention
Attention의 핵심 아이디어는 Query, Key, Value의 세 역할로 입력을 분리하는 것이다.
Query (Q): "나는 무엇을 찾고 있나?" — 현재 토큰이 던지는 질문
Key (K): "나는 어떤 정보를 갖고 있나?" — 각 토큰이 게시하는 광고판
Value (V): "실제로 가져갈 정보" — Key가 선택되면 전달되는 내용
Q·Kᵀ는 "내 질문이 각 토큰의 광고판과 얼마나 맞는가"를 내적으로 측정한다. 이 점수에 softmax를 적용해 가중치로 만들고, 그 가중치로 V들을 가중 평균하면 "필요한 정보를 적절히 혼합한" 새로운 표현이 된다.
왜 √d_k로 나누나?
Q·Kᵀ의 내적값은 차원 d_k가 클수록 크기가 커진다 (표준편차 ∝ √d_k). 스케일링 없이 softmax에 넣으면 극단적으로 작은 값이 나와서 그래디언트가 거의 0에 가까워진다. √d_k로 나눠 분산을 1로 맞추면 softmax가 적절한 범위에서 동작한다.
Multi-Head: 여러 관점 동시에
단일 Attention 헤드는 하나의 "관점"만 학습한다. 하지만 언어를 이해하려면 동시에 여러 관계를 파악해야 한다 — 문법적 의존성, 의미적 유사성, 위치적 근접성 등. Multi-Head Attention은 h개의 독립적인 Attention을 병렬로 수행하고 결과를 이어붙인다.
각 헤드는 별도의 W^Q, W^K, W^V 행렬을 갖고, d_model 차원 대신 d_model/h 차원에서 동작한다. 계산량은 단일 헤드와 동일하지만 훨씬 풍부한 표현이 가능하다. 논문에서는 h=8 사용.
결과 & 성능
WMT 2014 영어→독일어 번역에서 BLEU 28.4점을 달성해 기존 최고 기록을 2점 이상 뛰어넘었다. 특히 훈련 비용은 기존 최고 모델의 약 1/10이었다. Attention의 병렬성 덕분에 8개 P100 GPU로 3.5일 학습으로 당시 SOTA를 달성했다.
Encoder-Only 파생 모델
Encoder만 사용해 텍스트를 표현 벡터로 변환하는 데 특화.
BERT — 양방향 사전학습, 분류/NER/QA
RoBERTa — BERT 개선, NSP 제거
DeBERTa — 위치 정보 개선
Decoder-Only 파생 모델
Decoder만 사용해 다음 토큰을 예측하는 언어 생성에 특화.
GPT-1/2/3/4 — 대규모 언어 생성
LLaMA, Mistral — 오픈소스 LLM
Claude, Gemini — 대화형 AI
Transformer가 비전에도 쓰이는 이유: 이미지를 16×16 패치로 나누면 "토큰 시퀀스"와 동일하다. ViT(Vision Transformer)는 이 방식으로 ImageNet SOTA를 달성했고, 이후 Stable Diffusion의 U-Net 내부 Attention도, Whisper의 음성 인식도 모두 Transformer 기반이다.
GPT, BERT, T5, ViT, Whisper, Stable Diffusion 등 현대 AI 모델의 거의 전부가 이 구조 위에 세워진다. 2017년 이 논문 하나가 AI 연구의 방향 전체를 바꿨다.