벡터
벡터는 숫자를 원소를 가지는 리스트 또는 배열.
스카라곱이 1보다 크면 길이가 늘어나고 1보다 작으면 길이가 줄어든다.
벡터끼리 같은 모양을 가지면 덧셈 뺄셈을 할 수 있다.
덧셈 : 상대적 위치 이동
뺄셈 : 반대방향, -벡터를 더한다고 생각하면 편하다
벡터의 노름 norm
벡터의 노름은 원점에서부터의 거리를 의미한다.
임의의 d 차원에 대해서 임을 이해하자
(위) L1 노름은 변화량 절대 값을 모두 더한다
(아래) L2 노름은 피타고라스 정리를 이용한 유클리드 거리를 계산한다.
def l1(x):
x_norm = np.abs(x)
return np.sum(x_norm)
def l2(x):
x_norm = x * x
x_norm = np.sum(x_norm)
return np.sqrt(x_norm)
def l2(x):
np.linalg.norm(x)
왜 두 종류가 다 있을까?
모양이 다르기 때문
각각
Robust 학습 / Lasso 회귀
Laplace 근사 Ridge 회귀
에서 사용한다.
체크!
벡터 노름을 구해보자
L1-노름 x = [0, -2, 3]
절대값 합이니까 5
L2-노름 x = [3, 4]
피타고라스 정리니까 5
벡터 사이의 각도
벡터 사이의 각도는 l2 노름으로만 구할 수 있다.
제2코사인 법칙에 의해 구할 수 있는데 식은 다음과 같다.
두 벡터가 이루는 각을 찾을 때
저 공식을 한 쪽으로 미룬 cos 각도를 구하면 된다
각을 구하기 위해너는 두 벡터의 크기와 내적이 필요하다
밑의 벡터는 l2 노름으로 나온 유클리드 공식 적용한 값이고 위는 내적
그걸 콘사인 잔대를 하면 theta 값이 나온다
여길 참고하면 더 이해가 쉬움
u = [2, 2]
v = [0, 3]
이라 하자
u의 노름2 는 root8
v의 노름2는 root9로 3
u*v는 u1v1 + u2v2로
2 * 0 + 2 * 3 = 6
cos법칙은 u*v/u노름 *v노름 이므로
=6 / root8 * 3
=1 / root2
=root2/2가 된다
마지막으로 arccosine(root2/2)로 각도를 구하면
이런식
'Boostcamp AI tech 3기 > 개념 이해' 카테고리의 다른 글
torch.range is deprecated warning -> torch.arange (0) | 2022.01.25 |
---|---|
텐서 함수 조금 정리. 생성, 타입, select, cat, stack (0) | 2022.01.25 |
pytorch의 reshape and view 차이 (+ contiguity 문제) (0) | 2022.01.24 |
[Week02] Pytorch - 3강 Pytorch 기본 환경 세팅 : colab에서 ssh 연결해 vscode 실행하기 (0) | 2022.01.24 |
[Week02] Pytorch - 1강 Introduction to Pytorch (0) | 2022.01.24 |
[Week01] AI Math - 경사하강법과 알고리즘 (0) | 2022.01.20 |
[Week01] AI Math - 행렬과 역행렬 그리고 무어-펜로즈 역행렬 (0) | 2022.01.20 |
jupyter notebook : ModuleNotFoundError 모듈 설치했는데도.. (0) | 2022.01.20 |