De vectores a embeddings: la geometría que hay detrás de la similitud

Construye una comprensión intuitiva de los vectores, los productos escalares, la similitud coseno y por qué los embeddings convierten el significado en geometría.

Comparte este artículo

Un embedding representa un objeto—una palabra, una imagen, un usuario o un documento—como una lista de números. Esa lista es un vector:

x=[x1,x2,,xn].\mathbf{x} = [x_1, x_2, \ldots, x_n].

Las coordenadas individuales rara vez tienen una etiqueta humana sencilla. Lo importante es la geometría que crean muchos vectores juntos.

Empieza por la dirección

Supón que dos vectores apuntan casi en la misma dirección. Sus coordenadas pueden tener magnitudes distintas, pero aun así expresan un patrón parecido. La similitud coseno mide esa coincidencia direccional:

cos(x,y)=xyx2y2.\operatorname{cos}(\mathbf{x}, \mathbf{y}) = \frac{\mathbf{x} \cdot \mathbf{y}} {\lVert \mathbf{x} \rVert_2\,\lVert \mathbf{y} \rVert_2}.

El numerador es el producto escalar. El denominador elimina el efecto de la longitud.

Un pequeño ejemplo resuelto

Sean x=[1,2]\mathbf{x} = [1, 2] y y=[2,4]\mathbf{y} = [2, 4]. Como y=2x\mathbf{y} = 2\mathbf{x}, los vectores apuntan exactamente en la misma dirección y su similitud coseno es 11.

function dot(left, right) {
  return left.reduce((sum, value, index) => sum + value * right[index], 0);
}

El código refleja la definición matemática xy=ixiyi\mathbf{x}\cdot\mathbf{y}=\sum_i x_i y_i.

Por qué son útiles los embeddings

El entrenamiento organiza los vectores para que las relaciones útiles se conviertan en relaciones geométricas. Así, un sistema de búsqueda puede recuperar documentos cercanos; un sistema de recomendación puede comparar usuarios con elementos; y un clasificador puede trazar límites entre regiones.

La idea importante es sencilla: un embedding es útil cuando la distancia o la dirección conserva una relación que nos importa.