Cosine Similarity
Apprends comment la similarité cosinus mesure la similarité vectorielle en IA. Calcule des embeddings visuels avec Ultralytics YOLO26 et passe à l'échelle avec la plateforme Ultralytics.
La similarité cosinus est une métrique mathématique fondamentale utilisée en machine learning (ML) et en intelligence artificielle (AI) pour mesurer la similarité entre deux tableaux multidimensionnels ou vecteurs, indépendamment de leur taille ou de leur magnitude. En calculant l'angle entre deux points dans un espace vectoriel, elle détermine s'ils pointent approximativement dans la même direction. Cette approche angulaire est essentielle pour traiter des données où l'orientation importe plus que la longueur globale, ce qui la rend très efficace pour comparer des représentations de données abstraites telles que les embeddings.
Comprendre les mathématiques derrière la mesure#
Pour calculer cette métrique, tu calcules le produit scalaire de deux vecteurs et le divises par le produit de leurs magnitudes (longueurs) individuelles. Le score obtenu se situe toujours dans une plage fixe allant de -1 à 1 :
- Un score de 1 signifie que les vecteurs pointent exactement dans la même direction, ce qui indique une similarité maximale.
- Un score de 0 signifie que les vecteurs sont complètement orthogonaux (à un angle de 90 degrés), ce qui indique l'absence de similarité directionnelle.
- Un score de -1 signifie qu'ils pointent dans des directions exactement opposées.
Dans de nombreux frameworks de deep learning modernes conçus pour la vision par ordinateur (CV), tu peux facilement accéder à des fonctions optimisées pour cette opération mathématique, telles que le module fonctionnel de PyTorch ou les métriques TensorFlow.
Différencier les concepts associés#
Il est utile de distinguer la similarité cosinus d'autres mesures d'analyse de données fréquemment utilisées pour comprendre quand l'utiliser :
- Distance Cosinus : Bien que très proches, ces termes sont inversement proportionnels. La distance cosinus se calcule simplement comme 1 moins la similarité cosinus. Par conséquent, une distance plus faible indique une similarité plus élevée entre les vecteurs.
- Distance Euclidienne : Cette mesure calcule la distance physique en ligne droite entre deux points, ce qui la rend très sensible à la taille globale ou à l'amplitude des vecteurs. En revanche, la similarité cosinus ne s'intéresse qu'à l'angle. Par exemple, dans l'analyse de texte, un long document et une courte phrase peuvent avoir une distance euclidienne importante, mais s'ils partagent le même sujet, leur similarité cosinus restera élevée.
Applications concrètes en IA#
La similarité cosinus agit comme le moteur central de nombreux logiciels modernes, comblant le fossé entre les données brutes et l'intention humaine.
- Recherche Vectorielle et RAG : Dans les applications de Traitement Automatique du Langage Naturel (NLP) telles que les chatbots, les requêtes des utilisateurs et les documents internes sont convertis en embeddings denses. Le système calcule rapidement la similarité cosinus pour récupérer les documents les plus pertinents contextuellement à partir d'une base de données vectorielle, une étape cruciale dans la génération augmentée par récupération (RAG).
- Systèmes de Recommandation : Le e-commerce et les services de streaming utilisent des outils tels que Scikit-learn et SciPy pour représenter les préférences des utilisateurs et les articles du catalogue sous forme de vecteurs. En mesurant le score de similarité entre le profil d'un acheteur et différents produits, les systèmes peuvent recommander avec précision des articles visuellement ou thématiquement apparentés.
Mesurer la similarité visuelle avec Ultralytics#
Tu peux extraire des vecteurs de caractéristiques de grande dimension directement à partir de données visuelles en utilisant des modèles de vision de pointe. Le code Python suivant montre comment charger un modèle Ultralytics YOLO26 pour la classification d'images, générer des embeddings pour deux images et effectuer un calcul de similarité cosinus pour mesurer leur ressemblance visuelle.
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}")Pour les développeurs qui cherchent à mettre à l'échelle ces capacités de recherche sémantique, l'entraînement de modèles de base d'une grande précision est primordial. La Ultralytics Platform simplifie ce pipeline en offrant des outils robustes pour l'annotation de données, l'entraînement cloud évolutif et le déploiement de modèles fluide, garantissant que tes embeddings sous-jacents sont aussi précis et pertinents que possible.






