Attention Is All You Need는 순환·합성곱 없이 어텐션을 중심으로 구성한 Transformer를 제안한 논문이다. 이 글에서는 원 논문의 기본 모델을 기준으로 입력 임베딩부터 출력 확률까지 흐름을 정리한다.
Self-Attention은 같은 시퀀스의 위치들을 직접 연결한다. Multi-Head Attention은 서로 다른 학습 투영을 사용해 여러 표현 공간에서 정보를 모은다. Self-Attention 자체가 이 논문에서 처음 제안된 것은 아니다.
또한, Self-Attention을 기반으로 한 병렬 연산이 가능해짐에 따라, 순차적 처리의 한계를 극복하고 훨씬 빠른 학습이 가능해졌다.
이로 인해 트랜스포머 모델은 NLP 분야에서 새로운 패러다임을 제시한 혁신적인 논문으로 평가된다.
https://papers.nips.cc/paper_files/paper/2017/hash/3f5ee243547dee91fbd053c1c4a845aa-Abstract.html
Attention is All you Need
Requests for name changes in the electronic proceedings will be accepted with no questions asked. However name changes may cause bibliographic tracking issues. Authors are asked to consider this carefully and discuss it with their co-authors prior to reque
papers.nips.cc
단어
1. 차원 인덱스 : 한 단어의 임베딩 벡터 안에서 각 요소가 차지하는 위치 번호.
1. 기존 RNN / LSTM의 한계
1. Long-term dependency problem
RNN은 이전 hidden state에 의존하므로 먼 위치 사이의 정보가 여러 계산 단계를 거친다. LSTM은 이 문제를 완화하지만 순차 의존성은 남는다. Self-Attention은 위치 사이의 경로를 짧게 만들어 장거리 의존성 학습을 돕는다.
2. 병렬 처리의 어려움
길이 N인 시퀀스의 RNN 계산에는 시점 간 순차 의존성이 있다. 이는 N번의 별도 학습을 한다는 뜻은 아니다. Transformer는 학습 중 위치별 계산을 병렬화하기 쉽지만, 자기회귀 생성은 다음 토큰을 순서대로 생성한다.
2. Model Architecture

2-1. Embedding
기본 모델에서 토큰 임베딩은 512차원이다. 배치의 입력 형태는 [batch_size, sequence_length, 512]로 볼 수 있고 길이가 다른 문장은 패딩과 마스크로 처리한다. 위치 정보가 없는 Self-Attention만으로는 순서를 충분히 표현할 수 없어 위치 인코딩을 더한다.
2-2. Positional encoding

Embedding에서 봤듯이 임베딩만으로는 문장에 쓰인 단어의 순서를 알지 못한다. 그래서 단어의 위치 정보를 벡터에 더해주고자 도입한 기술이 Positional Encoding이다.
PE(pos, 2i) = sin(pos / 10000^(2i/d_model)), PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model)). pos는 토큰 위치, i는 차원 쌍의 인덱스다. d_model=512이면 i는 0부터 255까지이고 실제 좌표는 2i와 2i+1이다.
Transformer model에서 sin/cos함수를 사용한 이유는 다음과 같다.
| 주기성 | 사인/코사인은 주기적인 함수라서, 상대 위치 간 패턴을 쉽게 잡을 수 있음 |
| 상대 거리 표현 | 어떤 위치 간의 차이가 일정하면 유사한 패턴을 가짐 (거리 유지) |
| 학습 불필요 | 이 위치 인코딩은 고정 값이라 별도로 학습할 필요 없음 (학습 파라미터 아님) |
| 멀티스케일 표현 | 차원 인덱스가 클수록 긴 주기, 작을수록 짧은 주기를 가지므로 다양한 길이의 문맥 표현 가능 |
2-2-1. Sin/Cos함수는 주기함수이기 때문에 위치 값이 겹치면 의미도 중복되는 것 아닐까?
d_model을 고정하면 i가 커질수록 분모가 커지고 주기가 길어진다. 짝수 좌표에는 sin, 홀수 좌표에는 cos를 쓴다. d_model 자체는 임베딩의 폭으로, 토큰 개수와 다른 개념이다.



