AI Fundamentals/11기 - Let's AI 2023

[Let's AI] 2-5. 벡터란?

Jae. 2023. 6. 26. 19:22
728x90

1. Vectors 

 

 

  •  벡터는 숫자를 원소로 가지는 리스트(list) 또는 1차원 배열(array)입니다
  • 수식 : 보통 열벡터로 처리 (column vector) 
  • 코드 : 보통 행벡터로 처리 (row vector)
  • 벡터의 차원 : 벡터의 원소의 개수 (d)

  • 공간에서 한 점을 나타냄 
  • 보통 기준점(원점)으로부터 상대적 위치를 표현

  • 벡터에 숫자를 곱해주면(스칼라배) 길이만 변함
  • 0보다 작으면 반대 방향이 됨
  • 1보다 크면 길이가 늘어나고, 1보다 작으면 길이가 줄어듦
  • 벡터끼리 같은 크기를 가지면 덧셈, 뺄셈을 계산할 수 있음 (same dimension)

< 아다마르 곱(hadamard product) = 성분곱 >

 

  • 벡터끼리 같은 모양(same size, same dimension)을 가지면 성분곱을 계산할 수 있음
  • 성분끼리의 곱셈으로 표현가능 
  • 각 원소를 곱한 값을 원소로 갖는 Vector를 반환
  • [m X n] * [m X n] = [m X n] (상-상-상)

 

 

2. Products

 

 

1) 행렬의 성분곱 : 아다마르 곱(hadamard product) = 성분곱 > : *연산

 

  • -벡터/행렬끼리 같은 모양을 가지면 성분곱을 계산할 수 있음
  • 성분끼리의 곱셈으로 표현가능
  • [m X n] * [m X n] = [m X n] (상-상-상)
  • X * Y = (x_ij * y_ij) : 각 행렬의 원소끼리의 곱을 성분으로 갖는 행렬을 반환

 

 

2)  행렬의 곱셈  : @연산 / a.dot(b) : method / 붙여서 쓰기

 

  • 결과 행렬의 사이즈를 미리 정하기
  • 상 - 우 - 상 순서로 내적 결과를 손으로 작성
  • i번째 행벡터와 j번째 열벡터 사이의 내적을 성분으로 가지는 행렬
  • [m X n] * [n X p] = [m X p] (상-우-상)
  • XY = sigma((k~) (x_ik * y_kj) )

 

 

3) 행렬의 내적  : np.inner(X,Y) / X @ Y.T or X.dot(Y.T)

 

  •  X o Y (내적) = XY^T(전치 후 행렬 곱) : X 열의 갯수 = Y^T 행의 갯수 = Y행의 갯수 
  • np.inner(X,Y) : X 행의 갯수 = Y 행의 갯수 (X을 기준으로 두고 Y에서 하나씩 상-상-상)
  • 1st 수학적 내적, 2nd 컴퓨터적 내적
  • numpy의 dot은 일반 행렬곱과 같음 : dot 연산 = @ 연산
  • numpy의 np.inner는 i번째 행벡터와 j번째 행벡터 사이의 내적을 성분으로 가지는 행렬을 계산
  • np.inner : 일반 행렬곱과 다르게 아다마르 성분곱을 사용
  • vector 끼리 내적할 경우 scalar을 반환

 

3. Addition

 

  • 벡터의 덧셈, 뺄셈 (-벡터를 더한다고 생각)
  • 두 벡터의 덧셈은 다른 벡터로부터의 상대적 위치 이동을 표현

 

4. Norm of a vector

 

  • 벡터의 norm은 원점에서부터의 거리를 말함 : 구성성분의 원소의 개수와 상관없이 구할 수 있음
  • 임의의 차원 d에 대해 성립 (모든 차원에 대해 성립 = 성분 원소의 개수에 상관 X : x1, x2,..xd)

  • L1 norm : 각 성분의 변화량의 절대값을 모두 더함 (sigma(i=1~d) (abs(xi) )
    • 좌표평면에서 각 좌표축을 따라 움직인 거리들의 합
    • Robust 학습, Lasso 회귀
  • L2 norm : 피타고라스 정리를 이용해 유클리드 거리를 계산함 (root(sigma(i=1~d) ((xi)^2))
    • Laplace 근사, Ridge 회귀

    

  • norm의 종류에 따라 기하학적 성질이 달라짐

 

5. Distance between two vetors

 

  • 두 벡터 사이의 거리를 구하기
    • 두 점이 주어졌을 때 두 점 사이의 거리를 구하기
    • 두 벡터 사이의 거리를 계산할 때 = 벡터의 뺄셈을 이용
    • L1, L2 - norm을 이용함

6. Angle between two vectors

 

  • 두 벡터 사이의 각을 구하기
    • 2차원, 3차원... 임의의 d차원에서 사용가능
    • L2 - norm에서만 사용가능
    • 제 2 cos법칙에 의해 두 벡터 사이의 각도를 계산할 수 있음
    • cos(theta) = <a,b> / ||a||*||b||

 

 

7. Inner product

 

  • 내적을 어떻게 해석할까
    • 내적은 정사영된 벡터(orthogonal projection)의 길이와 관련있음
    • 기준 벡터의 크기 * 정사영한 벡터 크기
    • 두 벡터 사이의 유사도를 측정하는데 사용가능 
     
  •  proj(x) : 벡터 y로 정사영된 벡터 x의 그림자를 의미
    • proj(x)의 길이 = ||x|| * cos(theta)가 됨
  • 내적은 정사영의 길이를 벡터 y의 길이 ||y||만큼 조정한 값

 

 

 

 

728x90