원점과 Vector(1D Tensor) 의 거리Vector의 길이, 크기 측정 함수| 항목 | L1(Manhattan) | L2(Euclidean) | L∞ |
|---|---|---|---|
| 정의 | Tensor 요소의 절대값의 합 | Tensor 요소의 제곱합의 제곱근 (두 점 사이의 직선 거리) | Tensor 요소의 절대값 중 최대값 |
| p | p=1 | p=2 | p=float('inf') |
| 기하학적 표현 | 마름모(다이아몬드) | 원 | 사각형 |
### Example ###
# torch.norm(input, p='fro', dim=None, keepdim=False, out=None, dtype=None)
t = torch.tensor([1.0, 2.0])
L1_norm = torch.norm(t, p=1)
L2_norm = torch.norm(t, p=2)
L_inf_norm = torch.norm(t, p=float('inf'))
| Similarity | Manhattan / Euclidean | Cosine |
|---|---|---|
| 계산방법 | 벡터간 맨해튼(유클리드) 거리를 역수로 변환 | 벡터간 각도를 측정하여 계산 (Dot product, Inner product로 각도 측정) |
| 특징 | 맨해튼(유클리드) 거리↑ 맨해튼(유클리드) 유사도↓ | 두 Vector 관계를 Scalar로 변환하여 유사성을 수량화 |
| 판단 | 1에 가까울 수록 두 Tensor가 유사 | 1에 가까울 수록 두 Tensor가 유사 |
| 도출방법 | 1/(1+맨해튼거리 or 유클리드거리) | ① Vector의 각 요소를 곱해서 더함 ② Vector 사이 각도를 측정하여 계산 |
💡 유사도와 거리
Cluster에서 뭉쳐있을 수록 유사도가 높다고 판단할 수 있음
따라서, 다를 수록 벡터 간의 거리가 멀게 나타난다고 할 수 있음
### Example ###
# Ex1. 맨해튼 유사도 / 유클리드 유사도
t = torch.tensor([1.0, 2.0])
L1_norm = torch.norm(t, p=1) # 맨해튼 거리
L2_norm = torch.norm(t, p=2) # 유클리드 거리
ms = 1 / (1 + L1_norm) # 맨해튼 유사도
us = 1 / (1 + L2_norm) # 유클리드 유사도
# Ex2. Cos 유사도
u = torch.tensor([1, 0, 2])
v = torch.tensor([0, 1, 2])
cs = torch.dot(u, v) / (torch.norm(u, p=2) * torch.norm(v, p=2))