now is better than never
[인공지능(AI) 기초 다지기] 3. 기초 수학 첫걸음 (2) 본문
2) 벡터
- 벡터가 뭔가요?
- 숫자를 원소로 가지는 리스트 또는 배열
벡터끼리 같은 모양을 가지면 덧셈, 뺄셈을 계산할 수 있음
벡터끼리 같은 모양을 가지면 성분곱(Hadamard product)을 계산할 수 있음 - 열벡터 : 세로로 된 배열
행벡터 : 가로로 된 배열 - 코드는 보통 행벡터임
# 코드
import numpy as pd
x = [1, 7, 2]
x = np.array([1, 7, 2])
- 차원 : 벡터의 갯수
- 벡터 = 공간에서 한 점을 나타냄
원점으로부터 상대적 위치를 표현
숫자를 곱해주면 방향은 그대로고 길이만 변함 - 스칼라곱이 1보다 크면 늘어나고, 작으면 줄어듦
단, 0보다 작으면 반대 방향이 됨 - 1차원 공간: 수직선 상에 놓인 어떤 숫자
2차원 공간 : 좌표평면 (x, y) 그 자체
3차원 공간 : (x, y, z)
- 벡터의 덧셈
- 벡터의 덧셈은 다른 벡터로부터 상대적 위치이동을 표현
- 1차원 : 0+x
2차원 : 원점을 y로 옮기는 것 (y + x) - 뺄셈은 방향을 뒤집은 덧셈 = y - x
- 벡터의 노름(norm)
- 원점에서부터의 거리
- 임의의 차원 d에 대해 성립하는 것
- L1 : 각 성분의 변화량의 절대값을 모두 더함 (좌표축의 이동하는 거리) (abs, sum 함수 이용)
L2 : 피타고라스 정리를 이용해 유클리드 거리를 계산 (sum, sqrt / np.linalg.norm 함수 이용) - 노름의 종류에 따라 기하학적 성질이 달라짐
- 머신러닝에선 각 성질들이 필요할 때가 있으므로 둘 다 사용
L1 : 마름모 - Robust 학습, Lasso 회귀
L2 : 원 - Laplace 근사, Ridge 회귀
- 두 벡터 사이의 거리
- L1, L2 노름을 이용해 두 벡터(점)사이의 거리를 구할 수 있음
- 벡터의 뺄셈을 이용 ||y-x|| = ||x-y||
- 두 벡터 사이의 각도
- L2 노름만 가능
- 제 2코사인 법칙에 의해 두 벡터 사이의 각도를 구할 수 있음
- <x, y> : 내적(inner product) -> 두 벡터들의 모든 성분곱을 더한 값 (np.inner)
- 내적
- 정사영(orthogonal projection)된 벡터의 길이와 관련있음
- 정사영 : x라는 벡터를 y라는 벡터에 빛을 쏘았을 때 볼 수 있는 그림자
- Proj(x) : 벡터로 정사영된 벡터 x의 그림자
- Proj(x)의 길이는 코사인법칙에 의해 ||x||*cosθ 가 된다
- 내적 : 정사영의 길이를 벡터 y의 길이 ||y||만큼 조정한 값
두 벡터의 유사도(similarity)를 측정하는데 사용 가능
'Python > [코칭스터디 9기] 인공지능 AI 기초 다지기' 카테고리의 다른 글
[인공지능(AI) 기초 다지기] 3. 기초 수학 첫걸음 (4) (0) | 2023.02.07 |
---|---|
[인공지능(AI) 기초 다지기] 3. 기초 수학 첫걸음 (3) (0) | 2023.02.07 |
[인공지능(AI) 기초 다지기] 3. 기초 수학 첫걸음 (1) (0) | 2023.02.01 |
[인공지능(AI) 기초 다지기] 2. 파이썬 다지기 (4) (0) | 2023.01.30 |
[인공지능(AI) 기초 다지기] 2. 파이썬 다지기 (3) (0) | 2023.01.29 |