본문 바로가기

취업준비/인공지능

[AI Tech] 3주차 14-1차시 벡터가 뭐예요?

14차시: 벡터와 행렬

14-1. 벡터가 뭐예요?

벡터는 숫자를 원소로 가지는 리스트(list) 또는배열(array)입니다.

x = [1, 7, 2]
x = np.array([1, 7, 2])

열벡터와 행벡터가 있다.

보통은 행벡터 형식으로 정의한다.

벡터에 있는 숫자들의 개수를 "벡터의 차원"이라고 한다.

1. 벡터는 공간에서 한 점을 나타낸다.

1차원: 수직선

2차원: 좌표평면

3차원: 공간

인공지능에서는 훨씬 더 큰 n차원의 공간을 다루게 된다.

 

2. 벡터는 원점으로부터 상대적 위치를 표현한다.

 

3. 벡터에 숫자를 곱해주면 길이만 변한다.

"스칼라곱"이라고도 부른다.

곱하는 스칼라가 1보다 크면 길이가 늘어나고, 1보다 작으면 길이가 줄어든다.

다만, 0보다 작은 경우에는 방향이 바뀌게 된다.

 

4. 벡터끼리 같은 모양을 가지면 덧셈, 뺄셈을 계산할 수 있다.

 

5. 벡터끼리 같은 모양을 가지면 성분곱(Hadamard product)을 계산할 수 있다.

 

1. 벡터의 덧셈을 알아보자

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

 

2. 벡터의 뺄셈을 알아보자

x라는 벡터 대신 -x 벡터를 더하는 것이라고 생각하면 쉽다.

 

3. 벡터의 노름 구해보기

벡터의 노름(norm)은 원점에서부터의 거리를 의미한다.

- Norm은 임의의 차원 d에 대해 성립하는 점을 명심해야 한다.

L1 노름

: 각 성분의 변화량의 절댓값을 모두 더하는 것

L2 노름

: 피타고라스 정리를 이용해 유클리드 거리를 계산하는 것

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

 

4. 왜 다른 노름을 소개하나요?

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

머신러닝에선 각 성질들이 필요할 때가 있으므로 둘 다 사용한다.

 

5. 두 벡터 사이의 거리를 구해보자@!

L1, L2-norm을 이용해 두 벡터 사이의 거리를 계산할 수 있다.

두 벡터 사이의 거리를 계산할 때는 벡터의 뺄셈을 이용한다.

뺄셈을 거꾸로 해도 거리는 같다

 

6. 두 벡터 사이의 각도 구해보기!!

두 벡터 사이의 거리를 이용하여 각도도 계산할 수 있다.

제2 코사인 법칙에 의해 두 벡터 사이의 각도를 계산할 수 있다.

분자를 쉽게 계산하는 방법이 내적이다.

def angle(x, y):
	v = np.inner(x,y) / (l2_norm(x) * l2_norm(y))
    theta = np.accross(v)
    return theta

 

7. 내적은 어떻게 해석할까?

내적은 정사영(orthogonal projection)된 벡터의 길이와 관련 있다.

Proj(x)의 길이는 코사인법칙에 의해 ||x||cos(theta)가 된다.

내적은 정사영의 길이를 벡터 y의 길이 ||y||만큼 조정한 값이다.

 

 

 

 

 

© NAVER Connect Foundation. All Rights Reserved