now is better than never

[인공지능(AI) 기초 다지기] 3. 기초 수학 첫걸음 (2) 본문

Python/[코칭스터디 9기] 인공지능 AI 기초 다지기

[인공지능(AI) 기초 다지기] 3. 기초 수학 첫걸음 (2)

김초송 2023. 2. 3. 18:21

2) 벡터

 

- 벡터가 뭔가요?

  • 숫자를 원소로 가지는 리스트 또는 배열
    벡터끼리 같은 모양을 가지면 덧셈, 뺄셈을 계산할 수 있음
    벡터끼리 같은 모양을 가지면 성분곱(Hadamard product)을 계산할 수 있음
  • 열벡터 : 세로로 된 배열
    행벡터 : 가로로 된 배열
  • 코드는 보통 행벡터임
# 코드
import numpy as pd

x = [1, 7, 2]
x = np.array([1, 7, 2])
  • 차원 : 벡터의 갯수
  • 벡터 = 공간에서 한 점을 나타냄
    원점으로부터 상대적 위치를 표현
    숫자를 곱해주면 방향은 그대로고 길이만 변함
  • 스칼라곱이 1보다 크면 늘어나고, 작으면 줄어듦
    단, 0보다 작으면 반대 방향이 됨
  • 1차원 공간: 수직선 상에 놓인 어떤 숫자
    2차원 공간 : 좌표평면 (x, y) 그 자체
    3차원 공간 : (x, y, z)

 

- 벡터의 덧셈

  • 벡터의 덧셈은 다른 벡터로부터 상대적 위치이동을 표현
  • 1차원 : 0+x
    2차원 : 원점을  y로 옮기는 것 (y + x)
  • 뺄셈은 방향을 뒤집은 덧셈 = y - x

 

- 벡터의 노름(norm)

  • 원점에서부터의 거리
  • 임의의 차원 d에 대해 성립하는 것
  • L1 : 각 성분의 변화량의 절대값을 모두 더함 (좌표축의 이동하는 거리) (abs, sum 함수 이용)
    L2 : 피타고라스 정리를 이용해 유클리드 거리를 계산 (sum, sqrt / np.linalg.norm 함수 이용)
  • 노름의 종류에 따라 기하학적 성질이 달라짐
  • 머신러닝에선 각 성질들이 필요할 때가 있으므로 둘 다 사용
    L1 : 마름모 - Robust 학습, Lasso 회귀
    L2 : 원 - Laplace 근사, Ridge  회귀

 

- 두 벡터 사이의 거리

  • L1, L2 노름을 이용해 두 벡터(점)사이의 거리를 구할 수 있음
  • 벡터의 뺄셈을 이용 ||y-x|| = ||x-y||

 

- 두 벡터 사이의 각도

  • L2 노름만 가능
  • 제 2코사인 법칙에 의해 두 벡터 사이의 각도를 구할 수 있음
  • <x, y> : 내적(inner product) -> 두 벡터들의 모든 성분곱을 더한 값 (np.inner)

 

- 내적

  • 정사영(orthogonal projection)된 벡터의 길이와 관련있음
  • 정사영 : x라는 벡터를 y라는 벡터에 빛을 쏘았을 때 볼 수 있는 그림자
  • Proj(x) : 벡터로 정사영된 벡터 x의 그림자
  • Proj(x)의 길이는 코사인법칙에 의해 ||x||*cosθ 가 된다
  • 내적 : 정사영의 길이를 벡터 y의 길이 ||y||만큼 조정한 값
    두 벡터의 유사도(similarity)를 측정하는데 사용 가능