Cosine Similarity
Aprende cómo la similitud de coseno mide la similitud vectorial en la IA. Calcula embeddings visuales con Ultralytics YOLO26 y escala con la Plataforma Ultralytics.
La similitud de coseno es una métrica matemática fundamental utilizada en el aprendizaje automático (ML) y la inteligencia artificial (AI) para medir cuán similares son dos matrices multidimensionales o vectores, independientemente de su tamaño o magnitud. Al calcular el ángulo entre dos puntos en un espacio vectorial, determina si apuntan aproximadamente en la misma dirección. Este enfoque angular es fundamental para procesar datos donde la orientación importa más que la longitud total, lo que lo hace muy eficaz para comparar representaciones de datos abstractas como incrustaciones.
Comprender la matemática detrás de la métrica#
Para calcular esta métrica, computas el producto escalar de dos vectores y lo divides por el producto de sus magnitudes (longitudes) individuales. La puntuación resultante siempre se encuentra dentro de un rango fijo de -1 a 1:
- Una puntuación de 1 significa que los vectores apuntan exactamente en la misma dirección, lo que indica la máxima similitud.
- Una puntuación de 0 significa que los vectores son completamente ortogonales (en un ángulo de 90 grados), lo que indica que no hay similitud direccional.
- Una puntuación de -1 significa que apuntan en direcciones exactamente opuestas.
En muchos frameworks modernos de aprendizaje profundo diseñados para visión por computador (CV), puedes acceder fácilmente a funciones optimizadas para esta operación matemática, como el módulo funcional de PyTorch o las métricas de TensorFlow.
Diferenciación de conceptos relacionados#
Es útil distinguir la similitud de coseno de otras medidas de analítica de datos utilizadas frecuentemente para entender cuándo usarla:
- Distancia del Coseno: Aunque están estrechamente relacionados, estos términos son inversamente proporcionales. La distancia del coseno se calcula simplemente como 1 menos la similitud de coseno. Por lo tanto, una distancia menor indica una mayor similitud entre vectores.
- Distancia euclidiana: esta métrica mide la distancia física en línea recta entre dos puntos, por lo que es muy sensible al tamaño o magnitud total de los vectores. Por el contrario, a la similitud del coseno solo le importa el ángulo. Por ejemplo, en el análisis de texto, un documento largo y una frase corta pueden tener una gran distancia euclidiana, pero si comparten el mismo tema, su similitud del coseno seguirá siendo alta.
Aplicaciones en el mundo real en IA#
La similitud del coseno actúa como motor principal para numerosos productos de software modernos, tendiendo un puente entre los datos brutos y la intención humana.
- Búsqueda Vectorial y RAG: En aplicaciones de Procesamiento del Lenguaje Natural (NLP) como los chatbots, las consultas de los usuarios y los documentos internos se convierten en incrustaciones densas. El sistema calcula rápidamente la similitud de coseno para recuperar los documentos más relevantes contextualmente de una base de datos vectorial, un paso crucial en la Generación Aumentada por Recuperación (RAG).
- Sistemas de Recomendación: El comercio electrónico y los servicios de streaming utilizan herramientas como Scikit-learn y SciPy para representar las preferencias de los usuarios y los elementos del catálogo como vectores. Al medir la puntuación de similitud entre el perfil de un comprador y diferentes productos, los sistemas pueden recomendar con precisión elementos relacionados visualmente o temáticamente.
Medición de la similitud visual con Ultralytics#
Puedes extraer vectores de características de alta dimensión directamente a partir de datos visuales utilizando modelos de visión de vanguardia. El siguiente código en Python demuestra cómo cargar un modelo de Ultralytics YOLO26 para la clasificación de imágenes, generar incrustaciones para dos imágenes y realizar un cálculo de similitud de coseno para medir su parecido visual.
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}")Para los desarrolladores que buscan escalar estas capacidades de búsqueda semántica, entrenar modelos base de alta precisión es fundamental. La Ultralytics Platform agiliza este pipeline ofreciendo herramientas robustas para la anotación de datos, entrenamiento escalable en la nube y despliegue de modelos sin inconvenientes, asegurando que tus incrustaciones subyacentes sean lo más precisas y significativas posible.






