AI에서 선형대수를 공부할 때 가장 먼저 분리해야 할 것은 연산의 이름보다 입력과 출력의 모양이다. 두 벡터를 곱해 scalar를 얻는 내적, matrix를 얻는 outer product, 3차원 vector를 얻는 cross product는 서로 다른 연산이다. 여기에 y = Wx + b를 엄밀한 선형변환이라고 부를 수 있는지도 구분하면 이후의 회귀·신경망·PCA가 훨씬 덜 헷갈린다.
인공지능 수학을 공부하며 벡터와 행렬 개념을 한 번에 모아 두었던 메모를, 혼동하기 쉬운 경계 중심으로 다시 정리했다.

이름보다 결과의 shape을 먼저 본다
x ∈ R^m, y ∈ R^n일 때 대표 연산을 비교하면 다음과 같다.
| 연산 | 표기 | 결과 | 의미 |
|---|---|---|---|
| scalar multiplication | αx |
vector | 모든 성분에 같은 scalar를 곱함 |
| inner/dot product | xᵀy |
scalar | 같은 차원 벡터 성분 곱의 합 |
| outer product | xyᵀ |
m×n matrix |
모든 성분 쌍의 곱 |
| matrix-vector product | Ax |
vector | matrix가 vector를 다른 vector로 보냄 |
| Hadamard product | x ⊙ y |
vector | 같은 위치 성분끼리 곱함 |
| cross product | x × y |
3D vector | 두 3차원 vector에 수직인 vector |
한국어로 outer product와 cross product를 모두 ‘외적’이라고 부르는 자료가 있어 문맥을 확인해야 한다. 머신러닝 식에서 xyᵀ처럼 matrix가 나오면 outer product이고, 3차원 기하에서 수직 vector가 나오면 cross product다.
tensor product는 이보다 일반적인 구성이다. 좌표를 정한 두 vector의 tensor product를 outer-product matrix로 표현할 수 있지만, matrix의 Kronecker product나 특정 axis를 축약하는 tensordot까지 모두 같은 연산으로 부르면 안 된다. ‘두 vector를 곱해 더 높은 차원 tensor를 만든다’는 문장만으로는 어떤 index를 남기고 합하는지 알 수 없다.
예를 들어 x=[1,2], y=[3,4,5]의 outer product는 다음 2×3 matrix다.
xyᵀ = [[3, 4, 5],
[6, 8, 10]]
반면 a=[1,2,3], b=[4,5,6]이라면 a·b=32이고 a×b=[-3,6,-3]이다. cross product 결과는 a, b 각각과 내적했을 때 0이므로 두 vector에 수직이다. 흔히 쓰는 cross product는 R³의 연산이다. 2차원에서는 두 vector를 3차원 평면에 놓고 z 성분만 계산하는 관례가 있고, 고차원에는 별도 일반화가 있으므로 ‘모든 차원에서 같은 방식으로 된다’고 보면 안 된다.
NumPy에서는 연산에 맞는 함수를 골라 shape을 바로 확인할 수 있다.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(np.dot(a, b)) # 32
print(np.outer(a, b)) # shape: (3, 3)
print(np.cross(a, b)) # [-3, 6, -3]
print(a * b) # [4, 10, 18], Hadamard product
np.dot은 input 차원에 따라 동작이 달라질 수 있다. batch matrix multiplication에서는 @ 또는 np.matmul이 의도를 더 분명히 드러내는 경우가 많다.
projection은 별도의 연산이다
한 vector x를 0이 아닌 vector v 방향으로 정사영한 결과는 다음과 같다.
proj_v(x) = (x·v / v·v) v
이는 ‘그림자처럼 겹치는 정도’만 뜻하는 모호한 곱셈이 아니다. 내적으로 방향 성분의 scalar 계수를 구한 뒤 v 방향 vector로 돌려놓는 연산이다. v가 unit vector라면 분모 v·v가 1이 되어 식이 단순해진다.
cosine similarity도 내적과 norm을 이용한다.
cos(x, y) = x·y / (||x||₂ ||y||₂)
두 vector 중 하나가 zero vector면 분모가 0이므로 그대로 계산할 수 없다. 또한 cosine similarity는 방향만 비교하므로 크기 차이를 잃는다. 문제에 필요한 정보가 magnitude인지 direction인지 먼저 정해야 한다.
선형변환과 affine transformation
변환 T가 선형이려면 덧셈과 scalar multiplication을 보존해야 한다.
T(x+y) = T(x) + T(y)
T(αx) = αT(x)
따라서 선형변환은 반드시 T(0)=0을 만족한다. matrix multiplication T(x)=Wx는 선형변환이다. 반면 T(x)=Wx+b에서 b≠0이면 원점을 옮기므로 엄밀히는 affine transformation이다.
머신러닝에서는 관례상 Linear layer나 linear regression이 bias/intercept를 포함하기도 한다. PyTorch의 nn.Linear도 문서에서 y=xAᵀ+b인 affine transformation이라고 명시한다. API 이름과 수학적 분류가 항상 일치한다고 가정하지 말아야 한다.
고유벡터와 PCA의 연결
고유벡터 v와 고윳값 λ는 정사각 matrix A에 대해 다음을 만족한다.
Av = λv, v ≠ 0
변환 뒤에도 방향이 유지되고 크기만 λ배가 되는 방향이다. 그러나 실제 PCA 구현을 ‘공분산 matrix의 고윳값만 직접 구하는 과정’으로 고정해서 이해할 필요는 없다. scikit-learn의 PCA는 feature별 평균을 빼서 데이터를 center한 뒤 solver에 따라 SVD 등을 사용한다. 기본 동작은 scale 표준화까지 자동으로 하지 않는다.
explained_variance_ratio_는 선택한 각 principal component가 설명하는 variance 비율이다. 비율이 높다는 이유만으로 해당 component가 업무상 중요한 원인을 뜻하는 것은 아니다. PCA는 label을 보지 않는 unsupervised transformation이고, scale과 outlier에 민감할 수 있으므로 전처리와 해석 목적을 함께 기록해야 한다.
미분 개념은 인공지능을 위한 수학: 미분, 확률 기초는 AI를 위한 확률과 통계, 회귀 모델로 이어지는 내용은 인공지능을 위한 수학: 선형회귀에서 연결된다.
참고 자료
'배움과 성장 > AI·자동화' 카테고리의 다른 글
| 인공지능을 위한 수학 4: 평균·분산부터 MLE·Bayes 추정까지 (0) | 2025.06.06 |
|---|---|
| AI를 위한 확률과 통계: 확률변수·분포·기댓값의 연결 (0) | 2025.05.19 |
| 인공지능을 위한 수학 2: 미분·Gradient Descent·Backpropagation 연결하기 (0) | 2025.05.14 |
| 인공지능을 위한 수학 1: 딥러닝을 읽기 위한 기초 개념 지도 (0) | 2025.05.12 |
| 머신러닝부터 LLM 애플리케이션 운영까지: ML·Foundation Model·MLOps 개념 지도 (3) | 2025.04.28 |
댓글