devlog.

벡터, 선형 변환, 행렬 곱셈과 역행렬: 선형대수 기초 3장

·13분 읽기·

2장에서는 소거법과 가우스 소거법으로 방정식 시스템을 풀었습니다. 이번 글에서는 머신러닝의 핵심 데이터 구조인 벡터(Vector) 를 깊이 파고들고, 선형 변환, 행렬 곱셈, 역행렬, 그리고 이것이 뉴럴 네트워크 에 어떻게 연결되는지까지 살펴봅니다.

이 글은 DeepLearning.AI의 Mathematics for Machine Learning and Data Science 3주차 내용을 기반으로 정리했습니다.

이번 글에서 배우는 것#

  • 벡터의 합, 차, 스칼라 곱, 점곱(dot product) 연산
  • 행렬과 벡터의 곱셈
  • 선형 변환(Linear Transformation) 의 개념과 행렬로 표현하는 방법
  • 행렬 곱셈 — 두 선형 변환의 합성
  • 역행렬(Inverse Matrix) 계산과 존재 조건
  • 퍼셉트론(Perceptron) — 행렬 연산으로 보는 뉴럴 네트워크

벡터란 무엇인가#

벡터는 평면 또는 고차원 공간의 화살표로 생각할 수 있습니다. 두 가지 핵심 성질이 있습니다.

  • 크기(Magnitude): 화살표의 길이
  • 방향(Direction): 화살표가 가리키는 방향

머신러닝에서 데이터 하나의 인스턴스(관측값)는 보통 벡터로 표현됩니다.

v=[34]\vec{v} = \begin{bmatrix} 3 \\ 4 \end{bmatrix}


벡터의 노름 (Norm)#

노름(Norm)은 벡터의 크기, 즉 원점에서 해당 점까지의 거리입니다.

L1-노름 (맨해튼 노름)#

좌표의 절댓값을 모두 더한 값입니다. 격자 도시에서 블록을 따라 이동하는 거리와 같습니다.

v1=v1+v2++vn\|\vec{v}\|_1 = |v_1| + |v_2| + \cdots + |v_n|

v=(3,4)v1=3+4=7\vec{v} = (3, 4) \Rightarrow \|\vec{v}\|_1 = 3 + 4 = 7

L2-노름 (유클리드 노름)#

좌표의 제곱합의 제곱근입니다. 피타고라스 정리로 빗변을 구하는 것과 같습니다.

v2=v12+v22++vn2\|\vec{v}\|_2 = \sqrt{v_1^2 + v_2^2 + \cdots + v_n^2}

v=(3,4)v2=9+16=25=5\vec{v} = (3, 4) \Rightarrow \|\vec{v}\|_2 = \sqrt{9 + 16} = \sqrt{25} = 5

실무에서는? L2-노름은 정규화(regularization)에서 가중치의 크기를 제한할 때(L2 regularization, Ridge) 사용하고, L1-노름은 희소성(sparsity)을 유도하는 L1 regularization(Lasso)에서 사용합니다.


벡터의 합과 차#

대응하는 좌표끼리 더하거나 빼면 됩니다.

u=(1,3),v=(6,2)\vec{u} = (1, 3), \quad \vec{v} = (6, 2)

u+v=(1+6, 3+2)=(7,5)\vec{u} + \vec{v} = (1+6,\ 3+2) = (7, 5)

uv=(16, 32)=(5,1)\vec{u} - \vec{v} = (1-6,\ 3-2) = (-5, 1)

기하학적으로 u+v\vec{u} + \vec{v} 는 두 벡터가 만드는 평행사변형의 대각선입니다.


벡터 간 거리#

두 벡터의 차(difference) 를 구한 뒤, L1 또는 L2 노름을 적용합니다.

u=(3,6),v=(5,2)\vec{u} = (3, 6), \quad \vec{v} = (5, 2)

uv=(2,4)\vec{u} - \vec{v} = (-2, 4)

L1 거리=2+4=6\text{L1 거리} = |-2| + |4| = 6

L2 거리=(2)2+42=4+16=20\text{L2 거리} = \sqrt{(-2)^2 + 4^2} = \sqrt{4 + 16} = \sqrt{20}


스칼라 곱 (Scalar Multiplication)#

벡터의 각 좌표에 스칼라(상수)를 곱합니다.

