Cosine Similarity
Узнай, как косинусное сходство измеряет векторное подобие в ИИ. Вычисляй визуальные эмбеддинги с Ultralytics YOLO26 и масштабируй их с платформой Ultralytics.
Косинусное сходство — это фундаментальная математическая метрика, используемая в машинном обучении (ML) и искусственном интеллекте (AI) для измерения того, насколько похожи два многомерных массива или вектора, независимо от их размера или амплитуды. Вычисляя угол между двумя точками в векторном пространстве, метрика определяет, указывают ли они примерно в одном направлении. Такой угловой подход критически важен для обработки данных, где ориентация важнее общей длины, что делает его чрезвычайно эффективным для сравнения абстрактных представлений данных, таких как эмбеддинги.
Понимание математики этой метрики#
Чтобы вычислить эту метрику, ты находишь скалярное произведение двух векторов и делишь его на произведение их индивидуальных амплитуд (длин). Полученный результат всегда находится в фиксированном диапазоне от -1 до 1:
- Оценка 1 означает, что векторы указывают в точно одном направлении, что говорит о максимальном сходстве.
- Оценка 0 означает, что векторы полностью ортогональны (под углом 90 градусов), то есть направленное сходство отсутствует.
- Оценка -1 означает, что они указывают в прямо противоположных направлениях.
Во многих современных фреймворках глубокого обучения, разработанных для компьютерного зрения (CV), ты можешь легко получить доступ к оптимизированным функциям для этой математической операции, таким как функциональный модуль PyTorch или метрики TensorFlow.
Разграничение связанных понятий#
Полезно отличать косинусное сходство от других часто используемых измерений аналитики данных, чтобы понимать, когда его применять:
- Косинусное расстояние: будучи тесно связанными, эти понятия обратно пропорциональны. Косинусное расстояние рассчитывается просто как 1 минус косинусное сходство. Следовательно, меньшее расстояние указывает на более высокое сходство между векторами.
- Евклидово расстояние: Эта метрика измеряет прямолинейное физическое расстояние между двумя точками, что делает её крайне чувствительной к общему размеру или величине векторов. В отличие от него, косинусное сходство учитывает только угол. Например, в текстовом анализе длинный документ и короткое предложение могут иметь большое Евклидово расстояние, но если они касаются одной и той же темы, их косинусное сходство останется высоким.
Реальные применения в ИИ#
Косинусное сходство выступает в роли ключевого механизма для множества современных программных продуктов, сокращая разрыв между необработанными данными и человеческим намерением.
- Векторный поиск и 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 оптимизирует этот пайплайн, предлагая надежные инструменты для разметки данных, масштабируемого облачного обучения и бесшовного развертывания моделей, гарантируя, что твои базовые эмбеддинги будут максимально точными и содержательными.






