Skip to content

English · Español

03 — Similitud (coseno vs Euclídea) y visualización (PCA vs UMAP)

🇪🇸 Una embedding sin métrica no significa nada — "cerca" ¿en qué sentido? Aquí explicamos por qué coseno gana sobre Euclídea para embeddings entrenadas, por qué UMAP gana sobre PCA para visualizar, y qué se puede y qué no se puede leer en una proyección 2D.

Coseno vs Euclídea

Dados dos vectores \(u, v \in \mathbb{R}^d\), dos nociones naturales de "cercanía":

Distancia euclídea

\[d_\text{euc}(u, v) = \|u - v\|_2 = \sqrt{\sum_{k=1}^d (u_k - v_k)^2}\]

Similitud coseno

\[\cos(u, v) = \frac{u \cdot v}{\|u\| \, \|v\|} \in [-1, 1]\]

El coseno es el coseno del ángulo entre \(u\) y \(v\) — es invariante a escala: escalar \(u\) por 100× no cambia \(\cos(u, v)\). La euclídea no lo es: escalar \(u\) por 100× cambia la distancia drásticamente.

Por qué el coseno suele ganar para embeddings

Tras el entrenamiento, las normas de las embeddings \(\|E[i]\|\) tienden a correlacionar con la frecuencia del token: los tokens de alta frecuencia son arrastrados hacia el centro de la distribución de embeddings y desarrollan normas grandes (porque se actualizan muchas veces). Los tokens de baja frecuencia se quedan cerca de la inicialización, con normas pequeñas.

Si usamos distancia euclídea para encontrar tokens "parecidos":

  • Dos tokens de alta frecuencia que no comparten ninguna similitud significativa (the, a) estarán cerca porque ambos tienen norma grande y apuntan vagamente en la dirección central.
  • Un token de alta frecuencia y un token de baja frecuencia semánticamente parecido aparecerán lejos por el desajuste de normas.

El coseno factoriza la norma, por lo que mide dirección en el espacio de embeddings — que es lo que las embeddings entrenadas codifican de forma significativa.

Evidencia del lab

El lab 02 demostrará esto concretamente: para el verbo work, busca los 10 vecinos más cercanos bajo cada métrica e inspecciona:

  • Top-10 euclídeo: probablemente dominado por function words de alta frecuencia (the, ,, .).
  • Top-10 coseno: debería dar verbos en contextos similares (walk, talk, study).

Si no difieren, tu entrenamiento aún no ha inyectado dirección significativa en la geometría.

Cuándo la Euclídea es la elección correcta

La euclídea gana cuando tienes una representación de norma fija (p. ej., activaciones L2-normalizadas), donde el coseno es idéntico a (1 menos la mitad de) la distancia euclídea al cuadrado. En ese caso la euclídea es más barata de calcular y equivalente. Para embeddings crudas, el coseno es la opción por defecto.

PCA vs UMAP para visualización 2D

La matriz de embeddings entrenada es \(E \in \mathbb{R}^{V \times d}\) con \(d = 32\) en nuestro caso. No podemos plotearla directamente; necesitamos proyectar a \(d = 2\) (o \(d = 3\)) para inspección. Dos reductores comunes:

PCA — Análisis de Componentes Principales

Proyección lineal sobre las direcciones de varianza máxima. Matemáticamente limpio: resuelve un problema de autovalores sobre \(E^\top E\), toma los 2 autovectores principales. Pros:

  • Determinista; sin semilla aleatoria.
  • Lineal, por lo que la proyección es interpretable — puedes escribir la matriz de proyección.
  • Rápido.

Contras:

  • Lineal. Si la estructura significativa es no lineal (p. ej., la dirección "pasado" se curva a través de la variedad), PCA no puede recuperarla.
  • Maximizar varianza puede quedar dominado por el eje de "tokens más frecuentes", que es soso.

UMAP — Uniform Manifold Approximation and Projection

