Cosine Similarity
Узнай, как косинусное сходство измеряет близость векторов в ИИ. Вычисляй визуальные эмбеддинги с Ultralytics YOLO26 и масштабируй решения с помощью Ultralytics Platform.
Косинусное сходство — фундаментальная математическая метрика, используемая в машинном обучении (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 упрощает этот процесс благодаря надёжным инструментам для аннотирования данных, масштабируемого обучения в облаке и удобного развёртывания моделей, помогая добиться максимальной точности и содержательности базовых эмбеддингов.









