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 mesure mathématique fondamentale utilisée en machine learning (ML) et en intelligence artificielle (AI) pour mesurer à quel point deux multi-dimensional arrays ou vecteurs sont similaires, indépendamment de leur taille ou de leur amplitude. En calculant l'angle entre deux points dans un vector space, elle détermine s'ils pointent approximativement dans la même direction. Cette approche angulaire est cruciale pour traiter des données où l'orientation compte plus que la longueur globale, ce qui la rend très efficace pour comparer des représentations de données abstraites comme les embeddings.
Link to this sectionComprendre les mathématiques derrière la mesure#
Pour calculer cette mesure, tu calcules le dot product de deux vecteurs et tu le divises par le produit de leurs magnitudes (longueurs) individuelles. Le score résultant 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 totalement orthogonal (à un angle de 90 degrés), ce qui signifie qu'il n'y a aucune 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 computer vision (CV), tu peux facilement accéder à des fonctions optimisées pour cette opération mathématique, comme le PyTorch's functional module ou les TensorFlow metrics.
Link to this sectionDifférencier les concepts associés#
Il est utile de distinguer la similarité cosinus d'autres mesures de data analytics fréquemment utilisées pour comprendre quand l'utiliser :
- Cosine Distance : Bien qu'étroitement liés, 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 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 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.
Link to this sectionApplications 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.
- Vector Search and RAG : Dans les applications de Natural Language Processing (NLP) comme 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 vector database, une étape cruciale dans la Retrieval-Augmented Generation (RAG).
- Recommendation Systems : Le commerce électronique et les services de streaming utilisent des outils comme Scikit-learn and 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 liés.
Link to this sectionMesurer la similarité visuelle avec Ultralytics#
Tu peux extraire des vecteurs de caractéristiques de haute 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 l'image classification, 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 souhaitant mettre à l'échelle ces capacités de semantic search, l'entraînement de modèles de base très précis est primordial. La Ultralytics Platform rationalise ce pipeline en proposant des outils robustes pour le data annotation, l'entraînement cloud évolutif et un model deployment fluide, garantissant que tes embeddings sous-jacents soient aussi précis et significatifs que possible.






