[기본기 0-1] 딥러닝을 위한 선형대수 기초

난이도: 기초

태그: 기초수학,최적화,딥러닝기초

분류: foundations

타입: concept

선수지식: 없음

딥러닝 모델은 결국 벡터와 행렬을 반복 계산하는 구조입니다. 이 문서는 입문자가 수식을 읽고 코드와 연결할 수 있도록 선형대수 핵심만 압축 정리합니다.

선형대수를 볼 때는 "벡터는 값의 묶음", "행렬은 그 값을 한 번에 바꾸는 규칙"이라고 잡고 시작하면 수식이 훨씬 덜 추상적으로 느껴진다.

딥러닝에서 데이터는 거의 항상 벡터 형태로 표현된다. 이미지도 숫자의 집합이고, 단어도 embedding 벡터이며, 배치 전체는 행렬이나 텐서가 된다. 그래서 선형대수는 별도의 이론이라기보다 신경망이 계산되는 기본 언어에 가깝다.

중요한 것은 공식을 외우는 것보다, 행렬곱이 "입력을 다른 특징 공간으로 다시 표현하는 과정"이라는 감각을 잡는 것이다. 그 관점이 잡히면 fully connected layer, attention, convolution도 결국 같은 언어로 읽힌다.

시각 자료로 먼저 보기

벡터의 투영 개념도
벡터를 어떤 축이나 부분공간 위로 내려놓는 projection 개념도다. 내적, 길이, 직교 분해를 직관적으로 이해할 때 가장 먼저 도움이 된다.
원본 / 라이선스 · Nicholas Longo · CC BY-SA 2.5
벡터를 투영 성분과 직교 성분으로 분해한 그림
하나의 벡터를 projection 성분과 orthogonal 성분으로 나누는 그림이다. residual, 오차, 직교성 해석에 바로 연결된다.
원본 / 라이선스 · Nicholas Longo · CC BY-SA 2.5
기저 변환과 좌표 변화 그림
같은 점이라도 basis가 바뀌면 좌표 표현이 달라진다는 기저 변환 그림이다. 행렬이 좌표계와 표현 방식에 깊게 연결된다는 감각을 잡기 좋다.
원본 / 라이선스 · Perditax · CC0

문제 설정

딥러닝의 거의 모든 레이어는 아래 한 줄로 표현됩니다.

y=Wx+b

이 식을 정확히 이해하려면 벡터, 행렬곱, 차원, 노름 개념이 필요합니다.

이 한 줄은 딥러닝 레이어의 뼈대다. x는 입력 벡터, W는 가중치 행렬, b는 보정값이고, 결과 y는 변환된 새 표현이다. 결국 신경망은 "표현을 계속 바꿔 가는 기계"라고 볼 수 있다.

왜 선형대수가 딥러닝의 시작인가

신경망 레이어의 기본 연산은 아래 한 줄입니다.

y=Wx+b

벡터, 행렬곱, 전치, 내적, 노름을 이해하면 대부분의 딥러닝 수식을 읽을 수 있습니다.

예를 들어 attention은 query와 key의 내적을 계산하고, CNN은 국소적인 선형 연산을 반복하며, diffusion 모델도 큰 틀에서는 행렬 기반 연산으로 구현된다. 즉 분야가 달라 보여도 내부 계산 구조는 선형대수 위에 서 있다.

직관 비유

1) 벡터(Vector)

벡터는 숫자들의 리스트입니다.

x = [2, 5, 3]

벡터 길이를 차원이라고 하며, 위 예시는 x ∈ R^3입니다.

벡터차원
[2, 5, 3]3
[1, 4]2

2) 행렬(Matrix)

행렬은 숫자 표이며, 딥러닝에서는 "변환 장치"로 이해하면 쉽습니다.

W = [[1, 2],
     [3, 4],
     [5, 6]]

이때 W의 shape은 3 × 2입니다.

3) 핵심식: 선형 레이어

y=Wx+b

왜 필요한가: 입력 특징을 다른 특징 공간으로 변환해 모델이 문제를 풀 수 있게 만듭니다.

W = [[1, 2],
     [3, 4]]
x = [5, 6]
y = W @ x = [17, 39]

주의점: 행렬곱은 차원 규칙을 만족해야 합니다.

(m × n) · (n × k)에서 중간 차원 n이 같아야 합니다.

차원 관계 빠른표

변수차원
xd
Wk × d
bk
yk

(k × d)(d × 1) → (k × 1)

4) 전치(Transpose)

전치는 행과 열을 바꾸는 연산입니다.

AT
A = [[1, 2, 3],
     [4, 5, 6]]
A^T = [[1, 4],
       [2, 5],
       [3, 6]]

왜 필요한가: 내적 계산, attention 점수 계산(QK^T)에서 자주 등장합니다.

주의점: shape이 (m × n) -> (n × m)으로 바뀝니다.

5) 내적(Dot Product)

x·y=Σxiyi

내적은 두 벡터가 얼마나 비슷한 방향인지 측정하는 값입니다.

x = [1, 2, 3]
y = [4, 5, 6]
x · y = 1*4 + 2*5 + 3*6 = 32

왜 필요한가: Transformer attention에서 토큰 유사도를 계산할 때 핵심 연산입니다.

주의점: 두 벡터의 차원이 같아야 합니다.

6) L2 노름 (벡터 길이)

||x||2=sqrt(Σxi2)
x = [3, 4]
||x||_2 = sqrt(3^2 + 4^2) = 5

왜 필요한가: 정규화, 거리 계산, 수치 안정화에 쓰입니다.

7) 확률 기초와 언어모델 연결

언어모델은 다음 토큰 확률을 예측합니다. 따라서 P(x|y) 형태를 읽을 수 있어야 합니다.

P(w1,...,wn)=ΠtP(wt|w1,...,wt1)

이 체인 룰 관점이 Transformer/BERT/GPT를 이해할 때 중요한 기반이 됩니다.

8) Attention 수식 연결

Attention(Q,K,V)=softmax((QKT)/sqrt(dk))V

코드-수식 연결

수식PyTorch 코드설명
y = Wx + by = W @ x + b선형 레이어
x · ytorch.dot(x, y)벡터 유사도
||x||_2torch.norm(x, p=2)벡터 길이
A^TA.T전치 행렬

자주 하는 오해 5개

체크리스트 (스스로 설명 가능해야 하는 질문)