🧮 Computational Mathematics

Inicio · Parte 16 — Matemática de Transformers, modelos generativos, grafos y RL

326 — Self-attention

experto clase 6 de 20 4 horas demostración self_attention

Sin máscara causal el modelo ve el futuro, entrena perfecto y genera basura.

Fórmulas

Q, K, V provienen todos de la misma secuencia
máscara causal: puntuación = −∞ para j > i
cada fila de la matriz de atención suma 1

Desarrollo

En self-attention, consultas, claves y valores se calculan todos a partir de la misma secuencia. Cada token puede atender a todos los demás y actualizar su representación con la información que le resulte relevante, en una sola operación y sin importar la distancia.

Esa es la ventaja decisiva sobre las RNN de la parte 15. En una recurrente, conectar el token 1 con el 100 requiere que la información atraviese 99 pasos, con el gradiente multiplicándose 99 veces. En self-attention hay un camino directo. El precio es el coste cuadrático en la longitud de la secuencia, que es el cuello de botella de los contextos largos.

Para generación autorregresiva hace falta la máscara causal: poner las puntuaciones de las posiciones futuras a menos infinito antes del softmax, de modo que sus pesos sean exactamente cero. La matriz de atención queda triangular inferior, y el primer token solo puede atenderse a sí mismo.

Olvidarla produce un fallo especialmente traicionero porque no da ningún error. El modelo entrena con métricas excelentes, porque para predecir el token siguiente puede simplemente mirarlo, y al generar —cuando el futuro no existe— produce basura. Es un error silencioso que solo se detecta al probar la generación.

Ejemplo trabajado

Atención bidireccional y causal sobre cuatro tokens.

tokens: ["el", "gato", "come", "pescado"]

matriz de atención bidireccional:
  [0,2982  0,2239  0,4516  0,0263]
  [0,3251  0,3369  0,2829  0,0550]
  [ ...                          ]
cada fila suma 1                                     ✓

matriz causal:
  [1,0000  0,0000  0,0000  0,0000]
  [0,4911  0,5089  0,0000  0,0000]
  [0,0051  0,0022  0,99xx  0,0000]
  [ ...                          ]

El token 0 solo se ve a sí mismo                     ✓
Triangular inferior: nadie ve el futuro.

Sin la máscara, predecir el token 2 podría hacerse
simplemente mirándolo.

Qué calcula el laboratorio

Self-attention completa sobre una secuencia de 4 tokens.

python classes/part-16-matematica-de-transformers-modelos-generativos-grafos-y-rl/326-self-attention/lab.py
compmath run 326

Salidas del laboratorio (10)

Muestra de la ejecución real

{
  "tokens": [
    "el",
    "gato",
    "come",
    "pescado"
  ],
  "d_model": 4,
  "matriz_de_atencion": [
    [
      0.2982,
      0.2239,
      0.4516,
      0.0263
    ],
    [
      0.3251,
      0.3369,
      0.2829,
      0.055
    ],
    [
      0.0051,
      0.0022,
      0.9926,
      0.0001
    ],
    [
      0.014,
      0.0202,
      0.0047,
      0.961
    ]
  ],
  "cada_fila_suma_1": [
    1.0,
    0.9999,
    1.0,
    0.9999
  ],
  "matriz_causal": [
    [
      1.0,
      0.0,
      0.0,
      0.0
    ],
    [
      0.4911,
      0.5089,
      0.0,
      0.0
    ],
    [
      0.0051,
      0.0022,
      0.9927,
      0.0
    ],
    [
      0.014,
      0.0202,
      0.0047,
      0.961
    ]
  ],
  "el_token_0_solo_se_ve_a_si_mismo": true
}

Errores comunes

Dónde se usa

GPT y todos los modelos de lenguaje generativos, BERT sin máscara, Vision Transformers y modelos de audio.

Idea rectora de la parte

La atención es un promedio ponderado por similitud, normalizado con softmax.

Error a evitar

Normalizar el Laplaciano de un grafo con nodos aislados sin tratar la división por cero.

Conexión con IA

Esta parte es la traducción matemática directa de los papers que definen el estado del arte actual.

Bibliografía de la clase

Archivos de la clase