Deep Learning/PyTorch

Vector (벡터)란?

green_ne 2022. 1. 21. 14:06

# Vector

컴퓨터에서는 list나 array로 표현함.

공간에서는 "한 점"을 의미.

 

원점을 생각해보면,

- 1D (수직선) 위에서는, 0

- 2D (좌표평면) 에서는, [0,0]

- 3D (3차원 공간) 에서는, [0,0,0]

- n차원 공간에서는, [0,0,...,0] 인거임.

 

그래서 원점을 기준으로 x라는 위치를 나타낸 것이 Vector를 의미함.

이는 원점에 대한 위치라 상대적 위치라고 할 수 있음.

 

- 스칼라곱 : 크기를 곱하면, 그 벡터의 길이가 바뀜.

- 성분곱 : 같은 모양이면 가능. 성분(원소)끼리의 곱을 말함.

- 같은 모양(차원, 개수)에서 +/- 연산 가능. (상대적 위치 이동)

X = [[1,2,3],[4,5,6],[7,8,9]]

# 스칼라곱
3 * X

# 성분곱
[1,7,2] * [5,2,1] = [5,14,2]

 

노름 norm

(임의의 n차원에서의) 원점에서 부터의 거리

- L1-norm : 각 성분의 변화량의 절대값의 합

- L2-norm : 피타고라스 정리로 유클리드 거리 계산한 것

위 2가지 거리 계산 방법은 기하학적 성질이 달라, 다르게 쓰임

 

두 Vector 사이의 거리 : Vector의 뺄셈을 이용하면 됨.

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

위 연산은 L1-norm/L2-norm 선택하여 계산할 수 있음.

 

두 Vector 사이의 각도 : (임의의 n차원에서의) (L2노름에서만 연산 가능)

유클리드로 두 Vector 사이의 거리를 계산 가능하다면, 제2코사인 법칙에 의해 두 Vector 사이의 각도도 계산이 가능함.

자세하게 보면, 내적 연산은 두 벡터 원소들의 성분곱의 합으로 계산할 수 있음.

이 내적은 정사영과 관련이 있는데, 정사영한 값에서 스칼라만큼의 값을 조정한 것이 내적값임.

제2코사인 법칙

 

# Matrix

성분곱과 행렬곱셈은 다른 것임.

성분곱은 말 그대로 성분끼리 곱하는 것이고,

행렬곱셈은 i번째 행벡터와 j번째 열벡터를 곱하는 것임.

 

numpy에서 inner 함수에 X, Y를 인수로 주어 연산하는 것은 

X, Y^T 에 대해 행렬곱셈한 값을 말함.

이러한 내적연산은 주어진 데이터의 패턴을 추출하거나, 데이터를 압축하기 위해 사용.

 

X = np.array([[1,2,3],[4,5,6]]) # 2*3
y = np.array([1,3]) # 2*1

# 내적 연산
np.dot(X, y) # 방법 1
np.inner(X, y) # 방법 2

 

 

 

 

반응형