프로그래밍 공부/보면 도움이 될걸?!

[선형대수학] 벡터 - 벡터의 연산 , 노름(norm) , 거리 , 내적

조녁 2021. 8. 8. 00:37
반응형

안녕하세요~!

27년차 진로탐색꾼 조녁입니다!!

 

이번주부터 AI 부스트캠프 2기 과정이 시작했는데 배우는 양이 많아서 머릿속이 만원 버스 같네요 ,,

마스터 세션에서 임성빈 교수님께서 추천해주신대로 , 몇가지 정리하고 싶은 것들만 골라서 정리하고자 합니다!

 

 

벡터(vector)란?

벡터는 숫자를 원소로 가지는 리스트(list) 또는 배열(array)이다.

  1. 벡터는 공간에서 한 점을 나타내며, 원점으로부터 상대적 위치를 표현합니다.
  2. 벡터는 모양(차원)을 고려하여 연산을 계산해줄 수 있습니다.
  3. 두 벡터의 덧셈과 뺄셈은 상대적 위치이동이다.

 

노름(norm)이란?

벡터의 노름(norm)은 원점에서부터의 거리를 말합니다. 노름은 아래 3가지를 만족합니다.

(벡터의 노름은 또한 임의의 차원 d에서 성립한다.)

 

 

 

L1 노름 vs L2노름 비교

1) L1 노름 : 각 성분의 " 변화량의 절대값 " 을 모두 더합니다. (그림에서 빨강, 노랑, 파랑선)

2) L2 노름 : 피타고라스 정리를 이용해 " 유클리드 거리 "를 계산합니다. (그림에서 초록 선)

L1 norm  vs L2 norm

그렇다면 왜 노름은 여러가지일까? 왜 여러가지 노름이 있는 것일까?

그것은 노름이 달라지면 기하학적 성질이 달라지는데, 머신러닝에선 각 성질들이 필요할 때가 있어 모두 사용되기 때문입니다.

 

 

벡터의 거리 & 각도

벡터의 거리는 벡터의 뺄셈 연산을 통해 구할 수 있습니다. 아래 그림을 보면 x와 y 사이의 거리를 구할 때, y 에서 x를 빼줘서 계산하는 것을 볼 수 있습니다.

벡터의 거리 계산 (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가 포함되어있으므로, 내적은 두 벡터의 벡터 유사도를 측정할 때 사용할 수 있습니다. 

 

 

 

 

 

참고자료

 

반응형