Yolo 비전 선전
선전
지금 참여하기
용어집

코사인 유사도

AI에서 코사인 유사도가 벡터 유사도를 어떻게 측정하는지 알아보세요. Ultralytics 사용하여 시각적 임베딩을 계산하고, Ultralytics 통해 확장성을 확보하세요.

코사인 유사도는 기계 학습(ML) 인공지능(AI) 분야에서 두 개의 다차원 배열이나 벡터가 크기나 절대값에 관계없이 얼마나 유사한지를 측정하는 데 사용되는 기본적인 수학적 지표입니다. 벡터 공간 내 두 점 사이의 각도를 계산함으로써, 이들이 대략적으로 같은 방향을 가리키는지 판단합니다. 이러한 각도 기반 접근 방식은 전체 길이보다 방향이 더 중요한 데이터를 처리하는 데 필수적이며, 임베딩과 같은 추상적인 데이터 표현을 비교하는 데 매우 효과적입니다.

미터법의 수학적 원리 이해하기

이 지표를 계산하려면 두 벡터의 내적을 구한 뒤, 그 결과를 각 벡터의 크기 (길이)의 곱으로 나누면 됩니다. 이렇게 산출된 점수는 항상 -1에서 1 사이의 고정된 범위에 속합니다:

  • 점수가 1인 경우 벡터들이 정확히 같은 방향을 가리키며, 이는 최대 유사성을 의미합니다.
  • 점수가 0이라면 벡터들이 완전히 직교 (90도 각도)를 이루며, 이는 방향적 유사성이 전혀 없음을 의미합니다.
  • -1이라는 점수는 두 방향이 정확히 반대 방향을 가리킨다는 것을 의미합니다.

컴퓨터 비전(CV)을 위해 설계된 많은 최신 딥러닝 프레임워크에서는 PyTorch functional 모듈이나 TensorFlow 같이 이 수학적 연산을 위해 최적화된 함수를 쉽게 활용할 수 있습니다.

관련 개념 차별화

코사인 유사도를 다른 자주 사용되는 데이터 분석 지표들과 구분해 두면, 이를 언제 사용해야 하는지 이해하는 데 도움이 됩니다:

  • 코사인 거리: 이 두 용어는 밀접한 관련이 있지만, 서로 반비례 관계에 있습니다. 코사인 거리는 단순히 1에서 코사인 유사도를 뺀 값으로 계산됩니다. 따라서 거리가 작을수록 벡터 간의 유사도가 높음을 의미합니다.
  • 유클리드 거리: 이 측정 기준은 두 점 사이의 직선상 물리적 거리를 측정하므로, 벡터의 전체 크기나 크기에 매우 민감합니다. 반면, 코사인 유사도는 각도만 고려합니다. 예를 들어, 텍스트 분석에서 긴 문서와 짧은 문장은 유클리드 거리가 클 수 있지만, 주제가 같다면 코사인 유사도는 여전히 높게 유지됩니다.

AI의 실제 적용 사례

코사인 유사도는 수많은 최신 소프트웨어 제품의 핵심 엔진 역할을 하며, 원시 데이터와 사람의 의도 사이의 간극을 메워줍니다.

  • 벡터 검색과 RAG: 챗봇과 같은 자연어 처리(NLP) 애플리케이션에서는 사용자 쿼리와 내부 문서를 고밀도 임베딩으로 변환합니다. 시스템은 코사인 유사도를 신속하게 계산하여 벡터 데이터베이스에서 문맥적으로 가장 관련성이 높은 문서를 검색하며, 이는 검색 강화 생성(RAG)의 핵심 단계입니다.
  • 추천 시스템: 전자상거래 및 스트리밍 서비스는 Scikit-learnSciPy와 같은 도구를 활용하여 사용자 선호도와 상품 목록을 벡터로 표현합니다. 구매자의 프로필과 다양한 상품 간의 유사도 점수를 측정함으로써, 시스템은 시각적 또는 주제적으로 관련성이 높은 상품을 정확하게 추천할 수 있습니다.

Ultralytics 활용한 시각적 유사도 측정

최신 비전 모델을 사용하면 시각 데이터에서 직접 고차원 특징 벡터를 추출할 수 있습니다. 다음 Python 이미지 분류를 위해 Ultralytics 모델을 불러오고, 두 이미지에 대한 임베딩을 생성한 다음, 코사인 유사도 계산을수행하여 두 이미지의 시각적 유사성을 측정하는 방법을 보여줍니다.

import torch
import torch.nn.functional as F
from ultralytics import YOLO

# Load a pre-trained YOLO26 classification model
model = YOLO("yolo26n-cls.pt")

# Generate embedding vectors for two separate images
results = model.embed(["bus.jpg", "car.jpg"])

# Calculate the cosine similarity between the two visual embeddings
similarity = F.cosine_similarity(torch.tensor(results[0]), torch.tensor(results[1]), dim=0)
print(f"Visual Similarity Score: {similarity.item():.4f}")

이러한 의미 기반 검색 기능을 확장하고자 하는 개발자들에게는 정확도가 높은 기본 모델을 훈련하는 것이 무엇보다 중요합니다. Ultralytics 데이터 주석 작업, 확장 가능한 클라우드 훈련, 원활한 모델 배포를 위한 강력한 도구를 제공함으로써 이 프로세스를 간소화하여, 기본 임베딩이 최대한 정확하고 의미 있게 활용될 수 있도록 보장합니다.

함께 AI의 미래를 만들어 갑시다!

미래의 머신러닝 여정을 시작하세요