본문 바로가기

Analysis

벡터

728x90
반응형

벡터란?

  • 숫자를 원소로 가지는 리스트 또는 배열

$$ x = \begin{bmatrix}x_{1}\\x_{2}\\...\\x_{d}\\ \end{bmatrix} $$ 

$$x^{T} = \begin{bmatrix}x_{1}&x_{2}&...\\ \end{bmatrix}$$

  • 공간에서의 한 점

  • 원점에서부터의상태적 위치

 

벡터 연산

  • 같은 모양을 가지면 벡터 간의 덧셈, 뺄셈, 성분곱(Hadamard product) 계산 가능

  • 놈 (norm) : 원점으로부터의 거리
    • 기호 : || . ||
    • 임의의 차원 d에 대해 성립 -> 차원 상관없이 계산이 가능
    • 종류
      • L1 norm 
        $$||x||_{1}=\sum_{i=1}^{d}|x_{i}|$$
        각 성분의 변화량의 절댓값의 합
        좌표평면에서 좌표축을 따라 움직이는 거리를 뜻함

      • L2 norm
        $$||x||_{2}=\sqrt{\sum_{i=1}^{d}|x_{i}|^{2}}$$
        피타고라스의 정리를 이용해 유클리드 거리를 계산
        원점에서 직접 연결된 선
    • 다른 norm을 사용하는 이유
      • 노름의 종류에 따라 기하학적 성질이 달라짐
      • 성질이 다른 기하 세계에서 학습을 할 경우 다른 성질이 성립됨
      • 다양한 방법으로 학습 또는 정규화가 가능
      • 머신러닝에서 기계학습의 목적이 다른 경우 다른 종류의 norm을 사용해야 함
        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

 

벡터 사이의 거리

L2 노름과 벡터의 뺄셈을 이용해 두 벡터 사이의 거리를 계산할 수 있다.

 

벡터 사이의 각도

L2 노름과 제2 코사인 법칙을 이용해 두 벡터 사이의 각도를 계산할 수 있다.

$$cos\theta = \frac{||x||_{2}^{2} + ||y||_{2}^{2}-||x-y||_{2}^{2}}{2||x||_{2}||y||_{2}}$$

분자를 쉽게 계산하는 방법으로 식을 변환한 것을 내적이다.

$$cos\theta = \frac{<x, y>}{||x||_{2}||y||_{2}}$$
$$<x, y> = \sum_{i=1}^{d}{x_i y_i}$$

def angle(x,y):
	v = np.inner(x, y) / (l2_norm(x) * l2_norm(y)) # np.inner:내적
    theta = np.arccos(v) # 역코사인
    return theta

 

 

내적의 해석

내적은 정사영(orthogonal projection)된 벡터의 길이와 관련이 있다. 또한 두 벡터의 유사도(similarity)를 측정하는 데 사용 가능한데 이는 두 데이터 또는 패턴이 얼마나 유사한가?라는 문제를 해결할 때 사용할 수 있다.

Proj(x)는 벡터 y로 투영된(정사영된) 벡터 x의 그림자를 의미한다.
Proj(x)의 길이는 코사인 법칙에 의해 $$||x||cos\theta$$가 된다

 

 

 

내적은 정사영의 길이를 벡터 y길이 ||y||만큼 조정한 값이다. 
$$ <x, y> = ||x||_{2}||y||_{2}cos\theta $$

728x90
반응형