Cosine Similarity
Découvre comment la similarité cosinus mesure la similarité entre vecteurs en IA. Calcule des embeddings visuels avec Ultralytics YOLO26 et passe à l’échelle avec Ultralytics Platform.
La similarité cosinus est une mesure mathématique fondamentale utilisée en apprentissage automatique (ML) et en intelligence artificielle (AI) pour mesurer la similitude entre deux tableaux multidimensionnels ou vecteurs, quelle que soit leur taille ou leur norme. 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 davantage que la longueur totale, ce qui la rend très efficace pour comparer des représentations abstraites de données comme les plongements.
Comprendre les mathématiques derrière cette mesure#
Pour calculer cette mesure, on calcule le produit scalaire de deux vecteurs et on le divise par le produit de leurs normes individuelles (longueurs). Le score obtenu est toujours compris 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 (formant un angle de 90 degrés), c'est-à-dire qu'ils ne présentent aucune similarité directionnelle.
- Un score de -1 signifie qu'ils pointent exactement dans des directions opposées.
Dans de nombreux frameworks modernes d'apprentissage profond conçus pour la vision par ordinateur (CV), tu peux facilement accéder à des fonctions optimisées pour cette opération mathématique, comme le module fonctionnel de PyTorch ou les métriques TensorFlow.
Distinguer les concepts associés#
Il est utile de distinguer la similarité cosinus des autres mesures couramment utilisées en analyse de données pour comprendre quand l'utiliser :
- Distance cosinus : Bien que ces termes soient étroitement liés, ils sont inversement proportionnels. La distance cosinus se calcule simplement en soustrayant la similarité cosinus de 1. Ainsi, une distance plus faible indique une plus grande similarité 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 ou à la norme globale des vecteurs. À l'inverse, la similarité cosinus ne prend en compte que l'angle. Par exemple, en analyse de texte, un long document et une phrase courte peuvent avoir une grande distance euclidienne, mais s'ils traitent du même sujet, leur similarité cosinus restera élevée.
Applications concrètes en IA#
La similarité cosinus est le moteur de nombreux logiciels modernes, faisant le lien entre les données brutes et les intentions humaines.
- Recherche vectorielle et RAG : dans les applications de traitement automatique du langage naturel (NLP), comme les chatbots, les requêtes des utilisateurs et les documents internes sont convertis en plongements denses. Le système calcule rapidement la similarité cosinus pour récupérer les documents les plus pertinents selon le contexte dans une base de données vectorielle, une étape essentielle de la génération augmentée par récupération (RAG).
- Systèmes de recommandation : les services de commerce électronique et de diffusion en continu utilisent des outils comme Scikit-learn et SciPy pour représenter sous forme de vecteurs les préférences des utilisateurs et les articles de catalogue. 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 similaires.
Mesurer la similarité visuelle avec Ultralytics#
Tu peux extraire des vecteurs de caractéristiques de grande dimension directement à partir de données visuelles à l'aide de 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 plongements pour deux images et calculer leur similarité cosinus afin de 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 souhaitent faire évoluer ces capacités de recherche sémantique, l'entraînement de modèles de base très précis est primordial. La plateforme Ultralytics fluidifie ce pipeline grâce à des outils robustes d'annotation des données, à un entraînement évolutif dans le cloud et à un déploiement de modèles sans heurts, afin que tes représentations vectorielles sous-jacentes soient aussi précises et pertinentes que possible.









