벡터 - 정의, 벡터의 연산, 노름(norm), 벡터 사이의 거리와각도

이한결·2024년 2월 3일

벡터의 정의

벡터는 수학, 물리학, 공학에서 크기와 방향을 함께 갖는 양을 일컫는다.[위키백과]
벡터는 숫자를 원소로 가지는 리스트(list) 또는 배열(array)이다.
코드를 통해서 조금더 직관적으로 알아보자.

import numpy as np

#행벡터 x 생성
x = np.array([1, 2, 3]) 			#array
#x = [1, 2, 3] 						#list
#열벡터 y 생성
y = np.array([[1], [2], [3]]) 		#array
#y = [[1], [2], [3]] 	 			#list

배열의 방향에 따라 벡터는 행벡터와 열벡터로 구분된다. 일반적으로 코딩 시 행벡터를 사용하는 것이 기준이다. 특히 주의해야 할 점은 차원이다. 코드를 자세히 살펴보면, 열벡터를 만들 때 대괄호([])를 두 번 사용하는 것을 볼 수 있다. 이는 열벡터가 행벡터와는 달리 2차원 구조를 가지기 때문에 대괄호를 두 번 사용하는 것이다.

위의 그림처럼 각 벡터를 출력한 결과 행벡터(x)는 1차원, 열벡터(y)는 2차원 인것을 확인할 수 있다.

벡터는 공간에서 하나의 점을 나타내는 방법으로 정의할 수 있다.
인공지능 분야에서는 차원의 수가 매우 많아 시각적으로 표현하기 어렵지만, 벡터를 공간에서 위치를 가진 점으로 생각하면 이해하기 쉽다.

벡터의 연산

○ 벡터의 덧셈과 뺄셈

○ 벡터의 성분곱

벡터는 숫자로 이루어진 리스트나 배열이므로, 두 벡터의 형태가 동일하다면 덧셈, 뺄셈 그리고 성분곱 연산이 가능하다.
코딩을 할 때 주의해야할점은 벡터의 연산은 list가 아닌 array형식으로 해야된다.

리스트를 사용하여 연산을 수행하면 두 리스트가 연결되는 반면, 배열을 사용할 경우 두 배열의 각 요소가 덧셈 연산을 수행하는 것을 확인할 수 있다.

두 벡터의 덧셈은 다른 벡터로부터 상대적 위치이동을 표현한다

사진출처: 네이버 부스트 클래스 [14차시] 벡터가 뭐에요?

벡터의 뺄셈은 덧셈의 방향을 뒤집은 것

벡터의 노름

벡터의 노름은 원점에서 한점 사이의 거리

벡터의 노름은 L1노름과 L2노름 2가지가 존재한다.
L1노름: 각 성분의 변화량의 절댓값을 모두 더한 값
L2노름: 피타고라스 정리를 이용해 유클리드 거리를 계산한 값

def l1_norm(x):
	x_norm = np.abs(x)		#변화량의 절댓값
    x_norm = np.sum(x_norm) #위의 값을 전부 더한다
    retrun 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

노름의 종류에 따라 기하학적 성질이 달라진다.

두 벡터 사이의 거리


위에서 배운 L1,L2 노름을 이용해 두 벡터 사이의 거리를 계산할 수 있다.
두 벡터 사이의 거리를 계사날 때는 벡터의 뺄셈을 이용한다.

두 벡터 사이의 각도

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

마무리

이번 포스팅에서는 벡터의 정의와 연산(덧셈, 뺄셈, 성분곱), 벡터의 노름(L1, L2) 그리고 두 벡터 사이의 거리와 각도에 대해 알아보았다. 사용된 사진은 "네이버 부스트 클래스 [14차시] 벡터가 뭐에요?" 강의 영상에서 가져온 것임을 밝힌다.

profile
열정으로 가득할 페이지

0개의 댓글