Tema
Atención sobre secuencias
- Lenguaje natural y modelos de lenguaje
- Nivel intermedio
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
- Olvidar la máscara causal al entrenar un modelo que genera de izquierda a derecha, fallo que deja ver el futuro y produce una pérdida de entrenamiento excelente junto a una generación inservible.
- Suponer que un peso de atención alto explica la decisión del modelo, cuando la atención reparte información y no equivale a una atribución causal.
- Ignorar que el costo crece con el cuadrado de la longitud, de modo que doblar el contexto multiplica por 4 el tiempo y la memoria de la matriz de pesos.
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