한 좌표의 값이 같다고 전체 위치 벡터가 같다는 뜻은 아니다. 서로 다른 주기의 좌표를 함께 사용해 위치를 표현한다. 이것이 임의로 긴 문장에서의 정확도까지 보장하지는 않는다.
512차원이라는 이유로 입력이 512토큰으로 제한되거나 위치 인코딩이 그 지점에서 한 바퀴 도는 것은 아니다. 처리 가능한 길이는 구현·학습 설정·메모리 등에 달려 있다.
2-3. Encoder Stack

원 논문의 인코더는 같은 구조의 블록 6개를 쌓는다. 각 블록의 파라미터는 별개다. 각 하위층에는 잔차 연결과 LayerNorm을 적용하며, 원 논문은 LayerNorm(x + Sublayer(x)) 순서다.
2-3-1. Scaled Dot-Product Attention
Multi Head attention에 들어가기 앞서 Attention Mechanism에 대해 알아보자.

Self-Attention에서 Q=XW_Q, K=XW_K, V=XW_V다. Q는 조회 기준, K는 비교 대상, V는 가중합할 정보이며 모두 학습 가능한 투영으로 만들어진다. d_k는 query와 key의 차원이다.
계산 순서
예를 들어 토큰 4개, 한 헤드의 차원 64이면 QKᵀ는 [4,64] × [64,4] = [4,4] 점수 행렬이다.
2. Attention score을 $\sqrt{d_{k}}$ 로 나눈 후 Softmax 함수를 적용시켜 현재 계산하는 단어와 다른 나머지 단어가 서로 얼마나 중요하게 생각하는지를 나타낸 Attention score를 생성함
- 하필 $\sqrt{d_{k}}$(차원)으로 나눈 이유 : 차원이 커질수록 내적값이 커지기 때문에 값이 터지면서 Softmax에 들어가 0, 1처럼 극단적으로 나오는 것을 방지하기 위해서. 스케일링을 해주는 것.
성분의 평균이 0, 분산이 1이고 서로 독립이라고 가정하면 내적의 분산은 d_k다. √d_k로 나누면 분산 규모를 조절해 softmax의 기울기가 지나치게 작아지는 현상을 완화한다.
softmax로 정규화한 가중치 행렬에 V를 곱하면 각 위치의 출력 벡터가 된다. 출력은 유사도 점수 자체가 아니라 value들의 가중합이다.
2-3-2. Multi-Head Attention

기본 모델은 8개 헤드를 사용한다. 각 헤드는 별도의 W_Q, W_K, W_V로 투영한 Q·K·V에 어텐션을 적용한다. 64차원인 각 헤드의 출력 8개를 이어 붙인 뒤 W_O로 다시 투영한다. 점수 행렬을 그대로 합치는 것은 아니다.
결론적으로 나오는 벡터는 (문장 수, 단어 갯수, 512)형태의 행렬로 나오게 된다. [batch_size, sequence_len, d_model]
2-3-3. Feed Forward

행 벡터 표기로 FFN(x)=ReLU(xW1+b1)W2+b2다. 기본 모델은 W1이 [512,2048], W2가 [2048,512]여서 512→2048→512로 변환한다. 같은 FFN을 각 위치에 독립적으로 적용한다.
이후 ReLU를 적용시켜주는데, 선형 or 비선형 함수를 적용시키는 이유는 그냥 편향만 더하게 되면 정보 가공의 의미가 없고 단지 고정값만 더해주기 때문에 숫자만 무거워지게 된다. 또한 비선형 함수를 추가해준 이유는 선형 함 수를 두번이고 세번이고 계속 쌓아봤자 선형함수를 한번 거치는것과 똑같다. 즉 선형끼리만 쌓으면 쌓는 의미가 없기 때문에 ReLU를 추가해서 비선형성을 추가해준것이다.
원 논문은 FFN의 활성화 함수로 ReLU를 사용한다. 특정 활성화 함수가 역사적으로 선택된 이유를 논문 밖의 추측으로 단정하지 않는다.
2-4. Decoder Stack
2-4-1. Masked Multi-Head Self-Attention

