Hello Computer Vision

코사인 유사도(Cosine Similarity) 알아보기 본문

딥러닝/파이토치

코사인 유사도(Cosine Similarity) 알아보기

지웅쓰 2023. 3. 29. 23:58

Contrastive Learning에 대해 공부하면서 두 벡터 간의 유사도에 대해서 Cosine Similarity가 많이 쓰여 이번 기회에 한번 알아보려고 한다.

 

코사인 유사도란?

벡터와 벡터 간의 유사도를 비교할 때 두 벡터간의 사잇각을 구해 얼마나 유사한지 수치로 나타낸 것. 예를 들어 90도일 경우 두 벡터간의 연관성은 없다고 보며, 방향이 비슷할 수록 유사하다고 본다. 이를 잘 나타내는 이미지는 다음과 같다.

그리고 값에 대해서는 다음과 같은 수식으로 구한다.

 

 

pytorch에서는 구하는 함수를 제공해준다.

import torch
import torch.nn as nn

vec1 = torch.rand(1, 128)
vec2 = torch.rand(1, 128)
cos = nn.CosineSimilarity(dim = 1)
loss = cos(vec1, vec2)
print(loss)
tensor([0.7778])

이 외에도 사이킷런에서 제공해준다.