주목이라는 연산 — 트랜스포머로
2026-05-12
시리즈의 마지막 편입니다. 6편에서 신경망은 휘어진 세상을 담는 보편적 도구가 됐지만, 한 가지를 잘 못했습니다 — 문맥입니다. "나는 배를 탔다"와 "나는 배가 아프다"에서 '배'의 의미는 주변 단어에 따라 완전히 달라지죠. 각 단어를 제대로 표현하려면, 그 단어가 다른 단어들 중 무엇에 주목해야 하는지를 정할 수 있어야 합니다.
그 '주목'을 수학으로 만든 연산이 어텐션이고, 이를 쌓은 것이 트랜스포머입니다. 그리고 놀랍게도, 그 심장은 이 시리즈가 1편에서 가장 먼저 세운 도구예요.
규칙 — 좋은 표현은 '무엇에 주목하느냐'에서 나온다. 어텐션은 내적으로 관련도를 매기고, 소프트맥스로 주목 분포를 만들어, 값들을 가중합하는 연산이다.
이 편에서 그 연산을 세우고, 시리즈가 벼려 온 모든 도구가 여기서 어떻게 절정에 모이는지 보며 막을 내립니다.
왜 어텐션인가 — 순서를 넘어 관계로
문맥을 다루려면 각 위치가 다른 위치들을 참고해야 합니다. 예전 방식(순환신경망, RNN)은 단어를 순서대로 하나씩 읽으며 기억을 이어 갔는데, 두 약점이 있었어요 — 순차 처리라 병렬화가 안 되고, 멀리 떨어진 단어 사이의 의존이 긴 경로를 지나며 희미해집니다(6편의 그래디언트 소실이 시간축으로 나타나는 것이죠).
어텐션의 발상은 근본적으로 다릅니다 — 순서를 따라가지 말고, 모든 위치 쌍의 관계를 한 번에 직접 재자는 것. 각 단어가 문장의 어느 단어든 거리에 상관없이 곧장 참고할 수 있게요. 그러면 장거리 의존도 한 걸음이고, 계산도 병렬화됩니다. 문제는 "얼마나 참고할지"를 어떻게 숫자로 정하느냐인데 — 여기서 내적이 등장합니다.
쿼리·키·밸류 — 세 개의 역할
각 토큰은 1편에서 봤듯 벡터 입니다. 어텐션은 이 벡터에서 6편의 선형변환으로 세 개의 벡터를 만들어요.
역할을 검색에 빗대면 선명합니다.
- 쿼리(query) : "내가 지금 찾고 있는 것".
- 키(key) : "내가 가진 꼬리표" — 남들이 나를 찾을 때 맞춰 보는 것.
- 밸류(value) : "내가 실제로 건넬 내용".
한 토큰이 다른 토큰을 얼마나 참고할지는, 내 쿼리와 상대의 키가 얼마나 맞는지로 정합니다. 그리고 "얼마나 맞는지"는 1편에서 세운 바로 그것 — 내적입니다.
어텐션 스코어 — 내적이 돌아오다
토큰 가 토큰 를 얼마나 참고할지의 점수는, 의 쿼리와 의 키의 내적입니다.
1편에서 "내적은 두 벡터가 같은 방향을 얼마나 가리키는지를 재는 유사도"라 했고, 2편에서 코시-슈바르츠로 그 값을 다졌죠. 시리즈가 가장 먼저 세운 그 내적이, 마지막 편에서 **'주목의 정도'**로 돌아온 겁니다. 쿼리와 키가 같은 방향을 가리킬수록 점수가 크고, 그만큼 더 주목합니다.
여기에 한 가지 손질을 더합니다. 키의 차원 가 크면 내적이 많은 항의 합이라 값의 분산이 에 비례해 커져요. 그러면 다음 단계의 소프트맥스가 한쪽으로 쏠려 포화되고, 4편에서 본 것처럼 그래디언트가 0에 가까워져 학습이 멈춥니다. 그래서 로 나눠 분산을 다시 1 근처로 맞춥니다.
이 작은 나눗셈 하나에도 4편의 그래디언트 감각이 배어 있습니다.
규칙 회수 — 주목의 정도는 쿼리와 키의 내적이다. 1편의 내적이 '유사도'에서 '주목'으로 돌아왔고, 로 나눠 소프트맥스 포화(그래디언트 소실)를 막는다.
소프트맥스와 가중합 — 분포로 주목하고, 기댓값으로 모으다
점수는 아직 크기가 제각각인 실수입니다. 이를 합이 1인 주목 분포로 바꾸려면 3편의 소프트맥스를 씁니다.
이제 는 "토큰 가 토큰 에 쏟는 주목의 비율"이고, 모두 더하면 1인 어엿한 확률분포입니다(3편의 분포가 여기 있습니다). 마지막으로 이 주목 비율로 밸류 벡터들을 가중합해 토큰 의 새 표현을 만듭니다.
이 가중합은 3편의 눈으로 보면 주목 분포에 대한 밸류의 기댓값이고, 2편의 눈으로 보면 밸류들을 관련도로 섞은 것 — 예고했던 어텐션의 정체죠. 이 모든 걸 행렬로 한 번에 쓰면, 트랜스포머의 심장이라 불리는 한 줄이 됩니다.
는 모든 토큰의 쿼리·키·밸류를 행으로 쌓은 행렬입니다(1편의 데이터 행렬처럼요). 이 모든 쌍의 내적 점수를 한 번에 만들고, 소프트맥스가 각 행을 분포로 바꾸고, 를 곱해 가중합을 냅니다. 이 한 식에 1·2·3편이 전부 들어 있어요.
규칙 회수 — 소프트맥스가 내적 점수를 합이 1인 주목 분포로 바꾸고, 그 분포로 밸류를 가중합한다. 한 식에 벡터·내적·분포가 모두 담긴다.
멀티헤드 — 여러 관점으로 동시에 주목
한 번의 어텐션은 한 종류의 관계만 봅니다. 하지만 언어에는 여러 관계가 겹쳐 있어요 — 문법적 관계, 의미적 관계, 지시 관계. 그래서 어텐션을 여러 벌 병렬로 돌립니다. 각 '헤드'가 자기만의 로 다른 관점의 주목을 배우죠.
여러 헤드의 결과를 이어 붙이고 한 번 더 선형변환하면 멀티헤드 어텐션이 됩니다.
여러 사람이 같은 문장을 각자 다른 눈으로 읽고 의견을 종합하는 것과 비슷합니다. 하나의 주목이 놓치는 관계를, 다른 헤드가 잡아 줍니다.
트랜스포머 블록 — 마지막 조립
이제 조각을 맞춥니다. 트랜스포머 블록 하나는 멀티헤드 어텐션과 6편의 피드포워드 신경망(FFN)을, 잔차 연결과 층 정규화로 감싼 것입니다.
여기 두 장치는 6편에서 예고한 그대로예요 — 잔차 연결()은 그래디언트가 층을 건너뛰어 곧장 흐르게 해 소실을 막고, 층 정규화는 값의 분포를 안정시켜 깊은 층을 학습 가능하게 합니다. 6편에서 "그래디언트 소실을 달래는 잔차·정규화"라 했던 것이 여기서 실제로 일합니다.
한 가지 빠진 것 — 어텐션은 모든 쌍을 대칭으로 보기에 순서를 모릅니다("나는 너를 본다"와 "너는 나를 본다"를 구별 못 해요). 그래서 각 위치에 **위치 인코딩(positional encoding)**을 더해 순서 정보를 주입합니다. 이 블록을 수십~수백 층 쌓으면, 그것이 GPT 계열을 포함한 트랜스포머입니다.
학습 — 여전히 그 학습 루프
이 거대한 모델은 어떻게 배울까요. 답은 시리즈 내내 세운 그대로입니다 — 새로운 학습법은 없어요. 언어 모델은 다음 토큰의 확률분포를 내놓고(3편의 소프트맥스 출력), 정답 토큰에 확률을 몰아주도록 크로스 엔트로피(3편)로 손실을 재고, 역전파(6편)로 모든 가중치의 그래디언트를 구해, 경사하강(4편)으로 한 걸음씩 내려갑니다. 에이전트 직접 짜기 시리즈에서 우리가 API로 불렀던 그 LLM이, 바로 이 블록을 이 루프로 학습한 것이에요. 실전에서 만졌던 것의 밑바닥이 여기까지 이어집니다.
왜 이것이 정점인가 — 일곱 편이 한 식에 모이다
트랜스포머가 이 시리즈의 종착점인 이유는, 우리가 벼려 온 모든 도구가 여기서 동시에 일하기 때문입니다.
- [1편] 벡터·행렬: 토큰은 벡터, 는 행렬. 모든 것이 벡터 공간의 연산.
- [2편] 내적·유사도: 어텐션 점수가 곧 쿼리·키의 내적.
- [3편] 확률·소프트맥스·크로스 엔트로피: 주목은 분포, 출력도 분포, 손실도 확률에서.
- [4편] 경사하강·연쇄법칙: 학습의 엔진이자 스케일링의 이유.
- [5편] 학습의 삼박자: 모델·손실·최소화의 골격 그대로.
- [6편] 신경망·잔차·역전파: FFN, 잔차 연결, 그래디언트 계산.
말하자면 트랜스포머는 이 시리즈의 문법과 어휘로 쓰인 한 편의 완성된 글입니다. 밑바닥 벡터에서 시작해 여기까지 오르는 동안, 버린 도구가 하나도 없어요.
정직하게 — 정점에도 그늘은 있다
가장 강력한 구조지만, 트랜스포머도 한계 위에 섭니다.
- 어텐션은 이차로 비싸다. 모든 쌍의 점수를 재니 토큰 수 에 대해 계산과 메모리가 입니다. 긴 문맥일수록 급격히 비싸지고, 이걸 줄이려는 효율적 어텐션 연구가 지금도 활발합니다.
- 순서는 덧붙인 것이다. 위치 인코딩은 순서를 사후에 주입하는 것이라, 아주 긴 시퀀스나 학습 때 못 본 길이에서 일반화가 흔들릴 수 있습니다.
- 규모에 굶주린다. 이 표현력을 채우려면 방대한 데이터와 계산이 듭니다. 성능의 상당 부분이 구조의 우아함만이 아니라 규모에서 오죠.
- 어텐션은 '이해'가 아니다. 주목 가중치가 크다고 모델이 그 관계를 인간처럼 '이해'하는 건 아닙니다. 트랜스포머가 하는 일은 여전히 방대한 데이터에서 학습한 통계적 패턴을 재현하는 것 — 놀랍도록 잘 하지만, 그 본질을 잊으면 능력도 한계도 잘못 읽게 됩니다.
이 넷을 알고 보면, 트랜스포머는 신비가 아니라 잘 설계된 수학으로 보입니다 — 이 시리즈가 처음부터 노린 시선이 그것이었습니다.
시리즈를 닫으며
1편에서 "AI는 세상을 벡터로 놓는 데서 시작한다"고 했습니다. 일곱 편을 지나 도착한 트랜스포머는, 그 벡터들 사이의 내적으로 주목을 정하고 확률로 분포를 빚는 구조였어요. 밑바닥 수학에서 시작해 트랜스포머까지, 새로운 마법은 한 번도 없었습니다 — 벡터·거리·확률·미분이라는 오래된 수학이, 층층이 쌓여 지금의 AI가 된 것이죠.
'에이전트 직접 짜기'가 AI를 어떻게 만드는지의 실전이었다면, 이 시리즈는 그것이 왜 도는지의 이론이었습니다. 이제 그 둘이 만납니다 — 에이전트가 API로 부르던 LLM의 안쪽이, 오늘의 이 블록과 학습 루프입니다. 표면에서 밑바닥까지 한 줄기로 이어진 셈이에요.
정리 — 주목으로 완성하다
- 어텐션의 동기: 문맥을 다루려면 각 위치가 다른 위치에 얼마나 주목할지 정해야 한다. 순서를 넘어 모든 쌍의 관계를 한 번에.
- QKV: 각 토큰에서 쿼리·키·밸류를 선형변환으로 만든다(찾는 것·꼬리표·건넬 내용).
- 스코어 = 내적: 주목은 쿼리·키의 내적(1·2편). 로 나눠 소프트맥스 포화를 막는다(4편).
- 분포와 가중합: 소프트맥스로 주목 분포(3편), 밸류의 가중합(기댓값·투영). .
- 멀티헤드·블록: 여러 관점을 병렬로, 잔차·층정규화·위치 인코딩으로 감싸 쌓는다(6편).
- 학습: 다음 토큰 예측을 크로스 엔트로피로, 역전파와 경사하강으로. 새 학습법은 없다.
- 정직하게: 비용, 순서는 덧붙인 것, 규모 의존, 어텐션은 이해가 아니라 통계적 패턴.
일곱 편으로 밑바닥 벡터에서 트랜스포머까지 한 줄기를 그었습니다. 여기서 시리즈를 닫습니다. 읽어 주셔서 고맙습니다.
핵심 한 줄 — 트랜스포머의 심장은 시리즈가 가장 먼저 세운 내적이다. 쿼리와 키의 내적으로 주목을 재고, 소프트맥스로 분포를 만들어, 밸류를 가중합한다. 밑바닥 벡터에서 여기까지, 새로운 마법은 없었다 — 오래된 수학이 층층이 쌓여 AI가 되었다.