Atención cruzada
Al traducir, el modelo tiene dos textos distintos: el original y la respuesta que está creando. Cuando añade la siguiente palabra de la traducción, necesita información del original. Mezclar solo la respuesta ya escrita no aporta el contenido fuente que falta.
Cross-attention permite a las posiciones de una secuencia leer información de otra. Query —una lista de números que define la necesidad de la posición actual— procede de la respuesta en construcción. Key sirve para establecer correspondencias con fragmentos de la fuente y value contiene la información que transmitirán.
Cada posición de la respuesta recibe su propia mezcla de información del original. Dos posiciones de respuesta y tres fragmentos fuente producen dos resultados, uno por posición que lee, no tres.
En Self-attention, todas esas descripciones proceden de la misma secuencia. «Cross» señala fuentes distintas, no necesariamente dos modelos independientes. Los pesos no tienen por qué ser una correspondencia literal y correcta palabra por palabra entre idiomas.
Mecanismo y detalles
En el Transformer original, las consultas procedían del decodificador, mientras que las claves y los valores procedían de la salida del codificador. El artículo llama a esta parte «encoder-decoder attention». Attention Is All You Need, §3.2.3.
Se obtiene un resultado para cada consulta
Supongamos que el decodificador aporta dos vectores de consulta y el codificador, tres pares de clave–valor. Cada consulta tiene entonces tres conexiones posibles con la fuente. Se obtienen dos vectores de resultado, uno para cada posición de consulta, no tres vectores correspondientes a la longitud de la entrada del codificador.
En traducción puede entenderse así: la representación de la parte de la respuesta que se está creando determina cómo combinar la información de la representación de la frase de origen. Es un ejemplo del flujo de información, no una garantía de que un peso individual de atención sea una correspondencia correcta entre palabras de dos idiomas.
La implementación de CrossAttention en TensorFlow pasa por separado la secuencia de consultas y el contexto de claves–valores. La propia operación no transmite información directamente entre posiciones de consulta; cada una lee el contexto.
La atención cruzada puede utilizar atención de múltiples cabezas. «Cross» indica las fuentes de las representaciones, y «multi-head», la existencia de varios conjuntos de proyecciones. Las dos secuencias no tienen por qué proceder de dos modelos entrenados de manera independiente: el codificador y el decodificador pueden ser partes de un mismo modelo.