본문 바로가기

머신러닝

[파이썬] 인공지능 수학 (벡터, 노름) 정리

728x90

1. 벡터

 

크기와 방향을 함께 가지는 양을 벡터라고 정의합니다.

 

x = [1, 2, 3] 과 같은 형식을 하고 있습니다.

 

파이썬에서 벡터는

 

x = numpy.array([1,2,3]) 으로 표현할 수 있습니다.

 

벡터안에 수 즉, x=[1,2,3] 에서 1,2,3을 벡터 x의 성분이라 부릅니다.

이 성분의 개수만큼 벡터의 차원이 결정됩니다.

 

x = [1,2,3] 은 3차원 벡터라고 할 수 있겠습니다.

 

벡터의 특징은 같은 차원의 벡터끼리 덧셈, 뺄셈, 성분곱을 할 수 있습니다.

 

x = [1,2,3] / y = [4,5,6] 일때

 

x + y = [1+4, 2+5, 3+6 ] -> [5, 7, 9] 

 

 

x - y = [1-4, 2-5, 3-6] -> [-3, -3, -3]

 

 

x * y = [1x4, 2x5, 3x6] -> [4, 10, 18]

 

 

또한 벡터에 임의의 수를 곱할 수 도 있습니다.

 

x * 2 = [1x2, 2x2, 3x2] -> [2, 4, 6]

 

 

하지만 만약 다른 차원의 벡터에 연산을 수행한다면 에러가 발생합니다.

 

 

2. 노름(norm)

 

벡터의 노름은 쉽게 원점으로부터의 거리라고 생각하시면 됩니다.

 

벡터의 노름에는 L1노름과 L2노름이 있습니다.

 

L1노름은 각 성분에 대한 변화량의 절댓값을 합한 것을 의미합니다.

 

즉 x = [1,2,3] 일때 

L1노름은 |1| + |2| + |3| = 6 이 됩니다.

 

x = [3, 4]인 벡터의 L1노름을 파이썬으로 구해보겠습니다.

 

 

np.abs는 값을 절댓값으로 변환해주는 numpy 함수입니다.

 

|3|+|4| = 7이 출력되는 모습을 볼 수 있습니다.

 

L2노름은 유클리드 거리를 계산한 것을 뜻합니다.

 

즉 x= [3,4] 일때

|3|^2 + |4|^2 = 9 + 16 = 25

25의 제곱근인 5가 L2노름이 됩니다.

 

 

np.sqrt는 제곱근을 구하는 numpy 함수입니다.

 

728x90
반응형