Cómo medir similitud entre datos en redes neuronales
La distancia es una medida que indica qué tan similares o diferentes son dos puntos (vectores) en un espacio. En machine learning y redes neuronales, las distancias son fundamentales para comparar embeddings, agrupar datos y calcular similitudes.
Las dos distancias más importantes son:
- Distancia Euclidiana (L2)
- Distancia Manhattan (L1)
Definición corta
La distancia mide qué tan lejos están dos vectores en un espacio.
Definición detallada
Dados dos vectores:
🔹 Distancia Euclidiana (L2)
👉 Es la distancia “en línea recta”.
🔹 Distancia Manhattan (L1)
d(x,y)=∣x1−y1∣+⋯+∣xn−yn∣
👉 Es la distancia “por ejes” (como en una ciudad con calles en cuadrícula).
Intuición
Supongamos dos puntos:
- Euclidiana → 5 (línea recta)
- Manhattan → 7 (3 + 4)
👉 Diferencia clave:
- L2 → camino directo
- L1 → suma de desplazamientos
Interpretación geométrica
Distancia Euclidiana
- Forma círculos
- Espacio continuo
- Sensible a grandes diferencias
Distancia Manhattan
- Forma diamantes
- Movimiento por ejes
- Más robusta a outliers
Comparación L1 vs L2
| Propiedad | Manhattan (L1) | Euclidiana (L2) |
|---|---|---|
| Cálculo | Suma absoluta | Raíz cuadrada |
| Sensibilidad | Menor | Mayor |
| Geometría | Diamante | Círculo |
| Uso | Sparsity | Distancia real |
Distancias en redes neuronales
🔹 1. Comparación de embeddings
Ejemplo:
- Dos frases
- Dos imágenes
👉 Se calcula distancia entre vectores.
🔹 2. K-Nearest Neighbors (KNN)
Clasificación basada en distancia.
🔹 3. Clustering (K-means)
Agrupa puntos según cercanía.
🔹 4. Loss functions
Ejemplo:
👉 Muy común en regresión.
🔹 5. Aprendizaje métrico
Modelos que aprenden a medir distancia:
- Triplet loss
- Contrastive loss
Ejemplo paso a paso
Manhattan
Euclidiana
Relación con normas
- Distancia L1 = norma L1 de
- Distancia L2 = norma L2 de
👉 Conecta directamente con el concepto de norma.
Ejemplo en Python
# Distancias manualesx = [1, 2]y = [4, 6]l1 = sum(abs(x[i] - y[i]) for i in range(len(x)))l2 = sum((x[i] - y[i])**2 for i in range(len(x))) ** 0.5print("Manhattan:", l1)print("Euclidiana:", l2)
Ejemplo en NumPy
import numpy as npx = np.array([1, 2])y = np.array([4, 6])l1 = np.linalg.norm(x - y, ord=1)l2 = np.linalg.norm(x - y, ord=2)print("L1:", l1)print("L2:", l2)
Ejemplo en PyTorch
import torchx = torch.tensor([1.0, 2.0])y = torch.tensor([4.0, 6.0])l1 = torch.norm(x - y, p=1)l2 = torch.norm(x - y, p=2)print("Manhattan:", l1.item())print("Euclidiana:", l2.item())
Ejemplo en embeddings
import torch# Dos embeddingsa = torch.tensor([0.2, 0.5, 0.3])b = torch.tensor([0.1, 0.7, 0.2])distance = torch.norm(a - b, p=2)print("Distancia entre embeddings:", distance.item())
Ejemplo con loss (L2)
import torchpred = torch.tensor([2.5, 0.0, 2.1], requires_grad=True)target = torch.tensor([3.0, -0.5, 2.0])loss = torch.sum((pred - target) ** 2)loss.backward()print("Loss:", loss.item())print("Gradiente:", pred.grad)
Qué muestra este ejemplo
- La distancia se usa como función de error
- Genera gradientes
- Permite aprendizaje
Errores comunes
Usar L2 sin entender sensibilidad
Puede amplificar outliers.
Usar L1 sin considerar geometría
Puede cambiar comportamiento del modelo.
No normalizar datos
Distancias pueden ser engañosas.
Ejemplo conceptual
Dos usuarios:
Usuario A: [edad, ingresos]
Usuario B: [edad, ingresos]
👉 Distancia mide qué tan similares son.
Interpretación profunda
Las distancias permiten:
- comparar representaciones
- medir similitud
- estructurar espacios de datos
- guiar aprendizaje
👉 Son la base de cómo los modelos entienden relaciones.
Conclusión
La distancia (Euclidiana vs Manhattan) es una herramienta esencial para medir similitud entre datos. Cada tipo de distancia tiene propiedades distintas que afectan directamente el comportamiento de los modelos.
👉 Elegir la distancia correcta puede cambiar completamente los resultados.
Related Concepts
- Norma (L1, L2)
- Vector
- Espacio vectorial
- Embeddings
- Regularización
- Optimización