kv=k[v1v2]=[kv1kv2]k \cdot \vec{v} = k \cdot \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = \begin{bmatrix} k v_1 \\ k v_2 \end{bmatrix}

  • 양수 스칼라: 같은 방향으로 크기만 변함
  • 음수 스칼라: 방향이 반대로 바뀌고 크기가 변함
  • 스칼라 = 0: 영벡터(zero vector)가 됨

u=(3,5),6u=(18,30)\vec{u} = (3, 5),\quad 6\vec{u} = (18, 30)


점곱 (Dot Product)#

대응하는 좌표를 곱해서 모두 더합니다. 결과는 스칼라입니다.

ab=a1b1+a2b2++anbn\vec{a} \cdot \vec{b} = a_1 b_1 + a_2 b_2 + \cdots + a_n b_n

u=(1,2,3),v=(0,3,5)\vec{u} = (1, 2, 3),\quad \vec{v} = (0, 3, 5)

uv=(10)+(23)+(35)=0+6+15=21\vec{u} \cdot \vec{v} = (1 \cdot 0) + (2 \cdot 3) + (3 \cdot 5) = 0 + 6 + 15 = 21

기하학적 점곱#

점곱은 두 벡터의 각도와 밀접한 관계가 있습니다.

ab=a2b2cosθ\vec{a} \cdot \vec{b} = \|\vec{a}\|_2 \cdot \|\vec{b}\|_2 \cdot \cos\theta

cosθ\cos\theta각도점곱 부호
cosθ>0\cos\theta > 0θ<90°\theta < 90° (같은 방향)양수
cosθ=0\cos\theta = 0θ=90°\theta = 90° (직교)0
cosθ<0\cos\theta < 0θ>90°\theta > 90° (반대 방향)음수

핵심: 두 벡터가 직교(orthogonal) 이면 점곱은 항상 0입니다.

실무에서는? 코사인 유사도(cosine similarity)는 점곱을 두 벡터의 L2-노름 곱으로 나눈 값으로, 자연어 처리에서 문장 간 유사도를 측정할 때 사용됩니다.


행렬과 벡터의 곱#

행렬의 각 행(row) 과 벡터의 점곱을 계산합니다.

[abcd][xy]=[ax+bycx+dy]\begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} ax + by \\ cx + dy \end{bmatrix}

예시:

[351214][xyz]=[3x+5y+z2xy+4z]\begin{bmatrix} 3 & 5 & 1 \\ 2 & -1 & 4 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} = \begin{bmatrix} 3x + 5y + z \\ 2x - y + 4z \end{bmatrix}

주의: 행렬의 열(column) 수가 벡터의 길이와 반드시 일치해야 합니다.

이처럼 행렬-벡터 곱은 방정식 시스템을 컴팩트하게 표현하는 방법입니다.


선형 변환 (Linear Transformation)#

선형 변환은 평면의 각 점을 구조적인 방식으로 다른 점으로 보내는 함수입니다.

T:RnRmT: \mathbb{R}^n \rightarrow \mathbb{R}^m

행렬-벡터 곱 AxA\vec{x} 가 바로 선형 변환입니다. 행렬 AA 가 변환 규칙을 정의합니다.

행렬로 선형 변환 찾기#

선형 변환 TT 의 행렬을 구하려면:

  • 1열: T(1,0)T(1, 0) 의 결과
  • 2열: T(0,1)T(0, 1) 의 결과

예시: T(1,0)=(4,1)T(1, 0) = (4, 1), T(0,1)=(1,2)T(0, 1) = (1, 2) 이면

A=[4112]A = \begin{bmatrix} 4 & 1 \\ 1 & 2 \end{bmatrix}


행렬 곱셈 (Matrix Multiplication)#

행렬 곱셈은 두 선형 변환을 합성하는 연산입니다. 변환 BB 를 먼저 적용하고, 그 다음 AA 를 적용한 결과가 ABAB 입니다.

C=ABC = AB

CC(i,j)(i, j) 원소는 AAii번째 BBjj번째 의 점곱입니다.

Cij=kAikBkjC_{ij} = \sum_k A_{ik} B_{kj}

예시:

A=[122102],B=[3112]A = \begin{bmatrix} 1 & 2 \\ 2 & -1 \\ 0 & 2 \end{bmatrix}, \quad B = \begin{bmatrix} 3 & 1 \\ 1 & -2 \end{bmatrix}

