코사인 유사도(Cosine Similarity)는 두 벡터의 방향 유사도를 측정하는 방법입니다.
값의 범위: -1 ~ 1
import numpy as np
A = np.array([1, 2])
B = np.array([2, 4])
cos_sim = np.dot(A, B) / (np.linalg.norm(A) * np.linalg.norm(B))
print("Cosine Similarity:", cos_sim) # 1.0
A = np.array([1, 0])
B = np.array([0, 1])
cos_sim = np.dot(A, B) / (np.linalg.norm(A) * np.linalg.norm(B))
print("Cosine Similarity:", cos_sim) # 0.0
import torch
import torch.nn.functional as F
a = torch.tensor([[1.0, 2.0]])
b = torch.tensor([[2.0, 4.0]])
cos_sim = F.cosine_similarity(a, b)
print(cos_sim.item()) # 1.0
torch.nn.functional.cosine_similarity()
함수 사용분야 | 사용 목적 |
---|---|
얼굴 인식 | 얼굴 임베딩 벡터 간 유사도 측정 |
자연어 처리 | 문장 간 의미 유사도 계산 (예: BERT 임베딩 비교) |
추천 시스템 | 사용자와 아이템 벡터 간 유사도 기반 추천 |
클러스터링/군집 분석 | 유사한 방향을 가진 벡터끼리 그룹화 |
코사인 유사도는 거리(metric)가 아닌 유사도(similarity)입니다.
L2 거리(Euclidean distance)와 비교하면, 벡터의 크기에 민감한지 여부가 중요한 차이입니다.