문장을 순서대로 읽지 않고도, 문장 속 순서를 이해할 수 있을까.
Transformer의 혁신은 기억력이 더 좋은 독자를 만드는 데만 있지 않았다. 앞 단어의 계산이 끝날 때까지 다음 단어가 기다려야 한다는 전제를 버리는 데 있었다. 다만 기다림을 없앤 대가도 있다. 모든 단어를 연결할수록, 그 관계를 계산하는 비용이 커진다.
이 글은 CODER X DOX의 논문 리뷰 영상을 출발점으로, 2017년 논문 「Attention Is All You Need」를 원문 순서에 맞춰 풀어 읽는 해설이다. 프로그래밍이나 선형대수를 미리 알 필요는 없다. 처음에는 수식의 기호보다 어떤 정보를 어디에서 가져와 어떻게 섞는지를 따라가면 된다.1
영상은 한국어 자동 생성 자막 전체를 확인했고, 기술 설명은 arXiv 본문과 PDF, 당시 Google Research 해설에 대조했다. 아래의 숫자 장난감 예시와 인포그래픽은 이해를 위해 별도로 만든 것으로, 실제 학습 모델의 내부 측정값이 아니다. 논문 전문 번역이 아니라 상세 의역과 해설이며, 논문의 결과와 후대 발전을 구별한다.
이 글의 목차 — 필요한 부분부터 읽기
영상과 논문의 지도
어떤 논문인가
- 논문: Ashish Vaswani 외 7명, 「Attention Is All You Need」.
- 저자: Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin.
- 최초 공개: 2017년 6월 12일. 발표: NIPS 2017, 현재 명칭 NeurIPS.
- 주요 과제: 영어→독일어, 영어→프랑스어 기계번역. 추가 과제: 영어 구문 분석.
- 중심 제안: 시퀀스 처리를 위한 RNN·합성곱 대신, 어텐션을 중심에 둔 인코더–디코더 구조 Transformer.2
처음부터 대화형 AI를 만든 논문은 아니다. 주어진 문장을 다른 언어의 문장으로 바꾸는 모델을 제안한 연구다. 오늘날의 중요성을 이미 알고 읽으면, 당시 연구자들이 곧바로 ChatGPT를 설계한 것처럼 보이기 쉽다. 그 역사적 지름길을 잠시 피하고, 당시의 실제 문제인 번역과 계산의 병목부터 보자.
영상에서 어디를 다시 볼까
| 구간 | 영상의 중심 내용 |
|---|---|
| 00:00–01:48 | 인용 기록, 연구의 영향력, 공동저자 이야기 |
| 01:48–03:58 | RNN/LSTM의 순차 처리와 어텐션 중심 구조로의 전환 |
| 03:58–05:58 | Q·K·V, 가중합, softmax, √dk로 나누는 이유 |
| 05:58–07:07 | Multi-Head Attention과 헤드 수 비교 |
| 07:07–07:57 | Positional Encoding |
| 07:57–08:57 | 인코더·디코더, 번역 결과, 긴 문장의 비용 |
| 08:57–09:42 | 이미지·오디오·비디오와 후대 LLM으로의 확장 |
시간은 영상의 설명란과 자막을 기준으로 했다. 논문의 세부 학습 절차, 아래의 수치 예제, 질문별 보충은 영상 요약을 넘어 원문을 이해하기 위해 덧붙인 내용이다.1
인용 수 7위라는 제목은 어떻게 받아들여야 할까
Nature의 2025년 분석에서 이 논문은 2000년 이후 출판된 연구의 인용 순위 7위로 소개됐다. 여러 데이터베이스의 순위를 종합한 당시 분석이며, 토론토대학교의 당시 보도에서도 이를 확인할 수 있다.3
그러나 많이 인용됐다는 사실과, 모든 문제에 가장 좋은 모델이라는 판단은 다르다. 널리 쓰이는 도구를 제안한 논문은 여러 분야에서 반복 인용될 수 있다. 순위는 영향력의 한 지표이지 지능이나 진리의 성적표가 아니다. 영상에 나오는 Google Scholar 27만 회, 연간 7만 회, GPT-4와의 학습량 비교는 이번 원문 확인으로 별도 검증하지 않아 확정 수치로 재사용하지 않는다.
준비 — 토큰과 임베딩
컴퓨터는 문장을 그대로 계산하지 않는다
예를 들어 다음 문장을 보자. Google Research가 당시 해설에 사용한 예문이다.4
I arrived at the bank after crossing the river.
사람은 river를 보고 bank가 은행보다 강둑에 가까운 뜻이라고 판단할 수 있다. 그렇다면 모델은 어떻게 이 연결을 계산할까? 먼저 글자를 계산 가능한 표현으로 바꿔야 한다.
토큰화는 텍스트를 처리 단위로 나누는 과정이다. 토큰은 단어일 수도, 단어의 일부일 수도, 문장부호일 수도 있다. 실제 논문도 단어 조각을 사용하는 BPE나 word-piece 방식을 활용한다. 이 글에서 단어라고 부르는 부분은 이해를 위한 단순화이며, 실제 단위는 토큰이다.5
임베딩은 각 토큰을 숫자 여러 개의 묶음, 즉 벡터로 바꾸는 과정이다. 예를 들어 이해를 위한 가상 벡터를 [0.2, -0.7, 0.5, …]처럼 쓸 수 있다. 여기서 각 숫자 칸에 사람이 은행, 강, 명사 같은 고정 의미표를 붙이는 것은 아니다. 번역을 잘하도록 학습하면서 유용한 숫자 표현이 조정된다.
이제 한 문장이 토큰 벡터들의 줄이 된다. Transformer가 할 일은 이 벡터들을 그대로 내보내는 것이 아니라, 주변 토큰을 참고해 각 위치의 표현을 문맥에 맞게 바꾸는 것이다. bank라는 같은 토큰도 river와 함께 있을 때와 money와 함께 있을 때 다른 문맥 표현을 가질 수 있다.
학습한다는 말의 최소한의 뜻
모델에는 숫자를 변환하는 많은 매개변수가 있다. 모델이 번역 토큰의 확률을 예측하면 정답과의 차이를 계산하고, 그 차이가 줄어드는 방향으로 매개변수를 조금씩 조정한다. 반복 끝에 문맥을 활용하는 변환이 만들어진다.
따라서 모델 안에 작은 사람이 있어 중요한 단어를 골라 주는 것은 아니다. 뒤에서 나올 Query·Key·Value도 사람이 매번 작성하는 질문·꼬리표·답안이 아니라, 이 학습 가능한 숫자 변환으로 만들어지는 벡터다.
초록과 1절 — 기다림이 문제였다
원문 요지
초록과 서론은 당시의 대표적 시퀀스 모델이 RNN이나 합성곱 신경망에 기반했다고 설명한다. 저자들은 순환 계산과 시퀀스 처리용 합성곱 없이, 어텐션을 중심으로 구성한 Transformer를 제안한다. 번역 품질뿐 아니라 병렬화와 학습 비용을 함께 평가한다.6
RNN의 앞 단어와 다음 단어
RNN은 이전 위치의 은닉 상태와 현재 토큰을 이용해 다음 상태를 만든다. 은닉 상태는 지금까지 처리한 정보가 담긴 숫자 묶음이라고 생각하면 된다. LSTM은 이 정보를 더 잘 유지하고 조절하기 위한 대표적인 순환 구조다.
문제는 다음 위치의 계산이 이전 위치의 결과를 기다려야 한다는 데 있다. 긴 문장에서 멀리 떨어진 두 단어의 정보가 만나는 데도 여러 순환 단계를 거친다. 이는 RNN이 아무것도 병렬화하지 못한다는 뜻은 아니다. 여러 문장을 묶어 처리하거나 각 단계 안의 행렬 계산을 병렬화할 수는 있다. 한 문장 안에서 위치를 따라 이어지는 의존성이 병목이라는 뜻이다.
GPU는 여러 계산을 동시에 하는 데 강하다. 그런데 모델의 계산 경로가 계속 기다리라고 요구하면, 하드웨어의 강점을 충분히 쓰기 어렵다. 논문의 질문은 기억을 더 오래 붙잡는 법에만 있지 않다. 왜 반드시 옆 사람을 거쳐야 하는가? 멀리 있는 토큰과 바로 연결하면 안 되는가?
이 전환을 사람의 독서법으로 곧장 일반화할 필요는 없다. 기계가 언어를 잘 처리하기 위해 반드시 사람이 체감하는 읽기의 시간 순서를 그대로 흉내 내야 하는 것은 아니라는 공학적 발견에 가깝다.
2절 — 어텐션은 이미 있었다
원문 요지
배경 절은 CNN 기반 시퀀스 모델과 이전의 어텐션 연구를 소개한다. 어텐션과 self-attention 모두 이 논문에서 처음 등장한 개념이 아니다. 저자들의 기여는 이러한 장치를 새로운 전체 구조의 중심으로 조직하고, 번역 실험에서 효과를 보여준 데 있다.7
기존 번역 모델의 어텐션은, 번역문을 쓰는 순간 원문의 어느 위치를 얼마나 참고할지 정하는 장치로 생각할 수 있다. 하지만 RNN 위에 이를 덧붙이면 순환 계산의 기다림 자체는 남는다.
Transformer는 RNN을 더 복잡하게 만들기보다, 어텐션 중심으로 표현을 계산해도 충분한지 시험했다. 따라서 제목을 모든 계산에 어텐션 하나만 있으면 된다는 선언으로 읽으면 어긋난다. 원논문에도 임베딩, 피드포워드 신경망, 정규화, 위치 정보가 있다. 제거한 것은 모든 다른 부품이 아니라, 시퀀스 표현을 위해 필수처럼 여겼던 순환 구조다.
3.1절 — 인코더와 디코더의 지도
원문 요지
전체 틀은 인코더–디코더다. 인코더는 입력 토큰마다 문맥 표현을 만들고, 디코더는 그 표현과 이미 주어진 출력 토큰을 이용해 다음 출력 토큰을 예측한다. 기본 설계에서 인코더와 디코더는 각각 6개 층을 쌓는다.8
인코더는 무엇을 내놓나
인코더는 원문을 읽고 토큰마다 주변 정보를 반영한 벡터를 만든다. bank 위치의 벡터에는 river 등과의 관계를 반영한 정보가 들어갈 수 있다. 한 층에서 갱신한 표현을 다음 층이 다시 처리한다.
인코더가 전체 문장을 짧은 숫자 하나로 요약하는 것은 아니다. 입력 토큰이 여러 개면 그에 대응하는 여러 문맥 벡터가 나온다. 디코더는 이 여러 위치를 다시 참고할 수 있다.
디코더는 무엇을 하나
디코더는 지금까지의 번역 토큰과 인코더의 출력을 바탕으로 다음 토큰의 확률을 만든다. 예측을 잘하도록 학습된 모델을 실제 생성에 사용하면, 선택한 토큰을 뒤에 붙여 다시 다음 토큰을 예측한다.
여기에는 두 질문이 따로 들어 있다.
- 번역문 쪽에서 이미 나온 내용은 무엇인가? → masked self-attention.
- 그다음 표현을 쓰기 위해 원문의 어디를 참고할까? → 인코더–디코더 attention, 흔히 cross-attention.
원논문 Figure 1을 다시 보면
그림의 Add & Norm은 뒤에서 설명할 잔차 연결과 정규화다. 우선 왼쪽의 입력 경로와 오른쪽의 출력 경로, 둘 사이의 연결만 찾으면 된다. 지도에 적힌 지명을 한 번에 외울 필요는 없다.
3.2절 — Q·K·V로 정보를 찾고 섞는다
Self-attention의 self는 무엇인가
같은 입력 열에서 Query·Key·Value를 모두 만들면 self-attention이다. 문장 안의 각 위치가 같은 문장의 다른 위치들을 참고해 자기 표현을 갱신한다. 자기 자신 위치도 참고할 수 있다.
Cross-attention은 출처가 다르다. 번역 모델에서는 Query가 디코더 쪽에서, Key와 Value가 인코더 출력에서 온다. 이름이 비슷해도 어느 열에서 정보를 가져오는지 구별해야 한다.9
Q·K·V를 도서관에 비유하면
도서관에서 자료를 찾는 상황을 떠올리자.
- Query는 지금 찾고 싶은 내용을 비교할 질의다.
- Key는 각 자료를 질의와 비교하기 위한 검색용 표지다.
- Value는 관련도를 정한 뒤 실제로 가져올 내용이다.
이 비유의 한계도 중요하다. 실제 모델은 문장으로 된 질의를 사서에게 말하지 않는다. 세 가지 모두 숫자 벡터이며, 매개변수 행렬로 만들어진다. 검색 순위 1등인 책 한 권만 꺼내는 것도 아니다. 여러 내용에 가중치를 주어 섞는다.
Self-attention의 한 헤드에서 입력 벡터들의 행렬을 X라고 하면, 기본 관계는 다음과 같다.9
W는 학습되는 변환 행렬이다. 같은 X에서도 서로 다른 변환을 사용하므로 Q·K·V의 역할이 나뉜다. 숫자가 너무 낯설다면, 같은 자료에서 찾기용 표현과 비교용 표현과 전달용 표현을 각각 만든다고 읽으면 된다.
수식을 네 동작으로 나누기
논문의 중심 수식은 다음과 같다.
- QKᵀ: 각 Query와 각 Key의 내적으로 관련도 점수를 만든다. Kᵀ의 T는 비교를 위한 행렬의 방향을 바꾸는 전치다.
- √dk로 나누기: 점수의 규모를 조절한다. dk는 한 Key·Query 벡터의 차원, 즉 숫자 칸 수다.
- softmax: 각 Query에 대한 점수들을 양수 가중치로 바꾼다. 그 가중치의 합은 1이 된다.
- V와 곱하기: 해당 가중치로 여러 Value를 합친다. 그 결과가 이 어텐션 연산의 출력이다.9
작은 숫자로 한 번 계산해 보기
세 위치에 대한 스케일 조절 후 점수가 0, 1, 2라고 가정하자. 이 숫자는 실제 bank 문장에서 측정한 값이 아니라, 원리를 설명하기 위한 장난감 예시다.
Softmax는 각 점수 s를 e의 s제곱으로 바꾼 뒤 전체 합으로 나눈다. 이 경우 가중치는 약 0.0900, 0.2447, 0.6652가 된다. 가장 큰 점수인 세 번째 위치가 약 66.5%를 받지만, 나머지 위치의 정보도 남는다.
계산을 눈에 보이게 하려고 Value도 가상으로 정하자.
| 위치 | 점수 | 가중치 | 가상 Value |
|---|---|---|---|
| A | 0 | 0.0900 | [2, 0] |
| B | 1 | 0.2447 | [0, 2] |
| C | 2 | 0.6652 | [4, 4] |
출력은 다음 가중합이다. 표시한 가중치는 반올림했으며 결과는 반올림 전 값으로 계산했다.
이 출력이 곧바로 정답 단어나 한국어 뜻은 아니다. 다음 계산으로 넘길 새 벡터 표현이다. 실제 모델은 여러 층의 처리를 거친 뒤, 출력부에서 다음 토큰의 확률을 만든다.
여기서 중요한 반전은 어텐션이 하나를 뽑는 장치라기보다 정보를 비율에 따라 섞는 장치라는 점이다. 집중이라는 이름 때문에 선택과 배제를 먼저 떠올리지만, 계산의 핵심에는 여러 정보의 가중합이 있다.
왜 √dk로 나누나
벡터의 숫자 칸이 많아지면 내적 점수의 규모도 커질 수 있다. 논문은 각 성분이 서로 독립이고 평균 0, 분산 1이라는 단순한 가정 아래, 내적의 분산이 dk가 된다고 설명한다. √dk로 나누면 이 가정 아래에서 분산을 다시 1로 맞출 수 있다.10
예를 들어 dk가 64라면 √64는 8이다. 점수를 8로 나누는 셈이다. 모든 실제 학습 벡터가 언제나 이 가정을 정확히 만족한다는 뜻은 아니다. 점수 규모를 조절하는 이유를 보여주는 설명이다.
점수 차이가 과도하게 커지면 softmax의 결과가 거의 한쪽에 몰릴 수 있다. 이때 작은 변화에 대한 출력의 민감도, 즉 학습에 필요한 기울기가 아주 작아지는 영역에 들어갈 수 있다. 스케일 조절은 이를 완화하는 데 목적이 있다. 무조건 균등한 주의를 주려는 장치는 아니다.
3.2.2절 — 여러 헤드는 무엇이 다른가
원문 요지
한 번의 어텐션으로만 정보를 평균내면 서로 다른 관계가 한 표현 안에 섞여 희석될 수 있다. Multi-Head Attention은 서로 다른 학습된 변환으로 여러 표현 공간에서 어텐션을 수행한 뒤, 결과를 이어 붙이고 다시 변환한다.11
base 모델은 512차원 표현, 8개 헤드, 헤드별 64차원의 Query·Key·Value를 사용한다. 여기서 512를 단순히 연속된 64칸씩 잘라 각 헤드에 고정 배당한다고 이해하면 부정확하다. 입력 전체에 서로 다른 학습된 선형 변환을 적용해 헤드별 표현을 만든다는 것이 핵심이다.
어떤 헤드는 대명사와 앞선 명사 사이의 관계를, 어떤 헤드는 멀리 떨어진 구문 관계를 포착하는 듯한 패턴을 보일 수 있다. 하지만 사람이 문법 담당, 의미 담당 같은 직책을 미리 붙이지는 않는다. 그렇게 해석할 만한 경향이 학습 뒤 관찰되는 것이다.
헤드별 차원을 줄이기 때문에 전체 계산 비용은 전체 차원을 한 헤드에서 쓰는 어텐션과 비슷하게 유지할 수 있다. 그렇다고 헤드를 무한히 늘리면 좋은 것도 아니다. 일정한 표현 크기에서 헤드 수를 바꾸면 헤드별 차원도 달라지고, 논문의 실험에서도 너무 많은 헤드가 항상 좋은 성능을 내지는 않았다.
3.2.3절의 세 가지 사용법
같은 수식도 어느 정보에 접근할 수 있는지에 따라 역할이 달라진다.9
| 종류 | Q의 출처 | K·V의 출처와 허용 범위 |
|---|---|---|
| 인코더 self-attention | 원문 쪽 표현 | 같은 원문 쪽 표현의 모든 유효 위치 |
| 디코더 masked self-attention | 번역문 쪽 표현 | 같은 번역문에서 현재 입력 위치와 앞선 위치 |
| Cross-attention | 디코더 쪽 표현 | 인코더가 만든 원문 위치별 표현 |
디코더에서 현재 위치까지 볼 수 있다는 말과, 예측할 정답 토큰을 미리 보면 안 된다는 말은 모순이 아니다. 디코더 입력을 정답 출력보다 한 칸 밀어 놓기 때문이다. 이 차이는 학습 절에서 구체적으로 보자.
3.3–3.5절 — 어텐션 바깥의 중요한 부품들
3.3절: 정보를 주고받은 뒤, 각 위치에서 가공한다
어텐션은 위치 사이의 정보를 섞는다. 그 뒤의 Position-wise Feed-Forward Network는 각 위치의 벡터를 따로 가공한다. 같은 층 안에서는 각 위치에 같은 변환을 적용하지만, 다른 층은 다른 매개변수를 사용한다.12
원논문은 두 선형 변환 사이에 ReLU라는 비선형 함수를 넣는다. base 모델에서는 512차원 벡터를 내부 2048차원으로 변환했다가 다시 512차원으로 돌려놓는다. 왜 굳이 비선형 변환을 넣는지까지 이해하려면 신경망의 표현력을 더 공부해야 하지만, 지금은 어텐션이 정보 교환, FFN이 각 위치의 추가 가공이라는 구분부터 잡으면 된다.
그래서 제목을 문자 그대로 받아들여 FFN을 지우면 원래 Transformer가 아니다. 도발적인 제목이 실제 설계도 전체를 대신하지는 않는다.
잔차 연결과 Layer Normalization
원논문은 각 하위층의 입력에 그 하위층의 출력을 더하는 잔차 연결을 사용한다. 새 정보로 기존 표현을 통째로 대체하는 대신, 기존 경로 위에 갱신을 얹는 셈이다. 이후 Layer Normalization으로 각 위치의 특성값 규모를 정돈한다. 원래 논문의 배치는 하위층 연산과 잔차 덧셈 뒤에 정규화가 오는 방식이다.8
이 부품들은 학습을 다루기 쉽게 만드는 데 중요하다. 현대 모델은 정규화의 위치와 방식이 다른 경우가 많으므로, 원논문의 그림을 모든 현재 LLM의 정확한 설계도로 사용하면 안 된다.
3.4절: 토큰 확률로 바꾸는 마지막 단계
입력·출력 토큰은 학습되는 임베딩을 통해 벡터가 된다. 디코더의 마지막 표현은 선형 변환과 softmax를 거쳐 어휘 목록에 속한 다음 토큰들의 확률로 바뀐다. 원논문은 임베딩과 출력부의 일부 가중치를 공유하고, 입력 임베딩에 √dmodel을 곱하는 설정도 사용한다.13
주의할 점은 어텐션 softmax와 출력 softmax의 용도가 다르다는 것이다. 전자는 어느 위치의 정보를 얼마나 섞을지를 정하고, 후자는 어떤 토큰이 다음에 올지의 확률을 만든다. 같은 수학 함수를 쓴다고 같은 대상을 고르는 것은 아니다.
3.5절: 계산 순서를 없애도, 단어 순서는 필요하다
위치 정보나 순서를 드러내는 마스크가 없는 self-attention은, 입력 위치를 바꾸면 출력도 그에 맞춰 재배열되는 성질이 있다. 각 단어가 앞에 놓였는지 뒤에 놓였는지를 토큰 내용만으로 알 수는 없다.
예를 들어 dog bites man과 man bites dog는 같은 토큰들이지만 역할이 다르다. 관계를 비교할 수 있게 됐다는 사실만으로 이 순서의 차이까지 저절로 제공되는 것은 아니다.
원논문은 차원 쌍마다 주파수가 다른 사인·코사인 함수를 사용한다. 각 위치 번호를 이 함수들에 넣어 위치 벡터를 만들고, 토큰 임베딩에 더한다. 주파수는 위치마다 바꾸는 것이 아니라 차원 쌍마다 다르게 정한다. 말하자면 내용 벡터에 위치 표식을 함께 주는 것이다. 두 벡터를 더한다고 항상 완벽히 구분된다는 보장이 생기는 것은 아니지만, 학습이 위치를 활용할 수 있는 신호를 제공한다.14
저자들은 학습 가능한 위치 임베딩도 비교했고, 해당 실험에서는 거의 비슷한 결과를 얻었다. 사인·코사인을 선택한 이유에는 학습 때보다 긴 시퀀스에 확장될 가능성에 대한 가설도 있었다. 이것을 임의 길이의 문장을 언제나 정확히 처리한다는 보증으로 읽어서는 안 된다.
4절 — 빠르지만 공짜는 아니다
원문 요지
저자들은 세 기준을 비교한다. 한 층의 계산량, 반드시 순서대로 수행해야 하는 단계 수, 멀리 떨어진 위치 사이의 최대 연결 경로 길이다. 서로 다른 질문이므로 하나의 빠르다는 말로 합치면 안 된다.15
| 비교 항목 | RNN 계열의 순환층 | Self-attention |
|---|---|---|
| 대표 계산 복잡도 | O(nd²) | O(n²d) |
| 최소 순차 연산 단계 | O(n) | O(1) |
| 위치 사이 최대 경로 | O(n) | O(1) |
n은 토큰 수, d는 표현 차원이다. 위 값은 논문 표 1이 비교하는 계산 특성이다. O(n²d)는 위치 간 어텐션 계산에 관한 값이며, 실제 multi-head 하위층에는 Q·K·V와 출력의 선형 변환에 드는 O(nd²) 비용도 있다. Transformer 전체 실행 시간이나 생성 문장 전체의 지연 시간을 그대로 뜻하지 않는다.
O(1)은 언제나 같은 시간이라는 말이 아니다
여기서 O(1)은 입력 길이에 따라 위치 사이의 순차 의존 단계가 늘어나지 않는다는 뜻이다. 실제 하드웨어는 유한하므로 입력이 길어지면 처리 시간은 늘 수 있다. 전체 모델의 여러 층도 차례로 수행한다.
더 짧은 경로는 멀리 떨어진 정보의 연결을 학습하는 데 유리할 수 있다. 그러나 멀리 있는 모든 정보를 반드시 잘 기억하거나 정확히 추론한다는 보증은 아니다. 연결 가능성과 연결의 실제 활용은 다른 문제다.
모든 쌍을 보려면, 쌍의 수를 감당해야 한다
토큰 100개가 서로를 비교하면 100×100, 즉 1만 개 위치 쌍이 생긴다. 200개라면 4만 개다. 길이는 두 배지만 비교할 쌍은 네 배다. 한 헤드의 전체 위치 관계를 단순하게 센 수이며, 패딩이나 인과 마스킹 등의 세부는 생략한 예시다.
어텐션의 장점인 모두와 직접 연결할 수 있음이, 동시에 긴 입력에서는 비용의 원천이 된다. 연결을 풀어주는 것만으로 문제가 사라지지 않고, 연결을 계산하는 부담이 새로 생기는 것이다. 논문도 가까운 일부 위치만 보는 restricted attention을 향후 방향으로 언급한다.15
따라서 원래의 전체 어텐션을 모든 길이에서 RNN보다 무조건 저렴하다고 말하면 안 된다. 원논문도 시퀀스 길이 n과 표현 차원 d의 관계를 따져 비교한다. 현대의 효율적 구현·희소화·다른 구조는 별도 연구이며, 이 글은 그것들의 성능을 평가하지 않는다.
5절 — 학습과 생성은 다르다
원문 요지: 구조뿐 아니라 훈련 레시피도 있다
논문은 영어–독일어 약 450만 문장 쌍, 영어–프랑스어 약 3,600만 문장 쌍을 사용한다. 길이가 비슷한 문장을 묶고, 토큰 단위 배치로 학습한다. 하드웨어는 NVIDIA P100 GPU 8개를 장착한 머신 한 대다.5
| 모델 | 논문 표 3의 매개변수 수 | 학습 단계 | 보고된 학습 시간 |
|---|---|---|---|
| base | 약 6,500만 | 100,000 | 약 12시간 |
| big | 약 2억 1,300만 | 300,000 | 약 3.5일 |
Adam 최적화, 초반에 학습률을 올리는 warmup과 이후 감소 스케줄, dropout, label smoothing도 사용한다. Dropout은 학습 때 일부 신호를 확률적으로 누락해 과도한 의존을 줄이는 방법이고, label smoothing은 정답 한 곳에만 확률 1을 강요하지 않도록 목표 분포를 조금 부드럽게 만드는 방법이다. 논문은 후자가 perplexity에는 불리하지만 정확도와 BLEU에는 도움이 됐다고 보고한다.5
숫자 몇 줄을 제외하고 모델의 구조만 외우면, 실제 연구가 수식 한 번의 영감으로 완성됐다는 신화가 남는다. 성과는 구조와 데이터와 최적화 설정이 함께 만든 결과다. 다만 이 결과가 각 구성요소의 독립적인 효과를 모두 분리해 입증한 것은 아니다.
정답이 있는데도, 왜 미래를 가려야 하나
학습 데이터에는 번역 정답이 있다. 정답이 나는 책을 읽는다라는 세 토큰이라고 단순화해 보자. 실제 한국어 토큰화 결과가 반드시 이렇다는 뜻은 아니다. 시작 표식을 BOS라 하면 학습 정렬은 다음과 같다.
| 디코더 입력 위치 | 현재 입력 | 예측해야 할 다음 토큰 |
|---|---|---|
| 첫 위치 | BOS | 나는 |
| 둘째 위치 | 나는 | 책을 |
| 셋째 위치 | 책을 | 읽는다 |
각 위치는 자기 입력과 그 앞의 입력만 볼 수 있다. 첫 위치가 뒤의 나는까지 본다면, 맞혀야 할 답이 입력으로 이미 주어지는 문제가 생긴다. 그래서 미래 위치를 가리는 causal mask가 필요하다.16
계산은 모든 위치에 대해 함께 하더라도, 각 위치가 볼 수 있는 정보는 다르게 제한된다. 이는 계산을 동시에 한다는 사실과 미래 정답을 볼 수 있다는 사실이 다르다는 뜻이다.
학습에서는 병렬, 보통의 생성에서는 순차
정답 출력이 있는 학습에서는 한 칸 밀린 입력 전체를 준비할 수 있다. 각 위치에 마스크를 적용하면 여러 위치의 다음 토큰 예측과 오차를 병렬로 계산할 수 있다. 앞 위치에서 모델이 실제로 무엇을 골랐는지 기다리지 않고, 학습 데이터의 정답 접두사를 사용하기 때문이다. 흔히 teacher forcing이라고 부르는 방식이다.
반면 실제 번역이나 채팅의 일반적인 자기회귀 생성에서는 아직 다음 토큰이 없다. 모델이 하나를 고르고, 그것을 입력에 덧붙인 뒤 그다음을 예측한다.
그래서 RNN을 없앴다는 말과 생성에서의 모든 순차 의존성을 없앴다는 말은 다르다. 원논문도 생성을 덜 순차적으로 만드는 일을 향후 연구 과제로 남겼다. 화면에 답변이 조금씩 나타나는 이유를 이해할 때 바로 이 구분이 필요하다.17
6절 — 실험은 무엇을 보여줬나
6.1절: 번역 성능과 비용
논문 초록과 표 2의 대표 결과는 다음과 같다. 원논문이 보고한 벤치마크 결과이며, 이 글에서 모델을 재학습해 독립 재현한 수치는 아니다.18
| 모델 | 영어→독일어 BLEU | 영어→프랑스어 BLEU |
|---|---|---|
| GNMT + RL 앙상블 | 26.30 | 41.16 |
| ConvS2S 앙상블 | 26.36 | 41.29 |
| Transformer base | 27.3 | 38.1 |
| Transformer big | 28.4 | 41.8 |
BLEU는 모델 번역과 참조 번역 사이의 n-gram 겹침 등을 이용하는 자동 평가 지표다. 높은 점수가 더 좋은 평가를 뜻하지만, 28.4 BLEU를 정확도 28.4%로 읽으면 안 된다. 자연스러운 번역의 모든 측면을 완벽히 측정하지도 않는다.
영어→독일어에서는 base 하나가 표에 실린 기존 앙상블들까지 넘어섰다. 앙상블은 여러 모델의 예측을 결합하는 방식이다. 하지만 영어→프랑스어에서 base의 점수는 같은 표의 모든 모델을 이기지 않는다. 작은 모델 하나가 다 이겼다는 설명은 과제 범위를 붙여야 정확하다.
자료 자체의 차이도 남겨 둔다. arXiv v7의 영어→프랑스어 결과는 초록과 표 2에는 41.8, §6.1의 한 문장에는 41.0으로 표기돼 있다. 위 표는 초록·표 2 기준이며, 이 차이를 임의로 동일한 값처럼 처리하지 않았다. 당시 Google의 공식 해설도 번역 벤치마크에서의 성능과 효율을 함께 강조한다.184
학습 비용 비교도 저자들의 추정이다. 논문은 학습 시간, GPU 수, GPU의 지속 단정밀도 연산 성능 추정치를 곱해 FLOPs를 산정한다. 오늘날 동일 하드웨어에서 직접 측정한 속도 대결이나 전력·금액 비교와는 다르다.
6.2절: 구성요소를 바꿔 보니
영어→독일어 개발 세트에서 헤드 수와 차원 등을 바꾼 실험이 있다. 대표적으로 헤드 1개는 24.9 BLEU, 4개는 25.5, 8개와 16개는 25.8, 32개는 25.4였다. 이 비교에서는 계산량을 비슷하게 맞추며 헤드 수와 헤드별 차원을 함께 조절했다.19
따라서 8이라는 숫자에 보편적인 최적값의 권위를 줄 필요는 없다. 해당 설정에서의 실험 결과다. 논문은 더 큰 모델, dropout, Key 차원의 영향도 살피며, 학습 가능한 위치 임베딩이 사인·코사인 방식과 거의 비슷한 결과를 보였다고 보고한다.
6.3절: 번역 이외의 과제
영어 constituency parsing은 문장의 구문 구조를 괄호로 묶어 표현하는 과제다. 예를 들어 어떤 단어들이 명사구를 이루고, 어떤 부분이 동사구인지 분석한다. 출력의 구조적 제약이 강하므로 번역과는 다른 시험이다.
저자들은 4층 Transformer를 적용하고, WSJ만 사용하는 조건과 더 큰 준지도 학습 조건을 비교한다. 표 4에서 각각 F1 91.3과 92.7을 보고한다. 이는 다른 시퀀스 과제에도 활용할 가능성을 보여주지만, 모든 자연어 과제에서 최고임을 입증한 결과는 아니다.20
7절 — 번역 모델에서 GPT로
원문이 남긴 것과, 후대가 만든 것
결론은 어텐션 중심 구조로 번역 품질과 학습 효율을 얻었다고 정리한다. 텍스트 외에 이미지·오디오·비디오로의 확장, 큰 입력을 위한 제한적 어텐션, 덜 순차적인 생성도 향후 과제로 언급한다.17
영상은 이 구조가 후대 LLM으로 이어졌다는 점을 강조한다. 다만 2017년 논문과 오늘의 대화형 AI 사이에는 대규모 사전학습, 모델·데이터 규모 확장, 지시 학습, 사람의 선호를 반영하는 후속 학습 등 별도 연구가 있다. 원논문 하나가 이 전부를 이미 검증했다고 말할 수 없다.
GPT의 초기 논문은 Transformer decoder를 사용하는 생성적 사전학습을 제안했다. 이 계열은 별도의 원문 인코더에 의존하는 번역 구조와 달리, 주어진 접두사를 바탕으로 다음 토큰을 예측하는 decoder-only 방향으로 발전했다. 따라서 원래 디코더를 변경 없이 떼어 썼다는 설명도 너무 단순하다.21
지금의 모델을 볼 때 무엇이 남나
이어지는 중심 아이디어는 토큰 간 관련도를 계산하고, 그 결과로 표현을 갱신하는 계산을 층으로 쌓는 것이다. 하지만 위치 정보의 방식, 정규화, 활성화 함수, 헤드 구성, 효율적 구현 등은 달라질 수 있다. 원논문의 수식을 안다는 것과 현재 모델의 전체 구조를 안다는 것은 다르다.
이 논문을 수식 하나가 세상을 바꾼 이야기로만 읽으면, 그 수식이 왜 당시 GPU와 잘 맞았는지, 어떤 학습 절차가 필요했는지, 긴 입력에서 무엇을 대가로 치르는지가 사라진다. 반대로 그저 큰 계산기의 승리라고만 하면 순환 계산을 제거한 구조적 발상을 놓친다. 좋은 관계 계산과 대규모로 수행하기 좋은 계산이 만난 것이 중요하다.
부록 — 원논문 그림을 읽는 법
Figure 3: 멀리 떨어진 표현의 연결
원문의 설명은 making이 멀리 떨어진 more difficult와 연결되는 관계에 주목한다. 그림을 볼 때 모든 선을 따라가려 하지 말고, 한 단어에서 출발해 멀리 있는 표현에 연결되는 선부터 찾으면 된다. 긴 경로를 중간 위치마다 차례로 통과하지 않아도 되는 구조적 가능성을 눈으로 보는 사례다.22
Figure 4: its가 어디를 가리키는가
전체 연결과 특정 토큰의 연결을 따로 보면, 어텐션을 시각화한다는 말의 범위가 분명해진다. 모델의 모든 계산을 보여주는 것이 아니라 특정 층·특정 헤드·특정 입력에서의 가중치를 골라 보여주는 것이다.22
Figure 5: 서로 다른 헤드의 문장 구조 패턴
서로 다른 패턴은 여러 헤드가 단순 복제 이상을 학습할 수 있음을 보여준다. 그렇다고 선이 진한 곳 하나를 모델의 최종 판단 이유와 동일시하면 안 된다. 이 그림에는 다른 헤드, FFN, 이후 층과 출력부의 효과가 전부 담겨 있지 않다. 보기 쉬운 설명 그림을 얻는 것과 모델의 판단을 완전히 설명하는 것은 별개의 일이다.22
헷갈리기 쉬운 질문들
모든 토큰을 본다면 미래의 답도 보는 것 아닌가
인코더는 주어진 원문 전체를 볼 수 있다. 디코더의 self-attention은 미래 출력 위치를 가린다. Cross-attention은 이미 주어진 원문을 볼 수 있다. 무엇을 생성하는 중이며 어떤 정보가 사전에 주어졌는지를 구별해야 한다.
왜 가장 중요한 토큰 하나만 고르지 않나
원래 어텐션은 여러 Value의 가중합이다. 문맥을 처리할 때 한 단서만 쓰기보다 여러 관계를 함께 반영할 수 있다. 가중치가 한 곳에 강하게 몰릴 수는 있지만, 언제나 1등 하나를 꺼내는 연산은 아니다.
헤드 하나가 한 가지 문법 규칙을 담당하나
그런 역할을 사람이 고정 배정하지 않는다. 학습 후 일부 헤드에서 해석 가능한 패턴이 관찰될 수 있지만, 모든 헤드가 한 가지 이름 붙일 수 있는 기능에 대응해야 하는 것은 아니다.
Transformer는 단어의 순서를 무시하나
순서 정보를 쓴다. 위치 인코딩과 디코더의 인과 마스크가 그 일부다. 없앤 것은 순서 자체가 아니라 RNN식 위치별 순환 계산이다.
연결 경로가 짧으면 긴 문서를 반드시 잘 이해하나
아니다. 짧은 경로는 정보 교환을 위한 구조적 조건 중 하나다. 학습 데이터, 모델 크기, 위치 처리, 실제 정보 활용 능력과 계산 비용이 함께 작용한다. 긴 입력이 허용된다는 사실과 그 전체를 정확히 활용한다는 사실도 다르다.
이 글의 예시 숫자는 실제 모델의 내부 값인가
아니다. 0·1·2 점수, 2차원 Value와 한국어 세 토큰 예시는 계산을 보여주기 위한 가상 사례다. 실제 실험 결과는 원논문 표에 근거한 부분에서 따로 표시했다. 설명 그림과 실측 데이터를 구별하는 일이 쉬운 해설의 정확성을 지킨다.
먼저 어디를 다시 읽으면 좋을까
처음에는 영상 03:58의 Q·K·V 설명, 이 글의 네 동작 수식 해설, 원논문 Figure 1을 연결해 보자. 그다음 §3.2.3의 세 가지 어텐션, §4 표 1, §6 표 2를 읽으면 된다. 구현이 궁금해지면 The Annotated Transformer - 구현으로 읽는 Transformer, 규모 확장이 궁금해지면 Scaling Laws for Neural Language Models - 스케일링 법칙으로 이어갈 수 있다.
bank가 강둑이라는 해석은 bank라는 토큰 하나 안에서 완성되지 않는다. river와의 관계가 표현을 바꾼다. 이제 처음 문장으로 돌아가면 Transformer의 핵심도 다르게 보인다. 무엇을 얼마나 참고할지 계산하는 일, 그리고 그 계산을 크게 수행할 수 있도록 구성하는 일. 이것이 원논문을 다시 펼칠 때 붙잡을 두 가지 질문이다.
출처와 참고 URL
원논문과 직접 해설
- Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin. Attention Is All You Need. NIPS 2017. arXiv 서지, v7 HTML 본문, PDF. 최초 제출 2017-06-12, 확인 판본 v7, 본문·PDF 확인 2026-10-26. 프랑스어 BLEU의 본문/표 차이는 결과 절에 명시했다.
- Jakob Uszkoreit. Transformer: A Novel Neural Network Architecture for Language Understanding. Google Research, 2017-08-31. 공식 해설. bank/river 예문과 구조·병렬화 설명을 대조했다.
- CODER X DOX 코더엑스독스. (PAPER CREW) 25년간 나온 전 세계 논문 중 7위 찍은 미친 논문. Attention Is All You Need. 2026-10-12. 원영상. 설명란·전체 한국어 자동 자막 기준. 자동 자막은 오류 가능성이 있어 용어·수치의 기술적 기준은 원논문에 두었다.
역사적 맥락과 후속 읽기
- Helen Pearson 외. Exclusive: the most-cited papers of the twenty-first century. Nature 640, 588–592, 2025. DOI. 공개 서지·검색에 노출된 발췌 및 아래 대학 보도로 순위 맥락을 확인했다. 구독 제한 본문 전체를 읽었다고 주장하지 않는다.
- Matt Hintsa. Three papers authored by U of T computer scientists among the most cited of the 21st century: Nature. University of Toronto Department of Computer Science, 2025-04-23. 대학 보도.
- Alec Radford 외. Improving Language Understanding by Generative Pre-Training. OpenAI, 2018. 원논문 PDF. 초기 GPT의 Transformer decoder와 다음 토큰 예측에 의한 사전학습을 확인할 후속 원문.
- Harvard NLP. The Annotated Transformer. 구현 중심 해설.
- 30papers의 논문 소개와 비전공자를 위한 AI 핵심 논문 지도 - 30papers에서 출발하기는 기존 읽기 지도의 연결점이다. 이번 기술 설명의 1차 근거는 Vaswani 외의 원논문이다.
그림과 확인 범위
새 인포그래픽 7점은 원논문의 개념을 바탕으로 자체 제작한 설명도다. 장난감 수치·한국어 토큰 예시·생략된 블록은 캡션과 본문에 표시했다. 원논문 Figure 1–5의 이미지 8점은 arXiv 공식 HTML 이미지로 참조하고 관련 문단에 해설을 붙였다. 논문 앞머리의 Google 허가 문구는 적절한 출처 표시를 전제로 학술·보도 목적의 표·그림 재사용을 허용한다. 논문 전문이나 영상 자막 전문은 재배포하지 않는다.
확인일: 2026-10-26. 이 글은 원문과 설명의 대조이지, 모델 재학습이나 독립 재현 연구가 아니다. 오늘날 모든 LLM의 구조·효율·인용 수를 새로 조사한 글도 아니다.
Footnotes
- 1.
- 2.
- 3.
- 4.
Jakob Uszkoreit, Google Research 공식 해설, 2017-08-31. ↩ ↩2
- 5.
- 6.
Vaswani 외, §1 Introduction. ↩
- 7.
Vaswani 외, §2 Background. ↩
- 8.
Vaswani 외, §3.1·Figure 1. ↩ ↩2
- 9.
Vaswani 외, §3.2.1·§3.2.3. ↩ ↩2 ↩3 ↩4
- 10.
Vaswani 외, §3.2.1와 해당 각주, 독립·평균 0·분산 1 가정. ↩
- 11.
- 12.
- 13.
- 14.
Vaswani 외, §3.5·표 3(E). ↩
- 15.
- 16.
Vaswani 외, §3.1·§3.2.3, 출력 한 칸 이동과 미래 위치 마스킹. ↩
- 17.
Vaswani 외, §7 Conclusion. ↩ ↩2
- 18.
Vaswani 외, 초록·§6.1·표 2. 영어→프랑스어 대표값은 초록·표 2 기준. ↩ ↩2
- 19.
- 20.
- 21.
Radford 외, Improving Language Understanding by Generative Pre-Training, §3.1–3.2. ↩
- 22.
Vaswani 외, Attention Visualizations, Figure 3–5와 캡션. ↩ ↩2 ↩3