Tema

Atención sobre secuencias

La atención calcula para cada posición una media ponderada de los valores de todas las posiciones, con pesos que salen de comparar la consulta de esa posición con las claves de las demás.

Nombre en inglés

Attention over sequences

Intuición

Conviene imaginar una consulta de biblioteca, donde cada token pregunta algo, cada token ofrece una clave que dice de qué trata y la respuesta es la mezcla de los contenidos cuyas claves encajan mejor. La división entre la raíz de la dimensión evita que los productos punto crezcan tanto que la función softmax se sature y todos los pesos se vayan a cero o a uno.

Fórmula

Atencion(Q, K, V) = softmax(Q K^T / sqrt(d_k)) V

Ejemplo resuelto

Sea una consulta que produce las puntuaciones 2.0, 1.0 y 0.0 frente a tres claves, con d_k = 4 y por tanto una división entre 2. Las puntuaciones escaladas quedan en 1.0, 0.5 y 0.0, cuyas exponenciales valen 2.718, 1.649 y 1.0, con suma 5.367. Los pesos resultan 0.506, 0.307 y 0.186, de modo que la salida es 0.506 por el primer valor más 0.307 por el segundo más 0.186 por el tercero. Sin la división los pesos habrían sido 0.665, 0.245 y 0.090, bastante más concentrados.

Errores frecuentes

Ejercicio

Una capa de atención trabaja con d_k = 64 y obtiene los productos punto sin escalar 16 y 8. ¿Qué puntuaciones entran a la función softmax y cuánto vale el peso mayor?

Ver la solución

La raíz de 64 vale 8, de modo que las puntuaciones escaladas son 16 / 8 = 2 y 8 / 8 = 1. La función softmax sobre 2 y 1 da exp(2) = 7.389 y exp(1) = 2.718, cuya suma es 10.107, y el peso mayor vale 7.389 / 10.107 = 0.731. Sin escalar, la misma pareja 16 y 8 habría dado un peso de 0.9997, es decir una distribución casi degenerada y con gradiente nulo.

Respuesta: 0.731

Temas relacionados

Cursos a los que prepara

Abrir el tema en la guía