Cosine Similarity
Узнай, как косинусное сходство измеряет векторное подобие в ИИ. Вычисляй визуальные эмбеддинги с Ultralytics YOLO26 и масштабируй их с платформой Ultralytics.
Косинусное сходство — это фундаментальная математическая метрика, используемая в machine learning (ML) и artificial intelligence (AI) для измерения того, насколько похожи два multi-dimensional arrays или вектора, независимо от их размера или величины. Вычисляя угол между двумя точками в vector space, она определяет, указывают ли они примерно в одном направлении. Этот угловой подход критически важен для обработки данных, где ориентация важнее общей длины, что делает его крайне эффективным для сравнения абстрактных представлений данных, таких как embeddings.
Link to this sectionПонимание математики этой метрики#
Чтобы рассчитать эту метрику, вычисли dot product двух векторов и раздели его на произведение их индивидуальных magnitudes (длин). Результирующая оценка всегда находится в фиксированном диапазоне от -1 до 1:
- Оценка 1 означает, что векторы указывают в точно одном направлении, что говорит о максимальном сходстве.
- Оценка 0 означает, что векторы полностью orthogonal (под углом 90 градусов), то есть между ними нет направленного сходства.
- Оценка -1 означает, что они указывают в прямо противоположных направлениях.
Во многих современных фреймворках глубокого обучения, предназначенных для computer vision (CV), ты можешь легко получить доступ к оптимизированным функциям для этой математической операции, таким как PyTorch's functional module или TensorFlow metrics.
Link to this sectionРазграничение связанных понятий#
Полезно отличать косинусное сходство от других часто используемых измерений data analytics, чтобы понимать, когда его использовать:
- Cosine Distance: Хотя они тесно связаны, эти термины обратно пропорциональны. Косинусное расстояние просто рассчитывается как 1 минус косинусное сходство. Следовательно, меньшее расстояние указывает на более высокое сходство между векторами.
- Евклидово расстояние: Эта метрика измеряет прямолинейное физическое расстояние между двумя точками, что делает её крайне чувствительной к общему размеру или величине векторов. В отличие от него, косинусное сходство учитывает только угол. Например, в текстовом анализе длинный документ и короткое предложение могут иметь большое Евклидово расстояние, но если они касаются одной и той же темы, их косинусное сходство останется высоким.
Link to this sectionРеальные применения в ИИ#
Косинусное сходство выступает в роли ключевого механизма для множества современных программных продуктов, сокращая разрыв между необработанными данными и человеческим намерением.
- Vector Search and RAG: В приложениях Natural Language Processing (NLP), таких как чат-боты, пользовательские запросы и внутренние документы преобразуются в плотные эмбеддинги. Система быстро вычисляет косинусное сходство для извлечения наиболее контекстуально релевантных документов из vector database — это важнейший этап в Retrieval-Augmented Generation (RAG).
- Recommendation Systems: Сервисы электронной коммерции и стриминговые платформы используют инструменты, такие как Scikit-learn and SciPy, для представления пользовательских предпочтений и элементов каталога в виде векторов. Измеряя показатель сходства между профилем покупателя и различными продуктами, системы могут точно рекомендовать визуально или тематически схожие товары.
Link to this sectionИзмерение визуального сходства с Ultralytics#
Ты можешь извлекать высокоразмерные векторы признаков непосредственно из визуальных данных, используя передовые модели компьютерного зрения. Следующий код на Python демонстрирует, как загрузить модель Ultralytics YOLO26 для image classification, создать эмбеддинги для двух изображений и выполнить расчет косинусного сходства для измерения их визуального подобия.
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}")Для разработчиков, стремящихся масштабировать эти возможности semantic search, критически важно обучать высокоточные базовые модели. Ultralytics Platform упрощает этот конвейер, предлагая надежные инструменты для data annotation, масштабируемого облачного обучения и бесшовного model deployment, гарантируя, что твои базовые эмбеддинги будут максимально точными и значимыми.






