[AI 수학] 인공지능 수학 - 1. 벡터/내적/코사인유사도
인공지능을 위한 기초수학 교재를 통해 공부한 내용을 서술하였습니다.
Vector, 벡터
Scalar : 크기만 주어지지만, 완전히 표시되는 양
Vector : 크기뿐만 아니라 방향까지 지정하지 않으면 완전히 표현할 수 없는 양
2차원, 3차원 공간의 벡터는 화살표로 표현 가능
영벡터 : 시작점(A)과 끝점(B)이 같아서 크기가 0인 벡터
- 크기와 방향이 같은 벡터는 모두 같은 벡터
- 시작점을 원점으로 고정한다면 그 벡터는 끝점의 좌표로 유일하게 나타낼 수 있음
왼쪽 : $ \vec{OA}= a = (a_1, a_2)$
오른쪽 : $ \vec{OA}= a = (a_1, a_2, a_3)$
여기서 $a_1, a_2, a_3$는 element라고 함
벡터의 정의
- n차원 벡터
n개의 실수의 순서조 $(x_1, x_2, ... , x_n)$를 n차원 벡터라 하고,
$$x = (x_1, x_2, ..., x_n) = \begin{bmatrix}
x_1 \\
x_2 \\
... \\
x_n\end{bmatrix}_{n\times 1 }$$
로 나타냄 - $-x$를 $x$의 음벡터라 함
- $x + 0 = x$
- $ x =\begin{bmatrix}
x_1 \\
x_2 \\
... \\
x_n\end{bmatrix}, y = \begin{bmatrix}
x_1 \\
x_2 \\
... \\
x_n\end{bmatrix}$ 일때, $x + y = \begin{bmatrix}
x_1 + y_1 \\
x_2 + y_2 \\
... \\
x_n + y_n \end{bmatrix}$ - 스칼라배
$kx = \begin{bmatrix}
kx_1 \\
kx_2 \\
... \\
kx_n\end{bmatrix}$
내적
동일 차원의 두 벡터의 같은 성분끼리 곱한 값을 모두 더한 결과
dot product
$ x \cdot y = x_1y_1+ x_2y_2+...+x_ny_n = y^Tx$
$x \cdot x = \left\| x\right\|^2$
노름
x의 norm, length, magnitude
$\to$ 벡터의 크기
$$\left\| x\right\| = \sqrt{x^2_1+ x^2_2+...+x^2_n}$$
$\left\| x\right\|$는 사실상 원점에서 점 $P(x_1,x_2, ..., x_n)$에 이르는 거리
$\left\| x - y\right\|$은 두 점 $\vec{x}$와 $\vec{y}$의 거리
주어진 두 데이터에 대하여, 거리가 가까우면 두 데이터는 유사하고, 거리가 멀면 두 데이터는 관계없다고 판단할 수 있음
데이터 유사도란?
주어진 데이터가 각 범주와 얼마나 가까운지 혹은 유사한지 판단하는 척도
벡터의 노름은 데이터의 유사도를 판단하는 하나의 기준
다만, 데이터의 방향(패턴)에만 관심이 있는 경우 이 거리에 관한 척도는 적합하지 않을 수 있음
a와 b는 방향은 유사하지만 거리는 매우 큰 값을 갖게 되어 거리 척도로는 두 데이터가 유사하지 않은 걸로 판단될 수 있음
이때는 두 벡터가 이루는 사잇각 $\theta$로 유사도를 측정
$\theta$가 크면 유사도가 낮고, 작으면 유사도가 높다.
이를 코사인 유사도라고 함
실제로는 사잇각을 계산하지 않고, 내적을 통해 $\theta$의 코사인 값으로 유사도를 측정 $\to $ 코시-슈바르츠 부등식
코시-슈바르츠 부등식
벡터 $x, y$에 대하여 다음 부등식이 성립
$$ \left | x \cdot y\right | \leq \left\| x\right\| \left\| y\right\| $$
$$x \cdot y = \left\| x\right\| \left\| y\right\| cos\theta, (0\leq \theta \leq \pi )$$
$cos\theta$는 결국 [-1,1]의 범위를 가지기 때문에 $ -1 \leq \frac{x\cdot y}{\left\| x\right\|\left\| y\right\|} \leq 1$가 성립
즉, 두 벡터가 이루는 사잇각 θ의 코사인 값이 -1에서 1 사이의 범위를 가지므로,
- cosθ=1이면 두 벡터가 같은 방향을 가리키며,
- cosθ=0이면 두 벡터가 서로 직교(orthogonal)하며,
- cosθ=−1이면 두 벡터가 정반대 방향.
이러한 성질을 이용하여 벡터의 방향성을 기반으로 유사도를 측정하는 것이 코사인 유사도의 핵심 개념
정사영
한 벡터를 다른 벡터(또는 공간)에 대해 수직으로 투영한 벡터를 의미
벡터 y를 벡터 x위로 정사영한 벡터를 $proj_xy$로 표현
$$proj_xy = \frac{x\cdot y}{x \cdot x}x$$
아래 그림에서
점 P에서 OQ에 내린 수선의 발 S,
$\overrightarrow{OS}$를 x 위로의 y의 정사영,
w는 x에 직교인 y의 벡터성분이라고 함
y는 p+w
내적 $x \cdot y$는 벡터 x가 y와 얼마나 같은 방향을 가지는지를 측정
전체 수식은 벡터 x의 방향을 유지하면서, y가 x 방향으로 얼마만큼 성분을 가지는지를 계산한 것
예제) x=(2,-1,3), y=(4,-1,2)에 대하여 x 위로의 y의 정사영 $proj_xy$와 x에 직교인 y의 벡터성분 w를 구하여라.
답) x= (2, -1, 3) y= (4, -1, 2) p= (15/7, -15/14, 45/14) w= (13/7, 1/14, -17/14)
풀이는 30페이지 http://matrix.skku.ac.kr/math4ai/
http://matrix.skku.ac.kr/math4ai/
matrix.skku.ac.kr
References
3장 선형대수(1~3절) - 기본편 - 인공지능을 위한 수학
교재링크(광고 아님): freelec.co.kr/book/인공지능을-위한-수학/ 3-1 벡터3-2 덧셈과 뺄셈, 그리고 스칼라배3-3 유향선분 3-1 벡터벡터(vector) : '여러개의 데이터를 한 줄에 담아낸 것'이라고 교재에
swjman.tistory.com