행렬 곱Matrix Multiplication
표의 가로줄과 세로줄을 짝지어 곱해 더하는 계산
- 행렬 곱은 표 두 장을 겹쳐 새 표 한 장을 만드는 계산이에요. 가로줄과 세로줄을 짝지어 곱한 뒤 모두 더한 값을 칸 하나에 적어요.
- 신경망이 한 층을 지나가는 일이 바로 이 계산이에요. 들어온 숫자 한 줄과 가중치 한 줄이 만나 다음 층의 숫자 한 칸이 돼요.
- AI가 하는 일의 거의 전부가 이 곱하고 더하기의 반복이에요. 계산이 어려운 게 아니라 횟수가 어마어마하게 많은 게 어려워요.
- 칸마다 계산이 서로 상관이 없어서 한꺼번에 나눠 맡길 수 있어요. GPU가 필요한 이유가 여기 있어요.
- 아무 표나 곱해지지는 않아요. 앞 표의 가로 길이와 뒤 표의 세로 길이가 같아야 짝이 지어져요.
목차
1비유로 이해하기
분식집에 반 전체 간식을 한꺼번에 시켰어요. 손에는 종이 두 장이 있어요. 한 장은 주문표예요. 가로줄 하나가 학생 한 명이고, 그 줄에 김밥 몇 줄, 떡볶이 몇 인분을 적어 두었어요. 다른 한 장은 가격표예요. 세로줄 하나가 값이고, 옆 세로줄에는 열량이 적혀 있어요.
이제 학생별로 낼 돈을 구해요. 주문표에서 그 학생의 가로줄을 왼손으로 짚고, 가격표에서 값이 적힌 세로줄을 오른손으로 짚어요. 김밥 개수에 김밥 값을 곱하고, 떡볶이 개수에 떡볶이 값을 곱해요. 이렇게 짝지어 곱한 값을 전부 더해 새 종이의 한 칸에 적어요.
손가락을 옮겨 가며 모든 칸을 채우면 새 표 한 장이 완성돼요. 이 일이 행렬 곱이에요.
2자세히 알아보기
칸 하나를 채우는 순서
새 표의 한 칸을 채우려면 딱 두 줄만 있으면 돼요. 앞 표에서 가로줄 하나, 뒤 표에서 세로줄 하나예요. 두 줄의 첫 번째끼리 곱하고, 두 번째끼리 곱하고, 끝까지 그렇게 곱한 다음 나온 값을 전부 더해요. 그 합이 한 칸에 들어갈 숫자예요.
그래서 새 표의 세로 길이는 앞 표의 가로줄 개수와 같고, 가로 길이는 뒤 표의 세로줄 개수와 같아요. 학생이 서른 명이고 구하려는 항목이 값과 열량 두 가지라면, 결과는 서른 줄에 두 칸짜리 표가 돼요.
한 칸을 채우는 데 드는 곱셈 횟수는 짝지은 줄의 길이만큼이에요. 메뉴가 다섯 가지면 곱셈 다섯 번과 덧셈 네 번이에요. 계산 자체는 초등학교 산수인데, 칸이 많아지면 이 산수를 감당하기 어려운 횟수로 되풀이해야 해요.
신경망 한 층이 곧 이 계산이에요
신경망은 숫자 한 줄을 받아 다른 숫자 한 줄로 바꿔 내보내요. 이 변환이 바로 행렬 곱이에요. 들어온 숫자 줄이 주문표의 가로줄이고, 층이 가지고 있는 가중치가 가격표예요. 가중치 표의 세로줄 하나가 다음 층의 칸 하나를 만들어요.
가중치 표에 적힌 숫자는 학습으로 정해진 값이에요. 학습이 끝나면 이 표는 고정돼요. 우리가 질문을 넣을 때마다 모델이 하는 일은 새 숫자 줄을 이 표에 통과시키는 것뿐이에요.
층이 백 개면 이 통과를 백 번 되풀이해요. 앞 층에서 나온 결과 표가 다음 층의 입력 표가 되고, 다시 그 층의 가중치 표와 만나요. 어텐션도, 이미지 모델의 합성곱도 안을 들여다보면 결국 크기와 모양만 다른 곱하고 더하기예요.
계산은 쉬운데 횟수가 무서워요
모델이 가진 가중치 개수가 수십억 개라는 말은 가격표 칸이 수십억 개라는 뜻이에요. 조각 하나를 처리할 때마다 그 칸들을 한 번씩은 지나가야 하니, 답 한 줄을 만드는 사이에 곱하고 더하기가 조 단위로 일어나요.
한 사람이 계산기를 두드려서는 평생이 걸려요. 그래서 AI 이야기에 자꾸 연산량과 전기 요금이 따라붙어요. 성능을 올리려고 층을 늘리고 표를 키우면 곱셈 횟수는 그보다 빠르게 불어나요.
칸마다 따로 놀아서 GPU가 통해요
다행히 이 계산에는 좋은 성질이 하나 있어요. 새 표의 어떤 칸도 옆 칸의 결과를 기다리지 않아요. 첫째 줄 첫째 칸을 채우는 사람과 셋째 줄 다섯째 칸을 채우는 사람이 서로 말을 섞을 필요가 없어요.
그래서 계산기를 수천 개 나눠 주고 한꺼번에 시킬 수 있어요. GPU가 하는 일이 이거예요. 어려운 계산을 잘하는 장치가 아니라, 쉬운 계산을 동시에 아주 많이 하는 장치예요. 그래픽 메모리 용량이 자주 문제가 되는 것도 표를 통째로 올려 두어야 하기 때문이에요.
모양이 맞아야 곱해져요
주문표의 가로 칸이 다섯 개인데 가격표의 세로 칸이 네 개라면 짝을 지을 수 없어요. 마지막 하나가 짝 없이 남아요. 그래서 앞 표의 가로 길이와 뒤 표의 세로 길이가 반드시 같아야 해요.
모델을 만들 때 층마다 표 크기를 맞추는 일이 큰 몫을 차지하는 이유예요. 순서를 바꾸는 것도 마음대로 되지 않아요. 주문표에 가격표를 곱하는 것과 가격표에 주문표를 곱하는 것은 다른 결과를 내거나 아예 곱해지지 않아요.
3조금 더 정확하게
행렬은 숫자를 가로세로로 늘어놓은 표이고, 행렬 곱은 앞 행렬의 행과 뒤 행렬의 열을 성분끼리 곱해 더한 값을 결과 행렬의 자리에 놓는 연산이에요. 이 연산은 순서를 바꿀 수 없지만 묶는 방법은 바꿀 수 있어서, 여러 층을 미리 하나로 합쳐 두는 최적화가 가능해요.
비유가 어긋나는 지점도 있어요. 분식집 계산에서는 값이 모두 양수이고 단위도 명확하지만, 신경망의 가중치는 음수도 많고 단위가 없어요. 곱한 값을 더하면 서로 상쇄되기도 해요. 또 실제 모델은 한 사람씩 계산하지 않고 여러 사람의 주문표를 한 장으로 쌓아 한 번에 통과시켜요. 이렇게 묶는 덩어리가 배치예요. 층 사이마다 곱셈만으로는 만들 수 없는 굽은 변화를 넣어 주는 활성화 함수가 끼어든다는 점도 달라요. 그게 없으면 층을 아무리 쌓아도 표 한 장으로 합쳐져 버려요.
4직접 해보기
5흔한 오해
행렬 곱이 칸끼리 하나씩 곱하는 것이라고 생각하기 쉽지만, 실제로는 가로줄과 세로줄을 통째로 짝지어 곱한 뒤 더한 값을 한 칸에 적어요.
AI 안에서는 아주 복잡한 수학이 돌아간다고 여기기 쉽지만, 실제로는 곱하기와 더하기가 거의 전부이고 그 횟수만 상상 밖으로 많아요.
GPU가 CPU보다 똑똑해서 빠르다고 생각하기 쉽지만, 실제로는 서로 상관없는 쉬운 계산을 동시에 잔뜩 처리하도록 만들어졌을 뿐이에요.
7한 줄 요약
그러니까행렬 곱은 가로줄과 세로줄을 짝지어 곱해 더한 값을 칸에 적는 계산이고, AI가 하는 일은 이 계산을 어마어마한 횟수로 되풀이하는 것이에요.
잘못된 내용이나 더 좋은 비유가 있나요? 수정 제안 보내기 · 마지막 수정2026-09-02