AB=[(13+21)(11+2(2))(23+(1)1)(21+(1)(2))(03+21)(01+2(2))]=[535424]AB = \begin{bmatrix} (1\cdot3 + 2\cdot1) & (1\cdot1 + 2\cdot(-2)) \\ (2\cdot3 + (-1)\cdot1) & (2\cdot1 + (-1)\cdot(-2)) \\ (0\cdot3 + 2\cdot1) & (0\cdot1 + 2\cdot(-2)) \end{bmatrix} = \begin{bmatrix} 5 & -3 \\ 5 & 4 \\ 2 & -4 \end{bmatrix}

주의: ABBAAB \neq BA — 행렬 곱셈은 교환법칙이 성립하지 않습니다.

크기 조건: AAm×km \times k, BBk×nk \times n 이면, ABABm×nm \times n 입니다. AA열 수BB행 수가 일치해야 합니다.


단위 행렬 (Identity Matrix)#

대각 원소가 모두 1이고 나머지는 0인 행렬입니다.

I=[1001],I=[100010001]I = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}, \quad I = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

단위 행렬을 선형 변환으로 적용하면 벡터/행렬이 그대로 유지됩니다.

IA=AI=AIA = AI = A

숫자에서 1×a=a1 \times a = a 와 동일한 역할입니다.


역행렬 (Inverse Matrix)#

행렬 AA 의 역행렬 A1A^{-1} 은 다음을 만족합니다.

AA1=A1A=IA \cdot A^{-1} = A^{-1} \cdot A = I

선형 변환으로 보면, 역행렬은 원래 변환을 되돌리는(undo) 변환입니다.

역행렬 구하기#

선형방정식 시스템을 풀면 역행렬을 구할 수 있습니다.

A=[2114],A1=[abcd]A = \begin{bmatrix} 2 & 1 \\ 1 & 4 \end{bmatrix}, \quad A^{-1} = \begin{bmatrix} a & b \\ c & d \end{bmatrix}

AA1=IA \cdot A^{-1} = I 조건에서:

