728x90
Vector에 대해 알아보자.
1. Vector 란?
- 숫자를 원소로 가지는 리스트(list) 또는 배열(array) 을 말한다.
import numpy as np
x1 = [ 1,2,3 ] # 리스트
x2 = np.array([1,2,3]) # 배열
- 공간에서의 한 점을 말하며, 벡터는 원점으로부터 상대적 위치를 표현한다.
2. 스칼라곱 이란?
벡터에 숫자를 곱하면 길이가 변하게 되는데 이를 스칼라곱이라고 한다.
벡터 x에 a를 곱할 때,
a > 1 | a < 1 | a < 0 |
길이 증가 | 길이 감소 | 반대 방향 전환 |
- a가 1보다 크면 길이가 증가한다.
- a가 1보다 작으면 길이는 감소한다.
- a가 0보다 작으면 반대 방향으로 전환된다.
3. 벡터의 덧셈, 뺄셈, 성분곱(Hadamard Product)
벡터는 같은 모양을 가진 벡터끼리 덧셈, 뺄셈, 성분곱(Hadamard Product) 계산을 할 수 있다.
벡터의 덧셈 | 벡터의 뺄셈 |
두 벡터의 덧셈은 다른 벡터로부터 상대적 위치 이동을 표현한다. |
두 벡터의 뺄셈은 방향을 뒤집은 덧셈이다. |
![]() |
![]() |
성분곱(Hadamard Product)은 동일 차원의 행렬끼리 동일 위치의 원소와 곱하는 곱셈을 말한다.
4. 벡터의 노름(norm) 이란?
벡터의 노름(norm)은 원점에서부터 벡터까지의 거리를 말한다. ( || x || )
노름(norm)에는 L1 norm, L2 norm 2가지가 있다.
L1 norm | L2 norm |
![]() |
![]() |
각 성분 변화량의 절대값을 모두 더한다. | 피타고라스를 이용하여 유클리드 거리를 계산한다. |
x = [ 2, 5 ]인 경우,![]() L1 norm은 7이 됩니다. |
x = [ -3, 4 ] ![]() L2 norm은 5가 됩니다. |
노름은 종류에 따라 기하학적인 성질이 달라지며 목적에 따라 머신러닝에서 선택하여 사용한다.
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
test = [-1, 2, -3]
print(l1_norm(test))
print(l2_norm(test))
5. 두 벡터 사이의 거리 구하기
두 벡터(x, y)의 뺄셈을 구하면 된다.
-> || y - x || = || x - y ||
6. 두 벡터 사이의 각도 계산하기
각도는 L2 norm을 사용해서만 구할 수 있으며 제2 코사인 법칙을 이용한다.
# 내적은 np.inner을 사용하여 구한다.
def angle(x,y):
v = np.inner(x,y) / (l2_norm(x) * l2_norm(y))
theta = np.arccos(v)
return theta
x1 = np.array([1,2,3])
x2 = np.array([3,2,1])
print(angle(x1,x2))
7. 내적 이란?
- 간단하게 분자를 쉽게 계산하는 방법을 말한다.
- 내적은 정사영된 벡터의 길이와 관련이 있다.
- Proj(x)는 벡터 y로 정사영된 벡터 x의 그림자를 의미한다.
- || y || cosθ
- 내적은 정사영(orthogonal projection)의 길이를 벡터 y의 길이 || y ||만큼 조정한 값이다.
- || y || Proj(x)
- 두 벡터의 유사도를 측정하는데 사용된다.
- Numpy의 np.inner( )를 통해 쉽게 구할 수 있다.
import numpy as np
x = np.array([1,-1,1,-1])
y = np.array([4,-4,4,-4])
print(np.inner(x,y)) # 16
[AI Tech Pre-course] 인공지능(AI) 기초 다지기
부스트코스 무료 강의
www.boostcourse.org
728x90
'Python > 인공지능' 카테고리의 다른 글
[인공지능 기초] 경사하강법 2 (2) | 2021.06.07 |
---|---|
[인공지능 기초] 경사하강법 (2) | 2021.06.05 |
[인공지능 기초] 행렬(Matrix) 이란? (2) | 2021.06.03 |
댓글
최근에 올라온 글
TAG
- 파이썬
- 프로그래머스
- 머신러닝
- Programmers
- algorithm
- 인공지능
- Scikit
- 주니온
- 경사하강법
- 알고리즘
- db
- 기계학습
- cnn
- Pandas
- Max()
- VGGNet
- 딥러닝
- Project
- Ai
- SQL
- numpy
- slqd
- OpenCV
- Python
- MongoDB
- Min()
- SQLD
- 자료구조
- sklearn
- 부스트코스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Total
- Today
- Yesterday
250x250