Self-Attention es un mecanismo de atención que relaciona diferentes posiciones de una única secuencia para calcular una representación de esa misma secuencia. Permite al modelo ponderar la importancia de cada palabra (o token) en la secuencia de entrada con respecto a otras palabras en la misma secuencia, al generar una representación para una palabra específica. Esto se logra calculando tres vectores para cada token: Query (Q), Key (K) y Value (V). La puntuación de atención para un token dado se obtiene multiplicando su vector Q por los vectores K de todos los demás tokens (incluido él mismo), escalando el resultado y aplicando una función softmax para obtener pesos. Finalmente, estos pesos se multiplican por los vectores V correspondientes y se suman para producir la representación de salida para ese token. Este proceso permite al modelo capturar dependencias contextuales complejas y de largo alcance.
La implementación más prominente de Self-Attention se encuentra en la arquitectura Transformer, introducida en el paper "Attention Is All You Need". Los Transformers son la base de la mayoría de los modelos de lenguaje grandes (LLMs) actuales, como GPT-3, GPT-4 de OpenAI, BERT de Google, LLaMA de Meta y muchos otros modelos generativos y de comprensión del lenguaje natural. También se ha aplicado en visión por computadora con modelos como Vision Transformers (ViT) y en otras áreas como la generación de música y el descubrimiento de fármacos, donde la capacidad de modelar relaciones complejas dentro de una secuencia es crucial.
Para un arquitecto de sistemas, Self-Attention es fundamental por su impacto en la escalabilidad y el rendimiento de los modelos de IA. Permite el procesamiento paralelo de secuencias, a diferencia de las redes recurrentes (RNNs) que procesan secuencialmente, lo que es clave para entrenar modelos con miles de millones de parámetros en hardware moderno (GPUs, TPUs). Sin embargo, su complejidad computacional es cuadrática con la longitud de la secuencia (O(n^2)), lo que impone desafíos en el manejo de secuencias muy largas y requiere optimizaciones como "FlashAttention" o arquitecturas como "Longformer" o "Performer" para reducir la complejidad. Comprender este trade-off entre la capacidad de modelado contextual y los requisitos computacionales es vital al diseñar sistemas que integren LLMs, seleccionando la arquitectura adecuada y planificando la infraestructura de cómputo y memoria necesaria para el entrenamiento y la inferencia a escala.