Volver al archivo
#ai#llm#glossary#aigen

Atención por producto escalar escalado

El modelo tiene que combinar información de varios fragmentos de una frase. Uno es más útil y otro menos. Hace falta un método concreto para calcular sus contribuciones y después reunir la información en un único resultado.

Scaled Dot-Product Attention compara las descripciones numéricas query y key, convierte los resultados en pesos y mezcla los value correspondientes. Cada descripción es un vector, es decir, una lista de números. Query describe la necesidad actual de una posición, key sirve para establecer correspondencias y value contiene la información que puede transmitirse.

La comparación consiste en multiplicar los números correspondientes y sumar los productos. El resultado se divide por la raíz cuadrada de la longitud de la lista para que su escala no crezca demasiado con la dimensión. Softmax convierte los resultados en contribuciones no negativas que suman uno.

Si las contribuciones son del 25% y el 75%, y los números transmitidos son 2 y 6, obtenemos 0,25 × 2 + 0,75 × 6 = 5. Es una simplificación a un único número; los value reales son listas. Las contribuciones hablan de la mezcla de información, no de la probabilidad de que la respuesta sea correcta.

Mecanismo y detalles

Sin enmascaramiento ni dropout se expresa así:

Attention⁡(Q,K,V)=softmax⁡(QKTdk)V\operatorname{Attention}(Q,K,V)=\operatorname{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

QQ contiene las consultas, KK las claves y VV los valores. Los vectores ocupan las filas de las matrices; dkd_k es la dimensión de las consultas y las claves. Softmax actúa por separado para cada consulta sobre las claves disponibles. La matriz de sus resultados sirve para combinar los valores. Derivación e implementación: Dive into Deep Learning, §11.3.3.

Un pequeño ejemplo del resultado

Supongamos que softmax ha calculado los pesos 0,250{,}25 y 0,750{,}75, y los dos valores son [2;0][2;0] y [0;4][0;4]. El resultado es:

0,25[2;0]+0,75[0;4]=[0,5;3].0{,}25[2;0]+0{,}75[0;4]=[0{,}5;3].

Es un ejemplo de cálculo inventado. Los pesos distribuyen la contribución de los valores; no son probabilidades de que la respuesta del modelo sea correcta.

Dividir por dk\sqrt{d_k} contrarresta el aumento de la escala de los productos con la dimensión. Los valores demasiado grandes pueden saturar softmax y reducir sus gradientes. La justificación aparece en Attention Is All You Need, §3.2.1.

Esta operación no determina de dónde proceden los datos. En la autoatención, las consultas, claves y valores proceden de una sola secuencia; en la atención entre secuencias sus fuentes son distintas. La atención de múltiples cabezas realiza estos cálculos sobre varias proyecciones aprendidas.