미래 위치의 어텐션 점수를 softmax 전에 −∞로 마스킹하여 해당 가중치를 0으로 만든다.
즉 미래 단어에 대해서는 -∞로 마스킹처리하면 Softmax에 들어가면 무조건 0으로 처리되기 때문에 값을 반영하지 않게 된다.
학습 시 정답 출력은 한 칸 이동한 상태로 디코더에 들어간다. causal mask와 함께 사용하면 다음 토큰을 예측할 때 정답 미래 토큰을 볼 수 없다. 생성 단위는 글자 하나가 아니라 토크나이저가 정의한 토큰이다.
2-4-2. Encoder–Decoder Attention
디코더의 query가 인코더 출력에서 만든 key와 value를 참조하여 입력 문장의 정보를 모은다. 이 교차 어텐션 뒤에 FFN이 이어지고 각 하위층에 잔차 연결과 정규화를 적용한다.
2-5. Linear + Softmax
디코더 출력 [길이,512]를 어휘 수 크기로 선형 투영하고 softmax로 다음 토큰의 확률 분포를 만든다. 실제 선택은 greedy, beam search 등 디코딩 방식에 따라 달라지며 항상 최댓값 하나만 고르는 것은 아니다.
토큰의 입력 임베딩과 문맥을 반영한 hidden state는 구분해야 한다. 같은 토큰·같은 위치의 입력 임베딩은 뒤 토큰을 덧붙였다는 이유로 달라지지 않는다. 인코더의 양방향 표현과 디코더의 causal 표현도 서로 다르다.
3. Transformer의 장점 & 한계점
장점
1. 병렬 처리 가능
Transformer는 학습 시 위치 간 순차 의존성을 줄여 병렬화하기 쉽다. RNN도 배치 등의 병렬화는 가능하며, Transformer의 자기회귀 추론은 여전히 순차 생성이다.
2. 장거리 의존성 학습의 개선
Self-Attention은 먼 위치를 직접 연결해 장거리 의존성 학습을 돕는다. 문장이 아무리 길어도 정보를 잃지 않는다는 보장은 아니다.
3. 의미 표현력 & 이해력 상승
Attention mechanism을 활용하여 각 단어가 문장 내에서 어떤 의미인지, 어떤 역할을 하는지 더욱 정확하게 파악할 수 있다.
4. 구조의 확장성과 범용성
트랜스포머 모델은 인코더-디코더 구조를 자유롭게 확장할 수 있어 BERT, GPT 등 다양한 모델로 발전할 수 있었고 자연어처리 분야 뿐만 아니라 이미지, 영상, 음성처리 분야에서까지 사용할 수 있는 모델이다.
한계점
1. 문장 길이에 따른 연산량 증가
일반적인 전체 Self-Attention은 길이 N에 대해 N×N 점수 행렬을 만든다. 표현 차원을 포함하면 연산량은 O(N²d)이며 길이에 따른 메모리 부담도 커진다.
2. 위치 정보가 필요함
순서 정보는 위치 인코딩 등으로 제공해야 한다. BERT를 단순히 “동시 해석력 부족을 해결하기 위해 나온 모델”로 설명하는 것은 부정확하다.
3. 데이터와 학습 설정의 영향
성능은 데이터의 양·질과 학습 설정에 영향을 받는다. 다만 원 Transformer 논문은 번역 작업을 다루며, “사전 학습이 없으면 성능이 낮다”를 모든 Transformer에 일반화할 수는 없다.
2026-09-09 보완: 원 논문에 맞춰 위치 인코딩, 어텐션과 행렬 차원 설명을 수정했습니다. 편집 과정에 AI 보조를 사용했습니다. 참고: Vaswani et al., Attention Is All You Need, 3장.