벡터가 뭔가요?

벡터가 뭔가요?


벡터가 뭔가요?

벡터는 숫자를 원소로 가지는 리스트 또는 배열을 의미한다.

  • 코드로 표현을 하게 되면 보통 행벡터로 표현한다.

  • 차원의 개수 : 벡터에 있는 숫자들의 개수이다.

$$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라는 벡터로 향하는 화살표가 벡터의 덧셈과 같은 개념이다.

    A sequence of diagrams showing a vector addition concept across different dimensions. The first diagram shows a 1D line with a red vector labeled "0 + x". The second is a 2D plane with the same concept. The third shows a 3D space. There is also a small drawing of a cartoon unicorn and Korean text that translates to "x = 0 + 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|| 만큼 조정한 값이다. (스칼라곱은 벡터의 길이를 늘려주거나 줄여주거나하는 조정의 개념이다.)

  • 머신러닝에서 내적은 두 백터 사이에 유사도를 측정하는데 활용되기도 한다.


참고자료

[부스트코스]

[유클리드 기하학 원, 택시 기하학 원 넓이]

[어른들을 위한 수학 〈13〉 택시가 알려주는 최단 거리]

[원의 넓이를 구하는 공식을 알아보자!]

[벡터의 내적 (inner product)와 벡터의 정사영 (projection)]