(McInnes et al. 2018.) Un método no lineal basado en construir un grafo difuso de vecinos más cercanos y optimizar un layout de baja dimensión que preserve la estructura del grafo. Pros:

  • Captura estructura no lineal.
  • Tiende a producir clusters visualmente convincentes que coinciden con la intuición humana sobre similitud.
  • Más rápido que t-SNE para datos de tamaño moderado.

Contras:

  • Estocástico — distintas semillas aleatorias dan distintos layouts.
  • Las distancias en UMAP no son significativas. No te fíes de "la embedding A está 2× más cerca de B que de C en el plot UMAP" — UMAP optimiza la estructura local de vecindad, no la distancia global.
  • Una caja negra — la usamos pero no la derivamos.

Qué usamos

Usamos UMAP para el scatter destacado (porque revela visualmente el clustering), y similitud coseno en el espacio original de \(d = 32\) para las afirmaciones cuantitativas (p. ej., "los 10 vecinos más cercanos de work son..."). Los dos métodos son complementarios: UMAP para ver, coseno para medir.

Qué se puede y qué no se puede leer en una proyección 2D

puedes leer:

  • Estructura de clusters. "Estos tokens forman una nube tupida, aquellos forman otra."
  • Separación categórica. "Todas las formas de pasado quedan en la mitad izquierda del plot."
  • Outliers. "Este token está lejos de todo lo demás — ¿qué pasa?"

No puedes leer:

  • Magnitudes de distancias pareadas. Las distancias 2D no son las distancias originales. Un token puede estar visualmente al lado de otro pero tener una similitud coseno baja en el espacio original.
  • Semántica de direcciones. Un eje 2D no corresponde necesariamente a una dirección significativa en el espacio original. El eje horizontal no es "tiempo"; tienes que comprobarlo.
  • Suavidad o continuidad. UMAP puede introducir o destruir continuidad local de maneras que no coinciden con la geometría subyacente.

Cuando presentes un plot UMAP, emparéjalo siempre con una afirmación cuantitativa verificada en el espacio original de embedding (p. ej., una tabla de similitud coseno).

Sondeo para una "dirección de tiempo verbal"

Un test más riguroso que "mira el UMAP": sondea si una dirección específica del espacio de embedding corresponde a un rasgo lingüístico. Procedimiento:

  1. Calcula el centroide de todas las formas de pasado: \(\mu_\text{past} = \frac{1}{N_\text{past}} \sum E[\text{past forms}]\).
  2. Calcula el centroide de todas las formas de futuro: \(\mu_\text{future} = \frac{1}{N_\text{future}} \sum E[\text{future forms}]\).
  3. La dirección \(v = \mu_\text{past} - \mu_\text{future}\) es el eje "pasado-vs-futuro" en el espacio de embedding.
  4. Proyecta cada token sobre \(v\): \(E[i] \cdot v / \|v\|\).
  5. Comprueba que los tokens de pasado obtienen proyecciones altas, los de futuro proyecciones bajas, y los infinitivos quedan en medio.

Si esto funciona, has encontrado una sonda lineal para el tiempo — un hecho estructural real e interpretable sobre tus embeddings. Si no funciona, la embedding aprendió otra cosa (p. ej., la identidad por verbo domina y el tiempo es subdominante).

Esta es una tarea del lab de la Fase 13 (lab 02, Tarea 4). El linear probing es la misma técnica usada en investigación de interpretabilidad a escala (p. ej., Geiger et al. 2024 sobre rasgos causales).

Qué NO cubre este archivo

  • t-SNE. Método no lineal más antiguo; en general parecido a UMAP pero más lento y más sensible a parámetros. Usamos UMAP.
  • Proyecciones a mayor dimensión (3D, 4D). Un plot 3D a veces es útil; nos quedamos con 2D por limpieza.
  • Espacios de embedding de otras modalidades (imagen, audio). Aplican los mismos principios; fuera de alcance.

Siguiente: ../lab/00-implement-embedding-module.md