전공공부/인공지능

부스트코스 인공지능(AI) 다지기 -6 : 벡터

prefer_all 2022. 7. 19. 15:01

출처: 네이버 부스트코스 인공지능(AI) 기초 다지기 3. 기초 수학 첫걸음

<목차>
1. 벡터
2. 벡터의 노름(norm)
- L1, L2
3. 두 벡터 사이의 각도 구하기
- 제 2 코사인 법칙 활용
- 내적 : 정사영된 벡터의 길이

 

 

벡터

  • 숫자를 원소로 가지는 list 또는 array
  • 공간에서의 한 점 (1차원 공간인 수직선에서의 한 점, 2차원 공간인 좌표 평면에서의 한 점, 3차원 공간의 한 점, n차원 공간의 한 점)
  • 원점으로부터 상대적 위치(화살표)

(좌) 열벡터  (우) 행벡터

x = [1,7,2]
x = np.array([1,7,2])

x= [x1, x2, ..., xd]에서 d는 벡터의 차원임

  • 벡터의 숫자를 곱해주면 길이만 변함 (스칼라 곱이라고 부름)
  • 벡터끼리 같은 모양을 가지면 덧셈, 뺄셈을 할 수 있고, 성분곱(Hadamard product)을 계산할 수 있음

벡터의 노름(norm) : 원점에서부터의 거리

!! 임의의 차원 d에 대해 성립한다는 것을 명심

 

  • L1 : 각 성분의 변화량의 절대값을 모두 더한 값 (ex. Robust 학습, Lasso 회귀)
  • L2 : 피타고라스 정리를 이용한 유클리드 거리 (ex. Laplace 근사,  Ridge 회귀)
def l1_norm(x):
    x_norm = np.abs(x)
    x_norm = np.sum(x_norm)
    return x_norm
    
def l2_norm(x):
    x_norm = x*x
    x_norm = np.sum(x_norm)
    x_norm = np.sqrt(x_norm)
    return x_norm
  • 노름이 다른 이유는 '노름의 종류에 따라 기하학적 성질이 달라짐. 머신러닝에서 각 성질이 필요할 때가 있어서 둘 다 사용함'


두 벡터 사이의 각도 구하기 : 제 2 코사인 법칙 활용

분자를 쉽게 계산하기 위해 내적 사용

내적: 두 벡터들의 연산들의 성분곱을 더함

def angle(x,y):
    v = np.inner(x,y) / (l2_norm(x) * l2_norm(y)) #np.inner을 사용해 내적계산
    theta = np.arccos(v)
    return theta

각도를 계산하는 것은 l2 norm에서만 가능하다


내적을 어떻게 해석할까?

내적은 정사영(orthogonal projection)된 벡터의 길이와 관련있다

proj(x) 는 코사인 법칙에 의해 ||x|| cosΘ 이다

내적은 정사영의 길이를 벡터 y의 길이 ||y||만큼 조정한 값이다

 

'전공공부 > 인공지능' 카테고리의 다른 글

경사하강법  (0) 2022.07.20
부스트코스 인공지능(AI) 다지기 -7 : 행렬  (0) 2022.07.19
Numpy 3편  (0) 2022.07.19
Numpy 2편  (0) 2022.07.19
Numpy  (0) 2022.07.18