El cálculo: para la entrada X, calcula Q = X·W_Q, K = X·W_K, V = X·W_V. Luego: Attention(Q,K,V) = softmax(Q·K^T / √d_k) · V. El softmax(Q·K^T) produce una matriz de atención N×N donde la entrada (i,j) representa cuánto atiende el token i al token j. La escala por √d_k evita que los productos punto crezcan demasiado en dimensiones altas, lo que empujaría al softmax a regiones saturadas con gradientes cercanos a cero.
En LLMs solo-decodificador (GPT, Claude, Llama), la auto-atención es causal: cada token solo puede atender a tokens anteriores (incluido él mismo). Esto se aplica mediante una máscara causal que establece las posiciones futuras a −∞ antes del softmax. En modelos codificadores (BERT), la auto-atención es bidireccional: cada token atiende a todos los demás tokens. La restricción causal es lo que hace posible la generación autoregresiva — el modelo no puede "espiar" tokens futuros.
La auto-atención calcula una matriz de atención N×N, haciéndola O(N²) tanto en tiempo como en memoria. Para un contexto de 128K tokens, eso son ~16 mil millones de entradas por capa por cabeza. Esta escala cuadrática es la limitación fundamental que impulsa la investigación en atención dispersa, atención lineal, Flash Attention (que reduce memoria pero no cómputo) y SSMs (que evitan la matriz N×N por completo). Cada enfoque para modelado de contexto largo es en última instancia sobre manejar este costo cuadrático.