728x90

 

Vector에 대해 알아보자.


 

1. Vector 란?


  • 숫자를 원소로 가지는 리스트(list) 또는 배열(array) 을 말한다.
  
  import numpy as np
  
  x1 = [ 1,2,3 ]  # 리스트
  x2 = np.array([1,2,3])  # 배열
    
  • 공간에서의 한 점을 말하며, 벡터는 원점으로부터 상대적 위치를 표현한다.

 

 

2. 스칼라곱 이란?


벡터에 숫자를 곱하면 길이가 변하게 되는데 이를 스칼라곱이라고 한다.

벡터 x에 a를 곱할 때, 

a > 1 a < 1 a < 0
길이 증가 길이 감소 반대 방향 전환
  • a가 1보다 크면 길이가 증가한다.
  • a가 1보다 작으면 길이는 감소한다.
  • a가 0보다 작으면 반대 방향으로 전환된다.

 

 

3. 벡터의 덧셈, 뺄셈, 성분곱(Hadamard Product)


벡터는 같은 모양을 가진 벡터끼리 덧셈, 뺄셈, 성분곱(Hadamard Product) 계산을 할 수 있다.

벡터의 덧셈 벡터의 뺄셈
두 벡터의 덧셈은
다른 벡터로부터 상대적 위치 이동을 표현한다.
두 벡터의 뺄셈은
방향을 뒤집은 덧셈이다.

성분곱(Hadamard Product)은 동일 차원의 행렬끼리 동일 위치의 원소와 곱하는 곱셈을 말한다.

 

 

4. 벡터의 노름(norm) 이란?


벡터의 노름(norm)은 원점에서부터 벡터까지의 거리를 말한다. ( || x || )

노름(norm)에는 L1 norm, L2 norm 2가지가 있다.

L1 norm L2 norm
각 성분 변화량의 절대값을 모두 더한다. 피타고라스를 이용하여 유클리드 거리를 계산한다.
x = [ 2, 5 ]인 경우,


L1 norm은 7이 됩니다.

x = [ -3, 4 ]


L2 norm은 5가 됩니다.

노름은 종류에 따라 기하학적인 성질이 달라지며 목적에 따라 머신러닝에서 선택하여 사용한다.

ex) L1 norm : Robust 학습, Lasso 회귀 / L2 norm : 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

  test = [-1, 2, -3]
  print(l1_norm(test))
  print(l2_norm(test))
  

 

 

5. 두 벡터 사이의 거리 구하기


두 벡터(x, y)의 뺄셈을 구하면 된다. 

-> || y - x || = || x - y ||

 

 

6. 두 벡터 사이의 각도 계산하기


각도는 L2 norm을 사용해서만 구할 수 있으며 제2 코사인 법칙을 이용한다.

  
  # 내적은 np.inner을 사용하여 구한다.

  def angle(x,y):
      v = np.inner(x,y) / (l2_norm(x) * l2_norm(y))
      theta = np.arccos(v)
      return theta

  x1 = np.array([1,2,3])
  x2 = np.array([3,2,1])

  print(angle(x1,x2))
  

 

 

7. 내적 이란?


  • 간단하게 분자를 쉽게 계산하는 방법을 말한다.
  • 내적은 정사영된 벡터의 길이와 관련이 있다.
  • Proj(x)는 벡터 y로 정사영된 벡터 x의 그림자를 의미한다.
    •  || y || cosθ 
  • 내적은 정사영(orthogonal projection)의 길이를 벡터 y의 길이 || y ||만큼 조정한 값이다.
    • || y || Proj(x)
  • 두 벡터의 유사도를 측정하는데 사용된다.
  • Numpy의 np.inner( )를 통해 쉽게 구할 수 있다.
  
  import numpy as np
  
  x = np.array([1,-1,1,-1])
  y = np.array([4,-4,4,-4])

  print(np.inner(x,y))  # 16
  

 

 

 

출처 : 부스트코스 인공지능(AI) 기초 다지기

 

[AI Tech Pre-course] 인공지능(AI) 기초 다지기

부스트코스 무료 강의

www.boostcourse.org

 

 

 

 

728x90
댓글
250x250
최근에 올라온 글
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Total
Today
Yesterday