[PyTorch] Vector의 크기와 유사도

Young·2024년 8월 7일

PyTorch

목록 보기
6/7

1. Norm

  • 원점Vector(1D Tensor) 의 거리
  • Vector의 길이, 크기 측정 함수
  • L1 Norm, L2 Norm, L∞ Norm 등
항목L1(Manhattan)L2(Euclidean)L∞
정의Tensor 요소의 절대값의 합Tensor 요소의 제곱합의 제곱근
(두 점 사이의 직선 거리)
Tensor 요소의 절대값 중 최대값
pp=1p=2p=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'))



2. Similarity (유사도)

  • Vector(1D Tensor)의 유사한 정도에 대한 측정값
  • Clustering 알고리즘에서 데이터들이 얼마나 유사한지 판단 기준
  • Manhattan(맨해튼) 유사도, Euclidean(유클리드) 유사도, 코사인(Cosine) 유사도가 있음
SimilarityManhattan / EuclideanCosine
계산방법벡터간 맨해튼(유클리드) 거리를 역수로 변환벡터간 각도를 측정하여 계산
(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))

0개의 댓글