[선형대수학] 벡터 - 벡터의 연산 , 노름(norm) , 거리 , 내적
안녕하세요~!
27년차 진로탐색꾼 조녁입니다!!
이번주부터 AI 부스트캠프 2기 과정이 시작했는데 배우는 양이 많아서 머릿속이 만원 버스 같네요 ,,
마스터 세션에서 임성빈 교수님께서 추천해주신대로 , 몇가지 정리하고 싶은 것들만 골라서 정리하고자 합니다!
벡터(vector)란?
벡터는 숫자를 원소로 가지는 리스트(list) 또는 배열(array)이다.
- 벡터는 공간에서 한 점을 나타내며, 원점으로부터 상대적 위치를 표현합니다.
- 벡터는 모양(차원)을 고려하여 연산을 계산해줄 수 있습니다.
- 두 벡터의 덧셈과 뺄셈은 상대적 위치이동이다.
노름(norm)이란?
벡터의 노름(norm)은 원점에서부터의 거리를 말합니다. 노름은 아래 3가지를 만족합니다.
(벡터의 노름은 또한 임의의 차원 d에서 성립한다.)
L1 노름 vs L2노름 비교
1) L1 노름 : 각 성분의 " 변화량의 절대값 " 을 모두 더합니다. (그림에서 빨강, 노랑, 파랑선)
2) L2 노름 : 피타고라스 정리를 이용해 " 유클리드 거리 "를 계산합니다. (그림에서 초록 선)
그렇다면 왜 노름은 여러가지일까? 왜 여러가지 노름이 있는 것일까?
그것은 노름이 달라지면 기하학적 성질이 달라지는데, 머신러닝에선 각 성질들이 필요할 때가 있어 모두 사용되기 때문입니다.
벡터의 거리 & 각도
벡터의 거리는 벡터의 뺄셈 연산을 통해 구할 수 있습니다. 아래 그림을 보면 x와 y 사이의 거리를 구할 때, y 에서 x를 빼줘서 계산하는 것을 볼 수 있습니다.
또한 위에서 구한 두 벡터 사이의 거리를 이용해서 각도도 계산할 수 있습니다. (다만 각도를 구할때는 L2 노름만 가능하다. )
이때 분자의 식을 간단히 구할 수 있는 방법이 내적(Inner product)이라고 합니다.
넘파이 inner 함수를 써서 구현하면 아래와 같습니다.
def angle(x,y):
v = np.inner(x,y) / (l2_norm(x) * l2_norm(y)) #cos theta
theta = np.arccos(v) #arc_cos(cocs(theta)) = theta
return theta
내적(Inner product)이란?
내적은 정사영(orthogonal projection)된 벡터 x의 길이를 벡터y의 길이만큼 곱해준 값입니다.
정사영을 통해 나온 값에는 cos theta가 포함되어있으므로, 내적은 두 벡터의 벡터 유사도를 측정할 때 사용할 수 있습니다.
참고자료