{2a+c=1a+4c=0a=47, c=17\begin{cases} 2a + c = 1 \\ a + 4c = 0 \end{cases} \Rightarrow a = \frac{4}{7},\ c = -\frac{1}{7}

{2b+d=0b+4d=1b=17, d=27\begin{cases} 2b + d = 0 \\ b + 4d = 1 \end{cases} \Rightarrow b = -\frac{1}{7},\ d = \frac{2}{7}

A1=17[4112]A^{-1} = \frac{1}{7}\begin{bmatrix} 4 & -1 \\ -1 & 2 \end{bmatrix}

어떤 행렬이 역행렬을 가지는가?#

  • 비특이 행렬(Non-singular): 역행렬 존재 (det0\det \neq 0)
  • 특이 행렬(Singular): 역행렬 없음 (det=0\det = 0)

det(A)=0A1 존재하지 않음\det(A) = 0 \Rightarrow A^{-1} \text{ 존재하지 않음}

역행렬은 방정식 시스템을 행렬 형태로 풀 때 사용됩니다: Ax=bA\vec{x} = \vec{b}x=A1b\vec{x} = A^{-1}\vec{b}


뉴럴 네트워크와 행렬 — 퍼셉트론#

지금까지 배운 개념이 머신러닝 모델에서 어떻게 쓰이는지 봅시다.

퍼셉트론 (Perceptron)#

퍼셉트론은 가장 단순한 형태의 뉴럴 네트워크입니다. 입력 데이터를 행렬 곱으로 계산하고, 결과가 임계값(threshold)을 초과하면 1(활성화), 아니면 0을 출력합니다.

출력={1if wxthreshold0otherwise\text{출력} = \begin{cases} 1 & \text{if } \vec{w} \cdot \vec{x} \geq \text{threshold} \\ 0 & \text{otherwise} \end{cases}

구성 요소행렬/벡터 역할
입력 데이터 x\vec{x}벡터 (각 피처가 원소)
가중치 w\vec{w}벡터 (모델 파라미터)
wx\vec{w} \cdot \vec{x}점곱 → 스칼라 출력
임계값(threshold)활성화 여부 결정

AND 연산자 예시#

복권 당첨시험 합격장학금 여부
000
100
010
111

가중치를 복권=1점, 시험=1점, 임계값=1.5로 설정하면:

w=(1,1),threshold=1.5\vec{w} = (1, 1), \quad \text{threshold} = 1.5

  • (0,0)(0, 0): 0<1.50 < 1.5 → 0 ✓
  • (1,0)(1, 0): 1<1.51 < 1.5 → 0 ✓
  • (0,1)(0, 1): 1<1.51 < 1.5 → 0 ✓
  • (1,1)(1, 1): 21.52 \geq 1.5 → 1 ✓

이것이 바로 AND 게이트를 퍼셉트론으로 구현한 것입니다.

더 큰 모델에서#

여러 개의 데이터 인스턴스를 한 번에 처리할 때는 행렬 곱셈을 사용합니다.

XW=예측값 행렬X \cdot W = \text{예측값 행렬}

  • XX: 데이터 행렬 (각 행이 하나의 데이터 인스턴스)
  • WW: 가중치 행렬 (모델 파라미터)

딥러닝 모델은 이런 행렬 곱셈을 수백~수천 층에 걸쳐 반복합니다. GPU가 행렬 연산에 최적화되어 있기 때문에 딥러닝이 GPU를 필요로 하는 것입니다.


핵심 정리#

개념설명
벡터크기와 방향을 가진 데이터 표현 단위
L1-노름좌표 절댓값의 합 (맨해튼 거리)
L2-노름좌표 제곱합의 제곱근 (유클리드 거리)
점곱대응 좌표를 곱해 더한 스칼라 값
직교점곱 = 0, 두 벡터가 90°
선형 변환행렬-벡터 곱으로 표현되는 구조적 변환
행렬 곱셈두 선형 변환의 합성 (교환법칙 불성립)
단위 행렬곱해도 변하지 않는 행렬 (AI=IA=AAI = IA = A)
역행렬원래 변환을 되돌리는 행렬 (비특이일 때만 존재)
퍼셉트론점곱 + 임계값으로 구현되는 단순 뉴럴 네트워크

퀴즈#

Q1. 다음 벡터의 L1-노름과 L2-노름을 구하세요.

v=(3,4)\vec{v} = (-3, 4)

정답 보기

v1=3+4=3+4=7\|\vec{v}\|_1 = |-3| + |4| = 3 + 4 = 7

v2=(3)2+42=9+16=25=5\|\vec{v}\|_2 = \sqrt{(-3)^2 + 4^2} = \sqrt{9 + 16} = \sqrt{25} = 5


Q2. u=(2,1,3)\vec{u} = (2, -1, 3), v=(1,4,2)\vec{v} = (1, 4, -2) 일 때, 점곱을 구하세요.

정답 보기

uv=(21)+((1)4)+(3(2))=246=8\vec{u} \cdot \vec{v} = (2 \cdot 1) + ((-1) \cdot 4) + (3 \cdot (-2)) = 2 - 4 - 6 = -8

점곱이 음수이므로 두 벡터의 사잇각은 90°보다 큽니다.


Q3. 다음 행렬 곱셈을 계산하세요.

[2013][1421]\begin{bmatrix} 2 & 0 \\ 1 & 3 \end{bmatrix} \begin{bmatrix} 1 & 4 \\ 2 & -1 \end{bmatrix}

정답 보기

[(21+02)(24+0(1))(11+32)(14+3(1))]=[2871]\begin{bmatrix} (2\cdot1 + 0\cdot2) & (2\cdot4 + 0\cdot(-1)) \\ (1\cdot1 + 3\cdot2) & (1\cdot4 + 3\cdot(-1)) \end{bmatrix} = \begin{bmatrix} 2 & 8 \\ 7 & 1 \end{bmatrix}


Q4. 선형 변환 T(1,0)=(2,1)T(1, 0) = (2, -1), T(0,1)=(3,4)T(0, 1) = (3, 4) 를 행렬로 표현하세요.

정답 보기

1열 = T(1,0)=(2,1)T(1, 0) = (2, -1), 2열 = T(0,1)=(3,4)T(0, 1) = (3, 4)

A=[2314]A = \begin{bmatrix} 2 & 3 \\ -1 & 4 \end{bmatrix}


Q5. 다음 행렬의 역행렬이 존재하는지 판단하고, 존재한다면 구하세요.

A=[2412]A = \begin{bmatrix} 2 & 4 \\ 1 & 2 \end{bmatrix}

정답 보기

det(A)=(2×2)(4×1)=44=0\det(A) = (2 \times 2) - (4 \times 1) = 4 - 4 = 0

행렬식이 0이므로 AA특이 행렬이며, 역행렬이 존재하지 않습니다.


다음 글에서는 행렬식의 기하학적 의미(넓이로서의 행렬식), 고유값·고유벡터 계산법, 차원 축소(PCA), 그리고 마르코프 행렬 까지 다룰 예정입니다.

관련 포스트