Curso de Matemáticas para IA · Lección 41 de 180
Los productos internos miden la alineación en la atención
Calcula un producto escalar, interpreta geométricamente su signo y magnitud, y observa cómo las puntuaciones consulta-clave se convierten en pesos de atención.
Cuando un Transformer compara la consulta de un token con la clave de otro, el cálculo es un producto escalar. Ese único número ayuda a decidir cuánta información se recoge del valor asociado a la clave. Para vectores reales, el signo puede indicar si, en términos generales, apuntan hacia el mismo lado o en direcciones opuestas, mientras que la magnitud también depende de sus longitudes. Separar esos dos efectos facilita la interpretación de las puntuaciones de atención.
Al terminar, podrás calcular un producto interno, interpretar su signo y magnitud en la geometría euclidiana habitual y seguir una puntuación consulta-clave a través del escalado y de softmax.
Objetivo de aprendizaje: Calcular un producto interno y relacionar su signo y magnitud con la alineación.
Esta lección se apoya en las sumas ponderadas de vectores de la Lección 017. La sección 3.2 de Mathematics for Machine Learning presenta los productos internos como una herramienta para razonar sobre longitud, ángulo y ortogonalidad. Los ejemplos numéricos, el recorrido por la atención, la visualización y las evaluaciones de este artículo son originales.
Multiplica las coordenadas correspondientes para medir la alineación
Para dos vectores reales con el mismo número de coordenadas, e , su producto escalar se define como
Empareja las primeras coordenadas y multiplícalas; después suma los productos de cada par de coordenadas. El resultado es un escalar. El producto escalar es un tipo de producto interno; en términos más generales, un producto interno es una regla de valor real para pares de vectores, lineal en cada argumento, simétrica y positiva cuando un vector no nulo se combina consigo mismo. Aquí usamos el producto escalar estándar en .
Para un cálculo concreto, toma y . Entonces
La puntuación positiva concuerda con la imagen: los vectores apuntan hacia la misma mitad del plano. Sus longitudes euclidianas son ambas . Como los dos vectores son no nulos y estamos en la geometría euclidiana real ordinaria, el ángulo entre ellos satisface
Por tanto, el producto escalar no compara únicamente las direcciones. Combina la dirección con las longitudes de ambos vectores. El valor del coseno, , aísla la alineación direccional al eliminar esas longitudes; esa cantidad normalizada se llama similitud del coseno y se estudiará en una lección posterior.
- Vector de consulta: q = (2, 1)
- Dirección de la clave: k = (1, 2)
- Vector proyectado: projₖ(q)
- Componente perpendicular restante: q − projₖ(q)
q · k = 2(1) + 1(2) = 4
projₖ(q) = (4/5)k = (0.8, 1.6)
Proyección escalar con signo: 4/√5 ≈ 1.79
Una proyección muestra qué parte apunta a lo largo de otro vector
Proyectar sobre la dirección de un vector no nulo plantea esta pregunta: ¿cuánto de queda a lo largo de ? Su longitud escalar con signo es
Se conserva el signo: un resultado negativo indica que el componente apunta en sentido contrario a . En nuestro ejemplo, . El vector proyectado es esa longitud escalar multiplicada por el vector unitario en la dirección de :
El vector restante es . Comprueba que es perpendicular a :
Esta descomposición explica la geometría: el producto escalar mide la cantidad con signo a lo largo de después de tener en cuenta la longitud del propio , mientras que el componente perpendicular no contribuye a ese producto.
Para vectores reales no nulos en coordenadas euclidianas estándar, un producto interno positivo indica un ángulo menor que , uno nulo indica vectores perpendiculares y uno negativo indica un ángulo mayor que . El vector cero es un caso límite: su producto escalar con cualquier vector es cero, pero no tiene dirección y, por tanto, no se puede interpretar un ángulo. En términos más generales, estas afirmaciones sobre los ángulos presuponen el producto interno euclidiano real habitual. Otro producto interno puede definir una geometría distinta.
La atención usa la puntuación antes de convertirla en un peso
En la atención, una consulta describe qué busca una posición y cada clave describe con qué puede coincidir otra posición. Una proyección aprendida produce estos vectores de consulta y clave a partir de las representaciones de los tokens. El artículo original sobre Transformers describe su compatibilidad mediante un producto escalar y después divide cada puntuación por , donde es el número de coordenadas de cada consulta y clave. Una función softmax aplicada a las claves permitidas convierte las puntuaciones escaladas en pesos para los vectores valor correspondientes (Vaswani y otros, Attention Is All You Need).
Para una consulta y una matriz de claves , las puntuaciones escaladas son . Si hay una sola consulta, cada elemento es una puntuación consulta-clave. Con varias consultas, el producto matricial calcula muchas puntuaciones de este tipo a la vez. Después se aplica softmax sobre las posiciones de las claves para cada consulta, y esos pesos forman una suma ponderada de los valores.
Prueba un ejemplo pequeño con , y . Ambas claves tienen dimensión :
Los productos escalares y son puntuaciones de compatibilidad sin escalar. Después del escalado, y son logits. Los valores y son pesos de softmax; sin dropout, suman uno sobre las dos claves no enmascaradas. Son tres cantidades relacionadas, pero distintas. Para esta consulta, los pesos forman una distribución normalizada, pero no son probabilidades calibradas de que cada clave sea relevante desde el punto de vista semántico. PyTorch scaled_dot_product_attention sigue esta secuencia: multiplica las consultas por las claves transpuestas, aplica la escala, añade cualquier máscara, aplica softmax y, por último, multiplica los pesos por los valores. La escala predeterminada es .
La escala no es una normalización por coseno. Divide por un factor que depende de la dimensión, no por las longitudes individuales de la consulta y la clave. El artículo sobre Transformers justifica este escalado observando que, bajo el supuesto indicado de coordenadas de consulta y clave independientes, de media cero y varianza unitaria, el producto escalar sin escalar tiene varianza . Dividir por evita que, bajo ese supuesto, la dispersión de las puntuaciones crezca con la dimensión. No obliga a que cada consulta y clave tenga longitud uno ni convierte las puntuaciones en similitudes del coseno.
Separa el tamaño de la puntuación de la alineación direccional
Un producto escalar positivo grande puede deberse a una alineación estrecha, a vectores largos o a ambas cosas. Por ejemplo, tiene una similitud del coseno de , mientras que tiene una similitud del coseno de . La misma puntuación bruta no implica el mismo ángulo. Del mismo modo, multiplicar un vector por un escalar positivo aumenta el producto escalar sin cambiar su dirección; multiplicarlo por invierte el signo y su dirección.
En una cabeza de atención, las longitudes de la consulta y la clave se aprenden como parte de las representaciones del modelo. La puntuación se usa como logit de compatibilidad y softmax la compara con las demás puntuaciones disponibles para esa consulta. No es una probabilidad aislada ni una medida universal de similitud semántica. Si un sistema normaliza cada vector no nulo a longitud unitaria, la puntuación pasa a ser la similitud del coseno y se eliminan las magnitudes individuales de los vectores. Esto puede resultar útil para tareas como comparar embeddings de documentos, pero es una operación distinta de la atención estándar por producto escalar escalado descrita arriba.
Puedes verificar la aritmética con NumPy:
import numpy as np
q = np.array([2.0, 1.0])
k = np.array([1.0, 2.0])
dot = np.dot(q, k)
scalar_projection = dot / np.linalg.norm(k)
vector_projection = dot / np.dot(k, k) * k
cosine_similarity = dot / (np.linalg.norm(q) * np.linalg.norm(k))
print(dot) # 4.0
print(scalar_projection) # 1.7888543819998317
print(vector_projection) # [0.8 1.6]
print(cosine_similarity) # 0.8
Ahora podemos interpretar la misma multiplicación en dos contextos: como una medida geométrica de alineación con signo y como la puntuación de compatibilidad que compara una consulta con las claves. El siguiente paso consiste en interpretar un producto escalar como una puntuación ponderada por características, donde cada coordenada aporta su propia cantidad con signo.
Comprueba lo que has entendido
Question 1
Show the step-by-step solution
Calcula . ¿Qué indica su signo sobre el ángulo entre estos vectores no nulos en el espacio euclidiano real estándar?
Primero multiplica las coordenadas correspondientes y súmalas:
El producto escalar es negativo. Para dos vectores reales no nulos con el producto interno euclidiano estándar, un producto negativo indica que el ángulo es mayor que . No determina el ángulo exacto sin tener en cuenta también las longitudes.
Question 2
Show the step-by-step solution
Para y , calcula y el coseno del ángulo entre ellos.
El producto es
Ambas longitudes son , así que la fórmula euclidiana del ángulo da
El producto escalar es ; la similitud del coseno es . No son la misma cantidad.
Question 3
Show the step-by-step solution
Proyecta sobre . Halla tanto la longitud escalar con signo como el vector proyectado.
Primero, y . La proyección escalar con signo es
Para el vector proyectado, divide el producto escalar por y multiplícalo por :
Question 4
Show the step-by-step solution
Dos vectores reales no nulos tienen producto escalar estándar igual a cero. ¿Qué puedes concluir y qué precaución adicional hace falta si uno de los vectores es cero?
Para vectores no nulos en el espacio euclidiano, . Como ambas longitudes son positivas, un producto nulo obliga a que , así que los vectores son perpendiculares. Si uno de los vectores es cero, el producto también es cero, pero el vector cero no tiene dirección ni forma un ángulo con el otro vector.
Question 5
Show the step-by-step solution
Tanto como valen . ¿Por qué esos productos iguales no implican la misma alineación direccional?
El primer par apunta exactamente en la misma dirección, por lo que su similitud del coseno es . En el segundo par, ambas longitudes son , así que la similitud del coseno es . Los productos de ambos pares dan casualmente , pero las longitudes de los vectores difieren entre los pares. El producto escalar bruto combina longitud y dirección, por lo que no permite identificar el ángulo por sí solo.
Question 6
Show the step-by-step solution
Para , y , calcula las puntuaciones brutas, los logits escalados y los pesos de softmax cuando . ¿Qué clave obtiene el peso mayor?
Los productos escalares son y . Al dividirlos por , obtenemos logits de aproximadamente y . Softmax produce
La clave recibe el peso mayor. Los pesos de softmax suman uno sobre estas dos posiciones no enmascaradas, mientras que los productos escalares y los logits escalados son puntuaciones, no probabilidades.
Question 7
Show the step-by-step solution
Supón que una consulta de atención es el vector cero y que hay dos claves no enmascaradas. Con el cálculo habitual de softmax y el dropout desactivado, ¿qué pesos se obtienen? ¿Está definido el ángulo entre la consulta y cada clave?
La consulta cero tiene producto escalar cero con cada clave. El escalado mantiene ambos logits en cero, y
Por tanto, ambas claves reciben el mismo peso. El ángulo no está definido porque la consulta cero no tiene dirección. Aquí, que las puntuaciones sean iguales no significa que la consulta esté geométricamente alineada con ninguna de las claves.
Question 8
Show the step-by-step solution
Una implementación sustituye cada producto escalar consulta-clave por la similitud del coseno antes de aplicar softmax. ¿Qué cambia para y y por qué no equivale al escalado estándar de atención?
El producto escalar bruto es . Ambas longitudes son , por lo que la similitud del coseno es . La normalización por coseno divide por la longitud de cada vector y elimina su magnitud de la puntuación. En cambio, la atención estándar por producto escalar escalado divide por , un factor compartido por todos los vectores de esa dimensión de cabeza. Mantiene los efectos de la magnitud en los logits y no es una similitud del coseno.