벡터가 뭔가요?
벡터는 숫자를 원소로 가지는 리스트 또는 배열을 의미한다.
코드로 표현을 하게 되면 보통
행벡터
로 표현한다.차원의 개수 : 벡터에 있는
숫자들의 개수
이다.
$$X_{열벡터} = \begin{bmatrix} x_1 \\\\ x_2 \\\\ .. \\\\ x_d \end{bmatrix} \qquad X_{행벡터}^T = \begin{bmatrix} x_1, x_2, .., x_d \end{bmatrix}$$
벡터는 공간에서 한 점을 나타낸다.
1차원 공간에서의 벡터는 어떤 실수 공간의 수직 선상에 있는 어떤 숫자
(1차원 공간에서 벡터를 표현하는 경우 보통 스칼라로 표현)
이다.2차원 공간에서는 x축과 y축 좌표의
어떤 좌표 평면 상에서 놓이는 한 점
이다.3차원 공간상에서도 x축, y축, z축 좌표 평면 상에서 놓이는 한 점이다.
벡터는 원점으로부터 상대적 위치를 표현하며, 벡터에 숫자를 곱해주면 길이만 변한다.
원점에서부터 x라는 위치로 화살표 방향이다.
어떤 스칼라 또는 숫자를 곱해주게 되면
방향은 그대로고 벡터의 길이만 변환되는 것을 스칼라곱
이라고 표현한다.
$$aX^T = [ax_1, ax_2, .., ax_d]$$
스칼라 곱은 주어진 벡터의 길이를 변환시키는 것으로서 만약에 숫자의 크기가 1보다 크면 원래 벡터의 길이를 이전 벡터보다 더 길게 길이를 늘어나게끔 변화를 시켜주는 거고 만약에 1보다 작으면 원래 백터의 크기를 1보다 작은 백터의 크기로 줄이는 연산한다.
곱해주는 실수의 값이 0보다 작게 되면 백터가 어떤 같은 방향으로 가지 않고 반대 방향으로 가게된다.
벡터끼리 같은 모양을 가지면 덧셈, 뺄셈, 성분곱(Hadamard product) 을 계산할 수 있다
Numpy를 이용하면 기본 규칙을 그대로 사용 가능하다.
벡터의 덧셈과 뺄셈
두 벡터의 덧셈은 다른 벡터로부터 상대적 위치이동을 표현한다.
원점을 제로 벡터 즉 영백터로 부르게 된다면 원점에서 x라는 벡터로 향하는 화살표가 벡터의 덧셈과 같은 개념이다.
영벡터가 아닌 다른 벡터를 넣게된다면 다음과 같다.
벡터의 뺄셈은 x라는 백터를 더하는 대신에 마이너스 x라는 백터를 더하는 걸로 이해하는 것이 편할 것이다.
벡터의 노름
벡터의 노름(norm)은 원점에서부터의 거리이다.
L_1 노름
은 각 성분의 변화량의 절대값을 모두 더한 것(아래 그림상에서는 원점에서 x1의 절대값, x2의 절대값만큼 위치를 이동한 것)
이다.
L_2 노름
은 피타고라스 정리를 이용해 유클리드 거리를 계산한 것이다.
왜 다른 노름을 소개하나요?
노름의 종류에 따라 기하학적 성질이 달라지기에 머신러닝에선 각 성질들을 상황에 맞춰 사용한다.
유클리드 기하학은 "어떤 한 점을 중심으로 하고 이에 대한 거리(반지름)로 하나의 원을 그릴 수 있다"라는 공준을 통해 오른쪽 그림을 그린다.
한 정점에서 일정한 거리에 있는 점의 집합이라는 원의 정의를 택시평면(비유클리드 기하학, 왼쪽 그림)에 적용하면
|x|+|y|=r
을 만족시키는 점(x,y)
의 집합이 된다. 이 집합은 유클리드 거리로 정의된 원이 아닌 두 대각선의 길이가 같은 다이아몬드 모양의 정사각형을 만든다.이렇게,
원은 한 점에서 같은 거리에 있는 점들의 집합
이라고 볼 수 있는데, 기하학 종류에 따라 두 점 사이의 길이를 재는 방법이 다른 것을 볼 수 있었다. 그로 인해 원의 모양이 다르게 나오는 것을 알 수 있었다.(유클리드 기하학의 원 넓이는 PI r^2 이고, 택시 기하학의 원 넓이는 2 r^2 이다.)
두 벡터 사이의 거리
L_1, L_2 노름
을 이용해 두 벡터 사이의 거리를 계산 할 수 있으며, 벡터의 뺄셈을 이용하여 거리를 계산한다.
y-x
벡터 : 영벡터에서y
벡터만큼 이동한 다음에y
벡터에서 마이너스x
벡터라는 상대적 위치로 이동한 것을 의미한다.반대로 계산
(x-y)
해도 거리는 같다.
두 벡터 사이의 각도 구하기
제2 코사인 법칙에 의해 두 벡터 사이의 각도를 계산할 수 있다. (유클리드 거리를 이용해야만 가능하다.)
내적은 같은 차원의 두 벡터가 주여졌을 때, 벡터를 구성하는 각 성분을 곱한 후 이를 더해 스칼라 값을 만들어내는 연산을 의미한다.
내적은 어떻게 해석할까?
백터의 내적은 두 벡터의 사이각에 대한 cos 함수와 비례하는 특징을 가진다.
$$ = |x|*|y|*cos\theta$$
만약, 각 벡터의 크기가 1이면, 두 벡터의 내적은
cos_theta
가 된다. (<x,y> =cos_theta
)두 벡터의 내적이 0인 경우,
cos\theta=0
이 된다. (이 때, 사이각은 90도 또는 270도인 경우)
내적은 정사영(orthogonal projection)된 벡터의 길이와 관련이 있다
x
라는 벡터가y
라는 벡터 상에서 그림자(그림 상 Proj(x))
로 표현되는 걸 정사형이라고 표현한다.Proj(x)
의 길이는 코사인 법칙에 의해서||x||*cos_theta
임을 알 수 있다.내적은 정사영 길이를 벡터 y의 길이
||y||
만큼 조정한 값이다. (스칼라곱은 벡터의 길이를 늘려주거나 줄여주거나하는 조정의 개념이다.)
머신러닝에서 내적은 두 백터 사이에 유사도를 측정하는데 활용되기도 한다.