논문 PDF를 열어 3페이지쯤 내려가면 Scaled Dot-Product Attention 절이 나오고, 거기에 식이 딱 한 줄 있습니다.
이 식이 안 읽히는 이유는 어텐션이 무엇인지 몰라서가 아닙니다. 어텐션이 왜 필요한지, Q와 K와 V가 각각 무슨 역할인지는 Transformer를 이해하는 가장 짧은 길에서 이미 답이 나와 있습니다. 그 글을 읽고 나면 "질의와 키의 관련도를 재서 값을 섞는다"는 문장은 완벽하게 이해됩니다. 그런데도 식으로 돌아오면 다시 안 읽힙니다.
이유는 이 한 줄이 서로 다른 다섯 개의 수학을 이어 붙여 만든 문장이기 때문입니다. 는 선형대수고, 로 나누는 자리는 확률의 분산이고, softmax는 지수함수와 확률분포이고, 마지막 를 곱하는 자리는 다시 선형대수입니다. 여기에 식에는 아예 안 보이는 마스킹과 미분이 따라붙습니다. 한 문장 안에서 언어가 다섯 번 바뀌니 사전 하나로는 안 읽히는 게 당연합니다.
그래서 이 글은 식을 계산하지 않습니다. 대신 이 식을 읽으려면 무엇이 필요한가만 답합니다. 기호를 왼쪽부터 오른쪽까지 다섯 자리로 쪼개고, 자리마다 어떤 수학이 들어 있으며 그것이 이 커리큘럼의 몇 번째 글인지 대응시킵니다. 식 자체의 계산과 유도 — √dₖ가 왜 하필 제곱근인지, softmax의 야코비안이 어떻게 생겼는지 — 는 40번부터 43번 글에서 끝냅니다. 여기서는 지도만 그립니다.
왼쪽부터 오른쪽으로 소리 내어 읽기
수식을 읽는 첫 단계는 소리 내어 읽는 것입니다. 기호를 눈으로 훑으면 덩어리로 뭉개지지만, 말로 옮기면 어디서 막히는지가 드러납니다. 위 식을 한국어로 그대로 읽으면 이렇습니다.
"큐, 케이, 브이를 받는 어텐션은, 큐와 케이 전치의 곱을 디케이의 제곱근으로 나눈 것에 소프트맥스를 씌우고, 거기에 브이를 곱한 것이다."
읽어 보면 막히는 자리가 정확히 다섯 군데입니다.
- Q, K, V가 무엇인가 — 숫자인가 벡터인가 행렬인가
- 의 전치와 곱셈이 무엇을 만드는가 — 곱한 결과가 무슨 모양이 되는가
- 왜 로 나누는가 — 그냥 상수로 나누는 것과 무엇이 다른가
- softmax가 무엇을 하는가 — 왜 하필 지수함수인가
- 마지막 가 왜 오른쪽에 붙는가 — 왼쪽에 붙이면 안 되는가
다섯 자리를 하나씩 봅니다.
첫째 자리 — Q, K, V
, , 는 대문자입니다. 이 커리큘럼과 대부분의 논문에서 대문자 정자체는 행렬을 뜻합니다. 즉 Q 하나가 벡터 하나가 아니라, 벡터 여러 개를 행으로 쌓아 놓은 표입니다. 토큰이 개라면 는 개의 행을 가집니다.
는 "실수를 원소로 하는 행 열짜리 행렬 전체의 모임"이고, 은 "그 모임에 속한다"는 뜻입니다. 이 한 줄을 코드로 옮기면 Q.shape == (n, d_k)입니다.
여기서 필요한 수학은 둘입니다. 하나는 표기 규약 — 왜 대문자가 행렬이고 왜 열이 아니라 행에 토큰을 쌓는지. 다른 하나는 벡터와 행렬이라는 대상 자체 — 임베딩 한 줄이 그냥 float 배열이 아니라 벡터라는 것이 무엇을 보장하는지입니다. 앞의 것은 바로 다음 글인 논문 수식 표기 규약이 맡고, 뒤의 것은 2단원(벡터)과 3단원(행렬)이 맡습니다.
둘째 자리 — QKᵀ
의 는 전치입니다. 가 였으니 는 이 되고, 그러면 곱셈의 모양이 맞습니다.
결과가 이라는 것이 이 자리의 전부입니다. 토큰 개에 대해 모든 쌍의 점수가 나왔다는 뜻이고, 이 행렬의 번째 칸은 번 토큰의 질의 벡터와 번 토큰의 키 벡터의 내적입니다.
여기 두 가지 수학이 겹쳐 있습니다. 행렬곱은 모양이 어떻게 맞아떨어지는가의 규칙이고(10번 글), 내적은 그 결과 숫자 하나가 왜 "관련도"로 읽히는가의 의미입니다(6번 글). 둘은 다른 질문입니다. 행렬곱만 알면 셰이프는 맞출 수 있지만 왜 이게 유사도인지는 모릅니다. 내적이 와 같다는 것을 알아야 "방향이 비슷하면 커진다"는 해석이 붙습니다.
그리고 위 식의 기호와 첨자 , , 를 자유롭게 다루는 능력은 그 자체로 따로 배워야 하는 기술입니다. 어떤 첨자가 결과에 남고 어떤 첨자가 합쳐져 사라지는지 — 3번 글이 그것만 다룹니다.
셋째 자리 — √dₖ로 나누기
에서 분모는 상수입니다. 행렬의 모든 칸을 같은 숫자로 나눕니다. 여기서 막히는 지점은 계산이 아니라 왜 하필 인가입니다.
답의 출발점은 확률입니다. 와 의 각 성분이 평균 0, 분산 1이고 서로 독립이라고 두면, 둘의 내적은 개 항의 합이므로 분산이 가 됩니다. 표준편차는 그 제곱근인 이고, 그것으로 나누면 점수의 표준편차가 다시 1로 돌아옵니다.
이 문장을 읽으려면 분산이 무엇이고 독립인 확률변수의 합에서 분산이 어떻게 더해지는가를 알아야 합니다. 21번 글(분산과 표본오차)이 그 도구를 만들고, 40번 글이 그 도구로 이 자리를 완전히 유도합니다. 지금은 "여기는 확률의 자리다"만 표시해 두면 충분합니다.
넷째 자리 — softmax
softmax는 실수 벡터를 확률분포로 바꾸는 함수입니다. 행렬에 씌울 때는 행마다 따로 적용합니다.
결과는 모든 원소가 0보다 크고 한 행의 합이 정확히 1입니다. 즉 점수 행렬의 각 행이 "이 토큰이 다른 토큰들에 나눠 줄 주의의 배분"이 됩니다.
이 자리를 읽으려면 세 가지가 필요합니다. 지수함수와 로그의 성질(18번) — 왜 인가, 왜 상수를 빼도 값이 안 변하는가. 확률분포가 무엇인가(4단원) — 합이 1인 음이 아닌 벡터가 왜 분포인가. 그리고 softmax를 어디서 끌어냈는가(25번) — 이 함수가 하늘에서 떨어진 게 아니라 특정 조건에서 유일하게 나오는 형태라는 것.
다섯째 자리 — 오른쪽의 V
마지막으로 가중치 행렬에 ()를 곱합니다.
결과의 번째 행은 이렇게 생겼습니다.
계수 를 붙여 벡터 들을 더한 것 — 이것이 선형결합의 정의 그대로입니다. 그래서 어텐션의 출력은 언제나 값 벡터들이 만드는 공간 안에 머뭅니다. 새로운 방향이 생기지 않습니다. 이 사실은 4번 글(벡터와 선형결합)에서 정의되고 9번 글(행렬은 선형사상이다)에서 일반화됩니다.
가 왼쪽이 아니라 오른쪽에 붙는 이유도 여기 있습니다. 토큰을 행에 쌓는 관례를 택했으므로, "각 행을 섞는" 연산은 왼쪽에서 곱하는 가중치 행렬이 맡고 결과는 오른쪽 피연산자의 열 구조를 물려받습니다. 관례를 반대로 잡은 논문은 식도 전치된 모양으로 씁니다. 같은 계산인데 식이 달라 보이는 흔한 원인이고, 다음 글이 이 문제만 따로 다룹니다.
식에 안 보이지만 반드시 따라오는 둘
여기까지가 종이에 인쇄된 기호 전부입니다. 그런데 실제 구현을 열어 보면 식에 없는 것이 두 개 더 있습니다.
마스킹. 언어 모델은 뒤에 올 토큰을 미리 보면 안 됩니다. 그래서 softmax를 씌우기 전에 볼 수 없는 자리의 점수를 로 바꿉니다. 그러면 이라 그 자리의 가중치가 정확히 0이 되고, 나머지 자리의 합은 여전히 1입니다. 이것은 트릭이 아니라 지수함수의 끝값이 만드는 성질입니다(18번). 실제 코드에서는 대신 -1e9 같은 큰 음수를 쓰는데, 왜 그래도 되는지 그리고 언제 그것이 깨지는지는 부동소수점의 문제라 12단원(유한한 기계의 수학)이 맡습니다.
미분. 학습할 때는 이 식을 계산하는 게 아니라 미분합니다. 손실이 , , 를 만들어 낸 가중치들에 대해 어떻게 변하는지 알아야 하니까요. 그러려면 softmax를 미분해야 하는데, 입력이 벡터고 출력도 벡터라서 미분의 결과가 숫자가 아니라 행렬(야코비안)이 됩니다. 6단원 전체가 이 도구를 만들고, 41번 글이 어텐션의 그래디언트를 끝까지 유도합니다.
지도 — 기호와 글의 대응표
지금까지의 대응을 한 표로 모읍니다. 어떤 자리에서 막혔을 때 어디로 가야 하는지가 이 표에 있습니다.
| 식에서의 자리 | 막히는 질문 | 필요한 수학 | 커리큘럼 위치 |
|---|---|---|---|
| 대문자 표기 | 이게 벡터인가 행렬인가 | 스칼라·벡터·행렬·텐서 표기 규약 | 2번 |
| 이 기호가 셰이프인가 | 정의역·공역, 원소와 슬라이스 표기 | 2번 | |
| 어떤 첨자가 사라지는가 | 시그마와 첨자, einsum | 3번 | |
| 임베딩 한 행 | 왜 배열이 아니라 벡터인가 | 벡터공간, 선형결합 | 4번 |
| 가 나오는 자리 | 크기를 어떻게 재는가 | 노름과 거리 | 5번 |
| 왜 이게 관련도인가 | 내적, 코사인, 코시-슈바르츠 | 6번 | |
| 전치가 무엇을 바꾸는가 | 행렬곱과 셰이프 산술 | 10번 | |
| 출력이 어디에 갇히는가 | 행렬은 선형사상이다 | 9번 | |
| 왜 하필 제곱근인가 | 분산, 독립합의 분산 | 21번 → 40번 | |
| 왜 지수함수인가 | 지수와 로그 | 18번 | |
| softmax 결과 | 왜 이것이 분포인가 | 확률분포, softmax의 유도 | 20번 → 25번 |
| 마스킹 | 왜 0이 되는가 | 지수함수의 끝값, 수치 안정성 | 18번 → 58번대 |
| 미분 결과가 왜 행렬인가 | 연쇄법칙, 야코비안 | 33번 → 34번 → 41번 |
표를 세로로 훑어보면 한 가지가 보입니다. 어텐션 한 줄을 완전히 읽는 데 필요한 글이 커리큘럼 전반부에 고르게 흩어져 있다는 것입니다. 선형대수만 알아도 안 되고 확률만 알아도 안 됩니다. 그래서 이 커리큘럼의 순서는 수학 교과서의 논리 전개가 아니라 이 식의 데이터 흐름을 따릅니다. 벡터 → 행렬 → 확률 → 정보 → 미분 순서로 가면 43번째 글에서 이 한 줄이 통째로 닫힙니다.
손으로 해 보기 — 다른 식을 같은 방법으로 쪼개기
지도를 그리는 방법 자체가 이 글의 결과물입니다. 그러니 다른 식으로 한 번 연습해 봅니다. 사전학습에서 쓰는 교차 엔트로피 손실입니다.
먼저 소리 내어 읽습니다. "손실은, 엔부터 시작해서, 각 토큰의 조건부 확률에 로그를 씌운 것을 전부 더하고, 엔으로 나눈 다음, 마이너스를 붙인 것이다."
이제 자리마다 질문을 답니다.
| 자리 | 막히는 질문 | 필요한 수학 |
|---|---|---|
| 무엇을 무엇에 대해 더하는가 | 시그마와 첨자 (3번) | |
| 이게 왜 평균이자 기댓값인가 | 확률변수와 기댓값 (20번) | |
| 조건부 확률의 곱이 왜 문장 확률인가 | 확률의 연쇄법칙 (19번) | |
| 왜 로그를 씌우는가 | 지수와 로그 (18번), 최대가능도 (28번) | |
| 앞의 마이너스 | 왜 부호를 뒤집는가 | 엔트로피와 교차 엔트로피 (27번, 29번) |
다섯 자리가 나왔고, 그중 셋이 어텐션 식의 지도에도 있던 자리입니다. 지수와 로그, 시그마와 첨자, 확률분포 — 이 셋은 어느 식을 쪼개도 나옵니다. 그래서 커리큘럼 앞쪽에 두었습니다.
여기서 한 가지 더 확인할 수 있습니다. 두 식의 지도를 겹쳐 보면 겹치지 않는 자리가 각각의 고유한 어려움입니다. 어텐션 쪽의 고유한 자리는 전치와 행렬곱과 이고, 손실 쪽의 고유한 자리는 조건부 확률과 최대가능도입니다. 어떤 논문에서 막혔을 때 "무엇을 모르는지"를 이 정도 해상도로 말할 수 있으면, 검색어가 정확해지고 필요한 것만 골라 읽게 됩니다.
지도를 쓰는 두 가지 방법
이 커리큘럼에는 두 가지 읽는 방법이 있습니다.
처음부터 순서대로. 앞 글이 뒤 글의 도구를 먼저 정의하도록 순서를 짰기 때문에, 1번부터 차례로 가면 선행 지식 없이 계속 갈 수 있습니다. 중간에 멈춰도 손해가 적도록 단원 경계마다 완결된 묶음이 남습니다. 8번까지면 임베딩 검색에서 "가깝다"가 무엇인지 계산으로 답할 수 있고, 31번까지면 사전학습 손실 한 줄을 스스로 유도할 수 있습니다.
막힌 자리만 골라서. 지금 읽고 있는 논문의 어떤 기호에서 막혔다면 위 표에서 그 자리를 찾아 해당 글만 꺼내 읽으면 됩니다. 각 글은 자기 개념 하나를 AI의 구체적인 장면 하나로 열고 닫도록 썼기 때문에, 한 편만 읽어도 그 자리는 채워집니다.
어느 쪽이든 기준은 하나입니다. 이 개념이 AI의 무엇을 설명하는가를 한 줄로 못 쓰면 그 내용은 이 커리큘럼에 없습니다. 순수 수학 교과서가 다루는 것 중 상당수가 그래서 빠져 있습니다. 가우스 소거법도, 삼각함수 항등식도, 엡실론-델타 극한도 없습니다. 대신 논문에서 실제로 마주치는 것 — 야코비안, KL 발산, 재매개변수화, 라그랑주 승수 — 이 들어 있습니다.
다시 그 페이지로
처음의 논문 3페이지로 돌아갑니다.
이제 이 줄은 하나의 벽이 아니라 다섯 개의 자리입니다. 각 자리에 어떤 질문이 걸려 있고 그 질문의 답이 어디에 있는지 압니다. 여전히 가 왜 제곱근인지는 모르지만, 모르는 것이 "어텐션"이 아니라 "독립인 확률변수 합의 분산"이라는 것은 압니다. 모르는 것의 이름을 정확히 부를 수 있게 되는 것 — 수식을 읽는다는 말의 첫 번째 의미가 그것입니다.
다음 글은 이 지도의 첫 칸입니다. 대문자와 소문자, 굵은 글씨와 정자체, 위 첨자와 아래 첨자가 각각 무엇을 뜻하는지 — 논문 첫 페이지의 Notation 절을 사전 없이 읽고, 거기 적힌 기호가 코드의 어떤 텐서 축에 대응하는지 맞춰 보는 것이 목표입니다.
다음 글: 논문 수식 표기 규약: 스칼라·벡터·행렬·텐서를 구별해서 읽기
읽어주셔서 감사합니다. 😊

