수학적 직관 다지기 · Chapter 4

행렬 곱셈 — 변환을 하나로 합치기

— "회전하고 확대하기"를 미리 한 행렬로 합쳐두는 법

눈높이: 고2 키워드: 행렬곱 · 합성 · 행×열 · 비교환성

이 코스의 목적은 AI와 LLM을 만들고 이해하기 위한 수학이다. 3장에서 "행렬 하나 = 변환 하나"를 배웠다. 4장의 질문은 이것 — 변환을 연달아 하면 어떻게 될까? 그리고 그 두 변환을 미리 하나로 합쳐둘 수 있을까? 이 합치기가 바로 신경망이 층층이 쌓이는 원리다.

1 변환을 연달아 — 합성

3장의 두 변환을 쓴다. 90도 회전과 2배 확대.

$$R = \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \quad(\text{90도 회전}), \qquad S = \begin{bmatrix} 2 & 0 \\ 0 & 2 \end{bmatrix}\quad(\text{2배 확대})$$

화살표 \((1,0)\)을 먼저 회전, 그 결과를 확대해 보자.

$$(1,0) \xrightarrow{\;R\;} (0,1) \xrightarrow{\;S\;} (0,2)$$

오른쪽을 가리키던 화살표가 회전으로 위를 향하고, 확대로 2배 길어졌다. 이렇게 변환을 순서대로 이어 붙이는 것을 합성(composition)이라 한다.

2 두 변환을 하나로 — 행렬 곱셈

화살표가 1개면 두 단계가 괜찮다. 하지만 1만 개라면? 매번 두 번 계산하는 건 낭비다. 그래서 "회전하고 확대하는" 두 변환을 미리 하나의 행렬로 합쳐둔다. 이 합치기가 행렬 곱셈이다.

합치는 방법은 3장의 가장 강력한 관점에서 나온다 — 행렬은 "기준 축이 어디로 가는지" 적어둔 것. 그러니 합친 행렬 \(C\)의 각 기둥은 "그 축이 회전→확대를 다 거친 뒤 어디로 가나"이다.

$$(1,0) \xrightarrow{R} (0,1) \xrightarrow{S} (0,2) \;\Rightarrow\; \text{첫째 기둥} = \begin{bmatrix}0\\2\end{bmatrix}$$ $$(0,1) \xrightarrow{R} (-1,0) \xrightarrow{S} (-2,0) \;\Rightarrow\; \text{둘째 기둥} = \begin{bmatrix}-2\\0\end{bmatrix}$$

두 기둥을 세로로 세우면 합친 행렬이 된다.

$$C = S R = \begin{bmatrix} 0 & -2 \\ 2 & 0 \end{bmatrix}$$
이제 화살표가 1만 개여도 \(C\) 하나만 곱하면 회전+확대가 한 번에 끝난다.
오늘의 핵심

"90도 돌리는 변환"과 "2배 하는 변환"을 따로 두 번 할 필요 없이, 두 행렬을 미리 곱해 하나로 합쳐두면 그 하나로 한 번에 끝낼 수 있다. 이것이 행렬 곱셈이고, 신경망이 여러 층을 쌓는 원리의 바닥이다.

3 계산 규칙 — 행 × 열

매번 축을 넣어 구하는 대신, 곧장 계산하는 규칙이 있다. 결과 행렬의 각 칸 = (왼쪽 행렬의 한 행) 과 (오른쪽 행렬의 한 열) 의 내적. 2장에서 배운 그 내적(자리끼리 곱해 더하기)이 그대로 재활용된다.

$$\begin{bmatrix} a & b \\ c & d \end{bmatrix}\begin{bmatrix} e & f \\ g & h \end{bmatrix} = \begin{bmatrix} ae+bg & af+bh \\ ce+dg & cf+dh \end{bmatrix}$$
왼쪽 위 칸 = 첫째 \((a,b)\) · 첫째 \((e,g)\) 의 내적 = \(ae+bg\). 위치 "몇째 행 × 몇째 열"이 어느 행·열을 내적할지 정한다.

우리 예시로 검산하면 \(C = SR\):

$$\begin{bmatrix} 2 & 0 \\ 0 & 2 \end{bmatrix}\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} = \begin{bmatrix} 2\cdot0+0\cdot1 & 2\cdot(-1)+0\cdot0 \\ 0\cdot0+2\cdot1 & 0\cdot(-1)+2\cdot0 \end{bmatrix} = \begin{bmatrix} 0 & -2 \\ 2 & 0 \end{bmatrix}$$

축을 일일이 넣어 구한 결과와 똑같다. 직관("축이 어디로 가나")과 기계적 규칙("행×열")이 같은 곳에서 만난다.

자리 헷갈림 주의

행렬을 읽을 때 윗줄 = 새 x를 만드는 법, 아랫줄 = 새 y를 만드는 법. 회전행렬 윗줄 \((0,-1)\)은 "새 \(x = 0\cdot x + (-1)\cdot y\)"라는 뜻 — 원래 \(y\)에 붙은 \(-1\)이 새 \(x\)로 간다(새 \(y\)가 아니라!). 그래서 \((0,1)\)을 회전하면 \((-1, 0)\)이다.

4 순서가 결과를 바꾼다 — 비교환성

정수 곱셈은 \(3\times5 = 5\times3\), 순서를 바꿔도 같다(교환법칙). 하지만 행렬 곱셈은 다르다.

$$AB \neq BA \quad(\text{일반적으로})$$

왜? "x만 3배" 같은 비균일 변환 \(S' = \begin{bmatrix}3&0\\0&1\end{bmatrix}\) 과 회전 \(R\) 로 \((1,1)\)을 보내 보면 갈린다.

$$\text{회전 먼저} : (1,1) \xrightarrow{R}(-1,1)\xrightarrow{S'}(-3,1)$$ $$\text{확대 먼저} : (1,1) \xrightarrow{S'}(3,1)\xrightarrow{R}(-1,3)$$

같은 두 변환인데 순서만 바꿨더니 \((-3,1)\) vs \((-1,3)\) 으로 완전히 달라진다.

언제 순서가 상관없고, 언제 중요한가

균일 확대(모든 축을 같은 비율로)는 방향을 안 건드려 회전과 안 부딪힌다 → 순서 무관. 비균일 변환(특정 방향만 잡아당김)은 방향을 건드려 회전과 부딪힌다 → 순서 중요. 핵심은 "두 변환이 서로의 작업을 방해하는가". 기본값은 순서가 중요하다.

실무 연결 — 신경망에서 "층을 어떤 순서로 쌓느냐"가 중요한 이유가 여기 있다. 변환(행렬)을 어떤 순서로 곱하느냐에 따라 전혀 다른 함수가 된다. 순서가 의미를 만든다.
두 변환을 미리 한 행렬로 곱해두면,
화살표가 몇 개든 한 번에 끝난다. 단, 곱하는 순서는 결과를 바꾼다.
— 4장 한 줄 요약

이번 장 한눈에 정리

다음 장 예고

지금까지 변환(3장)과 변환의 합성(4장)을 봤다. 다음은 고유값·고유벡터 — 변환을 해도 방향이 안 변하는 "특별한 축"이다. 3장에서 다룬 압축(PCA)의 진짜 심장이자, 선형대수에서 가장 아름다운 부분으로 들어간다.