Boostcamp AI tech 3기/개념 이해

[Week01] AI Math - 벡터의 길이, 각도, 내적 구하기

mcdn 2022. 1. 20. 13:06
반응형

벡터

벡터는 숫자를 원소를 가지는 리스트 또는 배열. 

스카라곱이 1보다 크면 길이가 늘어나고 1보다 작으면 길이가 줄어든다. 

벡터끼리 같은 모양을 가지면 덧셈 뺄셈을 할 수 있다. 

덧셈 : 상대적 위치 이동 

뺄셈 : 반대방향, -벡터를 더한다고 생각하면 편하다 

 

 

벡터의 노름 norm 

벡터의 노름은 원점에서부터의 거리를 의미한다.

임의의 d 차원에 대해서 임을 이해하자 

 

(위) L1 노름은 변화량 절대 값을 모두 더한다 

(아래) L2 노름은 피타고라스 정리를 이용한 유클리드 거리를 계산한다. 

 

def l1(x):
  x_norm = np.abs(x)
  return np.sum(x_norm)
  
def l2(x):
  x_norm = x * x
  x_norm = np.sum(x_norm)
  return np.sqrt(x_norm)
  
def l2(x):
  np.linalg.norm(x)

왜 두 종류가 다 있을까? 

모양이 다르기 때문 

각각

Robust 학습 / Lasso 회귀

Laplace 근사 Ridge 회귀  

에서 사용한다. 

 

체크!

벡터 노름을 구해보자 

L1-노름 x = [0, -2, 3]

 절대값 합이니까 5 

 

L2-노름 x = [3, 4]

피타고라스 정리니까 5 

 

벡터 사이의 각도 

벡터 사이의 각도는 l2 노름으로만 구할 수 있다. 

제2코사인 법칙에 의해 구할 수 있는데 식은 다음과 같다. 

 

두 벡터가 이루는 각을 찾을 때 

저 공식을 한 쪽으로 미룬 cos 각도를 구하면 된다 

각을 구하기 위해너는 두 벡터의 크기와 내적이 필요하다 

밑의 벡터는 l2 노름으로 나온 유클리드 공식 적용한 값이고 위는 내적 

그걸 콘사인 잔대를 하면 theta 값이 나온다 

 

https://ko.wikihow.com/%EB%91%90-%EB%B2%A1%ED%84%B0-%EC%82%AC%EC%9D%B4-%EA%B0%81%EB%8F%84-%EA%B5%AC%ED%95%98%EA%B8%B0

 

두 벡터 사이 각도 구하기

수학에서 벡터란 길이가 정의되고 그 크기를 알 수 있으며 방향이 있는 물체를 말합니다. 벡터는 우리가 아는 선분이나 모양이 아니므로 그들 사이의 각을 알려면 특별한 공식을 사용해야 합니

ko.wikihow.com

여길 참고하면 더 이해가 쉬움 

 

u = [2, 2]

v = [0, 3]

이라 하자 

u의 노름2 는 root8

v의 노름2는 root9로 3 

u*v는 u1v1 + u2v2로 

2 * 0 + 2 * 3 = 6 

cos법칙은 u*v/u노름 *v노름 이므로 

=6 / root8 * 3 

=1 / root2

=root2/2가 된다 

 

마지막으로 arccosine(root2/2)로 각도를 구하면

이런식 

 

반응형