Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Tokenización, embeddings y vectores, Unidad 8 — Similitud y distancia en espacios vectoriales, 8.1 — Medidas de similitud ·

Distancia euclídea

Distancia euclídea

Introducción

En el campo del procesamiento del lenguaje natural (NLP) y la inteligencia artificial, comprender cómo medir la similitud entre vectores es fundamental. La distancia euclídea es una medida matemática que nos permite cuantificar la distancia entre dos puntos en un espacio vectorial. En este artículo exploraremos por qué importa esta medida, cómo funciona y cómo aplicarla correctamente para mejorar nuestros modelos de NLP.

Explicación principal con ejemplos

¿Por qué importa medir la similitud?

Medir la similitud entre vectores nos permite realizar tareas como la búsqueda semántica, el agrupamiento de documentos, y mucho más. La distancia euclídea es una medida que nos ayuda a cuantificar esta similitud.

Definición matemática

La distancia euclídea se define para dos puntos en un espacio vectorial como la raíz cuadrada de la suma de los cuadrados de las diferencias entre sus componentes. Para vectores $\mathbf{a}$ y $\mathbf{b}$, la distancia euclídea $d$ se calcula así:

\[ d(\mathbf{a}, \mathbf{b}) = \sqrt{\sum_{i=1}^{n}(a_i - b_i)^2} \]

Ejemplo práctico

Supongamos que tenemos dos vectores de palabras tokenizadas en nuestro modelo, donde cada palabra se representa por un vector con 3 dimensiones:

\[ \mathbf{v}_1 = [0.5, 0.7, -0.2] \] \[ \mathbf{v}_2 = [-0.4, 0.8, 0.6] \]

Podemos calcular la distancia euclídea entre estos dos vectores como sigue:

import numpy as np

def euclidean_distance(v1, v2):
    return np.linalg.norm(np.array(v1) - np.array(v2))

v1 = [0.5, 0.7, -0.2]
v2 = [-0.4, 0.8, 0.6]

distancia_euclidea = euclidean_distance(v1, v2)
print(f"La distancia euclídea es: {distancia_euclidea:.3f}")

Ejemplo de aplicación en un modelo de NLP

En un modelo de NLP como BERT o Word2Vec, podríamos usar la distancia euclídea para encontrar las palabras más similares a una dada. Por ejemplo:

def find_similar_word(word_embedding, word_embeddings_dict):
    distances = [euclidean_distance(word_embedding, vec) for vec in word_embeddings_dict.values()]
    return min(distances, key=distances.get)

word_embedding = np.array([0.1, -0.3, 0.5])
similar_word = find_similar_word(word_embedding, word_embeddings)
print(f"La palabra más similar es: {similar_word}")

Errores típicos / trampas

  1. Comparar vectores de diferentes espacios:

Asegúrate siempre de que los vectores a comparar provengan del mismo espacio vectorial. Comparar un vector de embeddings Word2Vec con uno de BERT puede dar resultados imprecisos.

  1. Ignorar la escala de las características:

Si las dimensiones de los vectores tienen escalas diferentes, podrían dominar el cálculo de distancia euclídea. Normaliza las características antes de calcular la distancia.

  1. No considerar la similitud en un espacio no euclidiano:

Algunos problemas requieren medidas de distancias más adecuadas que la euclídea, como la métrica Minkowski o la distancia Manhattan. Asegúrate de seleccionar la medida correcta según el problema.

Checklist accionable

  1. Verifica que los vectores sean del mismo espacio.
  2. Normaliza las características si es necesario.
  3. Elije una métrica adecuada para tu problema (distancia euclídea, Manhattan, etc.).
  4. Evita comparar vectores con escalas muy diferentes.
  5. Verifica que la interpretación de los resultados sea correcta en tu contexto.

Cierre: Siguientes pasos

  • Aprende sobre otras métricas de similitud: Estudia otras medidas como la distancia Manhattan o la similitud coseno.
  • Practica con diferentes tipos de vectores: Trata de aplicar la distancia euclídea a embeddings generados por diferentes modelos de NLP.
  • Implementa en un proyecto real: Aplica la distancia euclídea para buscar similitudes en tu propio conjunto de datos.

Medir la similitud entre vectores es una habilidad crucial en el campo del NLP. Con el entendimiento y aplicación correcta de medidas como la distancia euclídea, podrás mejorar significativamente la precisión y eficacia de tus modelos y aplicaciones de inteligencia artificial.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).