La atención cruzada es un mecanismo en el aprendizaje automático y el aprendizaje profundo que calcula pesos de atención entre elementos de dos secuencias distintas, típicamente una fuente y un objetivo. Es un componente central de la arquitectura Transformer, donde permite que el decodificador se centre en partes relevantes de la salida del codificador al generar cada token. A diferencia de la autoatención, que relaciona posiciones dentro de una única secuencia, la atención cruzada relaciona posiciones entre secuencias, lo que la hace esencial para tareas como la traducción automática, el resumen de texto y la generación de descripciones de imágenes.
El concepto surgió de mecanismos de atención anteriores desarrollados para redes neuronales recurrentes (RNN), que sufrían dificultades para retener información de partes distantes de una secuencia. La atención, inspirada en el enfoque visual y cognitivo humano, permitió que los modelos ponderaran directamente la importancia de cada elemento de entrada. El avance llegó con la introducción del Transformer en 2017, que reemplazó la recurrencia con atención paralelizable, y la atención cruzada se convirtió en un ingrediente clave en modelos codificador-decodificador como BERT, T5 y transformadores generativos preentrenados (GPT).
Historia
Las raíces de la atención cruzada se remontan a principios de la década de 1990, cuando los programadores de pesos rápidos, o controladores de pesos rápidos, propusieron un mecanismo donde una red neuronal "lenta" genera los pesos "rápidos" de otra red mediante productos externos. Esta idea, más tarde renombrada como autoatención linealizada, sentó las bases conceptuales. En 2014, se introdujo la atención de estilo Bahdanau (atención aditiva) para la traducción automática basada en RNN, permitiendo que el decodificador se alineara con los estados ocultos del codificador. La atención de estilo Luong (atención multiplicativa) siguió en 2015, ofreciendo una función de puntuación más eficiente.
El gran avance llegó con la autoatención, donde cada elemento en una secuencia atiende a todos los demás, permitiendo la captura de dependencias globales. Esta idea fue central en la arquitectura Transformer, introducida en el artículo de 2017 "Attention Is All You Need" por investigadores de Google y la Universidad de Toronto. El Transformer reemplazó la recurrencia con mecanismos de atención, y la atención cruzada se convirtió en un componente estándar en modelos codificador-decodificador, formando la base para modelos como BERT, T5 y GPT.
Mecanismo
En un Transformer codificador-decodificador típico, el codificador procesa la secuencia fuente (por ejemplo, una oración en inglés) y produce un conjunto de representaciones ocultas. El decodificador genera la secuencia objetivo (por ejemplo, en francés) un token a la vez. En cada paso de decodificación, el decodificador utiliza la atención cruzada para calcular una suma ponderada de las salidas del codificador, donde los pesos reflejan la relevancia de cada token fuente para el token objetivo actual.
La operación de atención cruzada involucra tres matrices: consultas (Q) derivadas de la salida anterior del decodificador, claves (K) y valores (V) derivadas de la salida del codificador. Los pesos de atención se calculan como el softmax de los productos punto escalados entre Q y K, que luego se usan para ponderar V. Esto permite que el decodificador se enfoque selectivamente en información fuente relevante, similar a cómo un traductor humano podría mirar palabras específicas en la oración fuente.
Interpretación de los Pesos de Atención
Los pesos de atención cruzada pueden visualizarse como una matriz de alineación, mostrando qué tokens fuente son más influyentes para cada token objetivo. En la traducción, la alineación es el proceso de emparejar palabras de la oración fuente con la oración traducida. Las redes que realizan traducción literal sin considerar el orden de las palabras mostrarían las puntuaciones más altas a lo largo de la diagonal de la matriz. El dominio fuera de la diagonal indica una alineación más matizada.
Por ejemplo, al traducir "I love you" al francés: en la primera pasada del decodificador, el 94% del peso de atención está en "I", produciendo "je"; en la segunda pasada, el 88% en "you", produciendo "t'"; en la tercera pasada, el 95% en "love", produciendo "aime". Esto produce una matriz de alineación donde "love" se alinea con "aime". A veces la alineación es de muchos a muchos, como "look it up" correspondiente a "cherchez-le". Los pesos de atención suaves, que distribuyen el peso entre múltiples tokens, funcionan mejor que la atención dura (establecer un peso en 1 y los demás en 0), porque una suma ponderada de vectores ocultos a menudo proporciona un contexto más rico que seleccionar un único vector óptimo.
Variantes
La atención cruzada tiene varias variantes, que difieren en cómo se calculan las puntuaciones de atención:
- Atención aditiva (estilo Bahdanau): Utiliza una red de avance para calcular puntuaciones de alineación.
- Atención multiplicativa (estilo Luong): Utiliza productos punto entre vectores de consulta y clave.
- Atención posicional: Incorpora codificaciones posicionales para tener en cuenta el orden de los tokens.
- Atención posicional factorizada: Reduce la complejidad factorizando la atención a través de dimensiones.
Para redes neuronales convolucionales, los mecanismos de atención pueden operar en dimensiones espaciales (atención espacial), dimensiones de canal (atención de canal) o combinaciones. Estas variantes recombinan las entradas del lado del codificador para redistribuir efectos a cada salida objetivo, a menudo usando una matriz de estilo de correlación de productos punto para re-ponderación.
Optimizaciones
Atención Flash
El tamaño de la matriz de atención crece cuadráticamente con el número de tokens de entrada, requiriendo memoria GPU significativa para secuencias largas. La atención flash, introducida en 2022, reduce las necesidades de memoria y aumenta la eficiencia sin sacrificar precisión. Particiona el cálculo de atención en bloques más pequeños que caben en la memoria en chip más rápida de la GPU, reduciendo la necesidad de almacenar grandes matrices intermedias y disminuyendo el uso de memoria mientras mejora la eficiencia computacional.
FlexAttention
FlexAttention es un kernel de atención desarrollado por Meta que permite a los usuarios modificar las puntuaciones de atención antes del softmax y elige dinámicamente el algoritmo de atención óptimo. Esta flexibilidad permite patrones de atención personalizados, como dispersión o enmascaramiento, sin sacrificar el rendimiento.
Aplicaciones
La atención cruzada se usa ampliamente en el procesamiento del lenguaje natural, la visión por computadora y el reconocimiento de voz. En PLN, mejora la comprensión del contexto en tareas como respuesta a preguntas y resumen. En visión, la atención visual ayuda a los modelos a enfocarse en regiones de imagen relevantes, mejorando la detección de objetos y la generación de descripciones de imágenes. En el reconocimiento de voz, la atención cruzada alinea características acústicas con la salida de texto.
Mapas de Atención como Explicaciones para Transformadores de Visión
Desde el artículo original del transformador de visión (ViT), visualizar las puntuaciones de atención como mapas de calor (mapas de prominencia o mapas de atención) se ha convertido en una forma rutinaria de inspeccionar el proceso de toma de decisiones de los modelos ViT. Se pueden calcular mapas de atención para cualquier cabeza de atención en cualquier capa, con capas más profundas mostrando visualizaciones más semánticamente significativas. El despliegue de atención es un algoritmo recursivo que combina puntuaciones de atención a través de todas las capas calculando el producto punto de mapas de atención sucesivos.
Debido a que los transformadores de visión se entrenan típicamente de manera autosupervisada, los mapas de atención generalmente no son sensibles a la clase. Cuando se adjunta una cabeza de clasificación al backbone ViT, los mapas de atención discriminativos de clase (CDAM) combinan mapas de atención y gradientes con respecto al token de clase. Algunos métodos de interpretabilidad sensibles a la clase desarrollados originalmente para redes neuronales convolucionales pueden adaptarse a los ViT, proporcionando información sobre qué regiones de imagen influyen en las predicciones.