🧮 Computational Mathematics

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

327 — Multi-head attention

experto clase 7 de 20 4 horas demostración multi_head_attention

Varias cabezas atienden a cosas distintas en subespacios distintos, al mismo coste.

Fórmulas

d_por_cabeza = d_model / n_cabezas
concatenar las salidas y proyectar con W_O
coste total similar al de una sola cabeza de dimensión completa

Desarrollo

Una sola cabeza de atención produce una única distribución de pesos por token, y eso obliga a comprometer: no puede atender a la vez a la concordancia sintáctica y a la relación semántica. Multi-head resuelve el conflicto ejecutando varias atenciones en paralelo sobre subespacios distintos.

La aritmética está diseñada para que no cueste más. Con d_model = 512 y 8 cabezas, cada una trabaja en dimensión 64, y el total de parámetros es aproximadamente el mismo que el de una única atención de dimensión 512. Se gana diversidad sin pagar capacidad.

Los patrones aprendidos son efectivamente distintos, y eso se puede comprobar inspeccionando las matrices. El análisis de modelos entrenados encuentra cabezas especializadas de forma reconocible: unas siguen dependencias sintácticas, otras enlazan referencias, otras miran sistemáticamente al token anterior. También encuentra que muchas cabezas son redundantes y se pueden podar sin pérdida apreciable.

La concatenación de las salidas se proyecta con una matriz W_O que mezcla la información de todas las cabezas. Sin ese paso final, las cabezas quedarían en subespacios estancos y no podrían combinarse.

Ejemplo trabajado

Cuatro cabezas sobre un modelo de dimensión 8.

d_model = 8      cabezas = 4      d por cabeza = 2

patrones de atención (primera fila de cada cabeza):
  cabeza 1: [0,1657  0,7332  0,1010]
  cabeza 2: [0,0010  0,9989  0,0000]
  cabeza 3: [0,0423  0,0099  0,9478]
  cabeza 4: [ ... ]

Las cabezas atienden a posiciones distintas          ✓
La cabeza 2 está muy concentrada; la 1, repartida.

parámetros totales: 256
Una sola cabeza de dimensión 8 costaría lo mismo.

Qué calcula el laboratorio

Multi-head: varias atenciones en subespacios distintos.

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

Salidas del laboratorio (10)

Muestra de la ejecución real

{
  "d_model": 8,
  "cabezas": 4,
  "d_por_cabeza": 2,
  "patrones_de_atencion_por_cabeza": [
    [
      [
        0.1657,
        0.7332,
        0.101
      ],
      [
        0.001,
        0.9989,
        0.0
      ],
      [
        0.0423,
        0.0099,
        0.9478
      ]
    ],
    [
      [
        0.5993,
        0.2437,
        0.1571
      ],
      [
        0.2744,
        0.4876,
        0.238
      ],
      [
        0.2131,
        0.2868,
        0.5001
      ]
    ],
    [
      [
        0.4529,
        0.2305,
        0.3166
      ],
      [
        0.0413,
        0.6273,
        0.3314
      ],
      [
        0.0718,
        0.4191,
        0.5091
      ]
    ],
    [
      [
        0.7248,
        0.1099,
        0.1653
      ],
      [
        0.0387,
        0.6013,
        0.36
      ],
      [
        0.0847,
        0.5234,
        0.3919
      ]
    ]
  ],
  "las_cabezas_atienden_distinto": true,
  "parametros_totales": 256
}

Errores comunes

Dónde se usa

Todos los Transformers, interpretabilidad mecanicista, poda de cabezas redundantes y diseño de arquitecturas eficientes.

Idea rectora de la parte

La escala 1/√d evita que el producto punto sature la softmax en alta dimensión.

Error a evitar

Olvidar la máscara causal en el modelado autoregresivo.

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