Cosine Similarity
코사인 유사도가 AI에서 벡터 유사도를 측정하는 방법을 알아보세요. Ultralytics YOLO26으로 시각 임베딩을 계산하고 Ultralytics Platform으로 확장해 보세요.
코사인 유사도는 머신러닝 (ML)과 인공지능 (AI)에서 크기나 크기에 관계없이 두 다차원 배열 또는 벡터가 얼마나 유사한지 측정하는 데 사용하는 기본적인 수학적 지표입니다. 벡터 공간에서 두 점 사이의 각도를 계산하여 두 점이 대략 같은 방향을 가리키는지 판단합니다. 이 각도 기반 접근 방식은 전체 길이보다 방향이 더 중요한 데이터를 처리할 때 중요하며, 임베딩과 같은 추상적인 데이터 표현을 비교하는 데 매우 효과적입니다.
지표의 수학적 원리 이해하기#
이 지표를 계산하려면 두 벡터의 내적을 구한 뒤, 각 벡터의 크기(길이)를 곱한 값으로 나눕니다. 결과 점수는 항상 -1에서 1 사이의 고정된 범위에 있습니다:
- 점수가 1이면 벡터가 정확히 같은 방향을 가리키며, 유사도가 최대임을 의미합니다.
- 점수가 0이면 벡터가 완전히 직교(90도 각도)하므로 방향 유사성이 없음을 의미합니다.
- 점수가 -1이면 두 벡터가 정확히 반대 방향을 가리킴을 의미합니다.
컴퓨터 비전 (CV)용으로 설계된 최신 딥러닝 프레임워크에서는 PyTorch의 함수형 모듈이나 TensorFlow 지표와 같이 이 수학 연산에 최적화된 함수를 쉽게 사용할 수 있습니다.
관련 개념 구분#
언제 사용해야 하는지 이해하려면 코사인 유사도와 자주 사용되는 다른 데이터 분석 지표를 구별하는 것이 유용합니다:
- 코사인 거리: 밀접하게 연관된 개념이지만 두 용어는 반비례 관계입니다. 코사인 거리는 코사인 유사도를 1에서 뺀 값으로 계산합니다. 따라서 거리가 작을수록 벡터 간 유사도가 높습니다.
- 유클리드 거리: 이 지표는 두 점 사이의 직선상 물리적 거리를 측정하므로 벡터의 전체 크기나 크기에 매우 민감합니다. 반면 코사인 유사도는 각도만 고려합니다. 예를 들어 텍스트 분석에서 긴 문서와 짧은 문장은 유클리드 거리가 클 수 있지만, 같은 주제를 다룬다면 코사인 유사도는 여전히 높습니다.
AI의 실제 활용 사례#
코사인 유사도는 수많은 최신 소프트웨어 제품의 핵심 엔진으로 작동하며, 원시 데이터와 인간의 의도 사이의 간극을 연결합니다.
- 벡터 검색 및 RAG: 챗봇과 같은 자연어 처리 (NLP) 애플리케이션에서는 사용자 질의와 내부 문서를 밀집 임베딩으로 변환합니다. 시스템은 코사인 유사도를 신속하게 계산하여 벡터 데이터베이스에서 문맥상 가장 관련성이 높은 문서를 검색합니다. 이는 검색 증강 생성 (RAG)의 핵심 단계입니다.
- 추천 시스템: 전자상거래 및 스트리밍 서비스는 Scikit-learn 및 SciPy와 같은 도구를 사용해 사용자 선호도와 카탈로그 항목을 벡터로 표현합니다. 쇼핑객의 프로필과 다양한 제품 간의 유사도 점수를 측정하면 시스템이 시각적 또는 주제적으로 관련된 항목을 정확하게 추천할 수 있습니다.
Ultralytics로 시각적 유사도 측정하기#
최첨단 비전 모델을 사용하면 시각 데이터에서 고차원 특징 벡터를 직접 추출할 수 있습니다. 다음 Python 코드는 이미지 분류를 위한 Ultralytics YOLO26 모델을 불러오고, 두 이미지의 임베딩을 생성한 뒤 코사인 유사도를 계산하여 시각적 유사성을 측정하는 방법을 보여줍니다.
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 Platform은 강력한 데이터 어노테이션 도구, 확장 가능한 클라우드 학습, 원활한 모델 배포를 제공하여 이 파이프라인을 간소화하고, 기반 임베딩의 정확도와 유의미성을 최대한 높입니다.









