Attention Is All You Need: análisis técnico del paper que cambió el NLP

Lectura: 15 min

En 2017, Vaswani et al. propusieron un encoder-decoder construido únicamente sobre self-attention multi-cabeza, sin recurrencia ni convoluciones. El resultado fue el Transformer: la base técnica de BERT, T5, GPT-3, ViT y prácticamente todo el NLP moderno.

Este análisis cubre la arquitectura, los resultados reales del paper, los estudios de ablación, las implementaciones disponibles y las implicaciones para sistemas de búsqueda y contenido generativo.


El paper y las cifras que importan leer bien

Existe una discrepancia documentada entre la página de resumen de NeurIPS y el PDF completo del paper. La abstract page cita 27.5 BLEU / 41.1 BLEU y un modelo de 165M parámetros. El PDF final y la ficha oficial de Google Research reportan 28.4 BLEU / 41.0 BLEU, con configuraciones base de 65M y big de 213M parámetros.

Este análisis toma como referencia autoritativa el PDF completo y la ficha oficial, que son las fuentes que contienen las tablas de ablación y la configuración definitiva del modelo.

Dato metodológico clave

El paper no entrega una auditoría exacta de FLOPs medida con profiler. Estima el coste de entrenamiento multiplicando tiempo, número de GPUs y una estimación de la capacidad sostenida de cada GPU. Útil para comparación relativa entre trabajos; no debe tratarse como medición exacta de consumo real.

Arquitectura del Transformer: componentes y ecuaciones

El paper propone un encoder-decoder clásico construido con bloques homogéneos. El encoder usa una pila de 6 capas; cada capa contiene multi-head self-attention y una feed-forward network por posición. El decoder añade una tercera subcapa de atención encoder-decoder y enmascara la self-attention para preservar la propiedad autoregresiva.

El modelo base trabaja con d_model = 512, 8 cabezas y d_ff = 2048. El modelo grande opera con d_model = 1024, 16 cabezas y d_ff = 4096. Ambos usan conexiones residuales y normalización de capa alrededor de cada subcapa.

Ecuaciones nucleares

Attention(Q, K, V) = softmax( QKᵀ / √d_k ) · V

MultiHead(Q, K, V) = Concat(head₁, …, headₕ) · Wᴼ

head_i = Attention(Q·Wᵢᴼ, K·Wᵢᴷ, V·Wᵢᵛ)

FFN(x) = max(0, x·W₁ + b₁) · W₂ + b₂

PE(pos, 2i) = sin(pos / 10000^(2i/d_model))

PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))

Por qué funcionan estos componentes

El término √d_k estabiliza el dot-product attention cuando la dimensión de claves crece. La multi-cabeza permite atender a subespacios distintos en paralelo. La FFN introduce capacidad no lineal por token. La codificación posicional sinusoidal inyecta orden sin recurrir a recurrencia.

Una capa de self-attention tiene complejidad por capa O(n²·d), pero solo O(1) operaciones secuenciales y longitud máxima de camino O(1) entre posiciones. Las redes recurrentes requieren O(n) operaciones secuenciales y caminos más largos para dependencias lejanas.

Árbol genealógico de influencia del Transformer
Attention Is All You Need (2017)
BERT (2018)
Search understanding (2019+)
Attention Is All You Need (2017)
T5 (2019)
MUM / Search (2021)
Attention Is All You Need (2017)
GPT-3 (2020)
InstructGPT → Agentes (2022+)

Datos, entrenamiento y coste computacional

Para En→De, el paper usa WMT14 con unas 4.5M parejas de frases y BPE compartido de ~37k tokens. Para En→Fr, usa 36M frases con un vocabulario de 32k word-pieces. Cada batch contiene aproximadamente 25k tokens de origen y 25k de destino.

El entrenamiento se realizó en 8 NVIDIA P100: el modelo base durante 100k pasos / 12 horas, y el grande durante 300k pasos / 3.5 días. El optimizador es Adam con β₁=0.9, β₂=0.98, ε=10⁻⁹, con learning-rate schedule de inversa de raíz cuadrada y 4000 warmup steps.

Configuración completa de los modelos base y big (Fuente: tablas 3 y sección de entrenamiento del paper)
Parámetro Transformer base Transformer big
Capas encoder / decoder 6 / 6 6 / 6
d_model 512 1024
d_ff 2048 4096
Cabezas de atención 8 16
Dropout 0.1 0.3
Pasos de entrenamiento 100k 300k
Parámetros 65M 213M
Tiempo en 8×P100 12 h 3.5 días

La regularización combina dropout, label smoothing = 0.1 y checkpoint averaging. En inferencia se usa beam size 4 y length penalty α = 0.6.

Resultados: qué dice y qué no dice el paper

En En→De, el Transformer-big supera a todos los modelos previos, incluidos los ensembles, con 28.4 BLEU. En En→Fr, el paper reporta 41.0 BLEU, que supera a los mejores modelos individuales, pero no al mejor ensemble previo (ConvS2S Ensemble, 41.29). En parsing inglés sobre WSJ, llega a 92.7 F1 en ajuste semisupervisado.

Resultados principales del paper con su lectura correcta
Tarea Resultado Lectura correcta
WMT14 En→De 28.4 BLEU Nuevo mejor resultado, incluyendo ensembles previos
WMT14 En→Fr 41.0 BLEU Mejor single model; no supera el mejor ensemble (41.29)
Parsing WSJ (semisupervisado) 92.7 F1 Evidencia de generalización fuera de traducción
Trampa de reproducibilidad

Comparar BLEU históricos requiere cautela: diferencias de tokenización y normalización pueden mover el score hasta 1.8 puntos (Matt Post, 2018). Si replicas, fija antes de nada el dataset fingerprint, tokenizador, vocabulario, esquema de decode y métrica. Usa SacreBLEU con protocolo explícito.

Ablaciones y reproducibilidad: lo más útil del paper

El estudio de variaciones sobre En→De dev (newstest2013) es la parte más valiosa del paper para lectura técnica moderna. Una sola cabeza cae a 24.9 BLEU frente a 25.8 de la configuración base. Demasiadas cabezas también perjudica: con 32 cabezas el resultado baja a 25.4.

Resultados de ablación sobre newstest2013 (Fuente: tabla 3 del paper)
Variación respecto al modelo base BLEU dev
1 cabeza de atención 24.9
4 cabezas 25.5
8 cabezas (base) 25.8
16 cabezas 25.8
32 cabezas 25.4
Posiciones aprendidas en vez de sinusoidales 25.7
Modelo más grande 26.2

La lectura práctica es clara: el diseño base tenía redundancia y márgenes de ajuste desde el principio. Trabajos posteriores confirmaron que gran parte de las cabezas pueden podarse con impacto mínimo, y que la eficiencia o la extrapolación longitudinal requerían mecanismos adicionales.

Recursos de reproducción recomendados

The Annotated Transformer (Harvard NLP) plantea el paper como un ejercicio explícito de replicación, con implementación legible que sigue de cerca el original. Training Tips for the Transformer Model muestra que variables como batch size, learning rate, warmup steps y checkpoint averaging afectan directamente a calidad final y estabilidad del entrenamiento.

Implementaciones disponibles y su estado real

Estado práctico de las principales implementaciones del Transformer (abril 2026)
Implementación Estado Uso recomendado
Tensor2Tensor Deprecated y archivado Arqueología técnica, reproducción histórica
The Annotated Transformer Activo (pedagógico) Entender el paper, depurar conceptos
torch.nn.Transformer Activo (referencia) Baselines, docencia, prototipos
Hugging Face Transformers Activo (ecosistema moderno) Fine-tuning y despliegues con modelos preentrenados
fairseq Archivado (2026) Reproducir recetas históricas de MT
OpenNMT-py Sin soporte activo Mantener pipelines heredados
CTranslate2 Activo (producción) Inferencia optimizada, baja latencia, cuantización

Código de referencia en PyTorch

Este ejemplo usa los defaults del paper base y la API de referencia de PyTorch. Para que sea entrenable faltan el tokenizador, el dataloader, la pérdida con label smoothing y el bucle de entrenamiento.

import math
import torch
from torch import nn

class PositionalEncoding(nn.Module):
    def __init__(self, d_model: int, max_len: int = 4096):
        super().__init__()
        pe = torch.zeros(max_len, d_model)
        pos = torch.arange(0, max_len, dtype=torch.float32).unsqueeze(1)
        div = torch.exp(torch.arange(0, d_model, 2, dtype=torch.float32)
                        * (-math.log(10000.0) / d_model))
        pe[:, 0::2] = torch.sin(pos * div)
        pe[:, 1::2] = torch.cos(pos * div)
        self.register_buffer("pe", pe.unsqueeze(0))  # [1, L, D]

    def forward(self, x: torch.Tensor) -> torch.Tensor:
        return x + self.pe[:, :x.size(1)]

class MiniTransformer(nn.Module):
    def __init__(self, vocab_src: int, vocab_tgt: int, pad_id: int):
        super().__init__()
        self.d_model = 512
        self.pad_id  = pad_id
        self.src_emb = nn.Embedding(vocab_src, self.d_model, padding_idx=pad_id)
        self.tgt_emb = nn.Embedding(vocab_tgt, self.d_model, padding_idx=pad_id)
        self.pos     = PositionalEncoding(self.d_model)
        self.core    = nn.Transformer(
            d_model=512, nhead=8,
            num_encoder_layers=6, num_decoder_layers=6,
            dim_feedforward=2048, dropout=0.1, batch_first=True,
        )
        self.lm_head = nn.Linear(self.d_model, vocab_tgt)

    def forward(self, src_ids: torch.Tensor, tgt_ids: torch.Tensor) -> torch.Tensor:
        src_key_padding_mask = src_ids.eq(self.pad_id)
        tgt_key_padding_mask = tgt_ids.eq(self.pad_id)
        src = self.pos(self.src_emb(src_ids) * math.sqrt(self.d_model))
        tgt = self.pos(self.tgt_emb(tgt_ids) * math.sqrt(self.d_model))
        tgt_mask = nn.Transformer.generate_square_subsequent_mask(
            tgt.size(1), device=tgt.device
        )
        hidden = self.core(
            src=src, tgt=tgt, tgt_mask=tgt_mask,
            src_key_padding_mask=src_key_padding_mask,
            tgt_key_padding_mask=tgt_key_padding_mask,
            memory_key_padding_mask=src_key_padding_mask,
        )
        return self.lm_head(hidden)

Guía de implementación reproducible

  1. Elegir un dataset pequeño y medible

    IWSLT14 De→En o un subconjunto de OPUS Books En→Fr. Verifica que tienes train/valid/test separados y una métrica reproducible como SacreBLEU.

  2. Fijar tokenización antes del modelo

    BPE o SentencePiece con vocabulario conjunto. Comprueba que el OOV es bajo y la longitud media de secuencia es estable.

  3. Arrancar con el modelo base del paper

    6 capas, d_model=512, 8 cabezas, d_ff=2048, dropout 0.1, label smoothing 0.1. Verifica que el número de parámetros cuadra con una implementación de referencia.

  4. Respetar la receta de optimización

    Adam (0.9, 0.98), inverse-sqrt schedule y 4000 warmup steps. La curva de pérdida no debe explotar al inicio.

  5. Evaluar con protocolo fijo

    Beam search, length penalty y SacreBLEU con el mismo comando cada vez. El score debe ser regenerable de forma exacta.

  6. Optimizar el serving después, no antes

    Convierte a un runtime de inferencia como CTranslate2. Compara BLEU y tokens/s antes y después con el mismo modelo y conjunto de prueba.

Impacto científico: citas positivas y críticas

La huella del paper es inmensa pero no uniforme. Hay trabajos que lo citan para extenderlo y trabajos que lo citan para corregirlo.

Comparación con trabajos relacionados y arquitecturas cercanas
Paper Año Contribución principal Limitación clave
Attention Is All You Need 2017 Self-attention multi-cabeza como sustituto total de RNN/CNN Atención O(n²), extrapolación débil a longitudes largas
GNMT (Google, 2016) 2016 Deep LSTM con atención a escala de producción Secuencial, difícil de paralelizar
ConvS2S (Gehring et al.) 2017 Seq2seq totalmente convolucional, muy rápido Camino entre posiciones crece con la distancia
Universal Transformer 2018 Refinamiento recurrente sobre bloques self-attentive, +0.9 BLEU sobre Transformer en En→De Mayor cómputo iterativo y complejidad conceptual
BERT 2018 Preentrenamiento bidireccional; nuevos mejores resultados en 11 tareas Solo encoder; no genera texto
BigBird / Performers / ALiBi 2020–21 Corrigen atención cuadrática y extrapolación posicional Mayor complejidad de implementación
Cita positiva

BERT (2018)

Toma el Transformer como base para representaciones bidireccionales. Reporta nuevos mejores resultados en 11 tareas de NLP.

Cita positiva

T5 (2019)

Generaliza la idea en un marco text-to-text. Libera dataset, modelos y código. Alimenta directamente MUM en Search.

Cita crítica

Are Sixteen Heads Really Better than One?

Documenta redundancia funcional: unas pocas cabezas hacen el trabajo pesado. Muchas pueden podarse con pérdidas BLEU mínimas.

Cita correctiva

ALiBi (2021)

Corrige la extrapolación débil a longitudes no vistas, reemplazando el esquema posicional sinusoidal con sesgos lineales sobre la atención.

Limitaciones técnicas e implicaciones para negocio y SEO/GEO

Las limitaciones del paper original siguen siendo las del Transformer vanilla: atención cuadrática con la longitud, extrapolación débil a secuencias más largas de las vistas en entrenamiento, redundancia parcial en cabezas y decoder autoregresivo. Ninguna invalida el paper; explican por qué la historia posterior fue una historia de variantes de eficiencia.

En ética y seguridad, el paper casi no entra. No es un trabajo de alineamiento, sesgo ni evaluación de daño. Esa deuda la heredan sus descendientes. InstructGPT lo resume bien: hacer un modelo más grande no lo vuelve automáticamente mejor en seguir intenciones del usuario. El Transformer da la base computacional; el alineamiento llega después.

La implicación clave para búsqueda y contenido generativo

En 2019, Google explicó que BERT mejoraba la comprensión de 1 de cada 10 búsquedas en inglés en EE. UU., especialmente en consultas largas y conversacionales. Después, MUM se presentó como un sistema basado en T5, con ambición multimodal y multilingüe.

Para GEO, la consecuencia es directa: la recuperación y el ranking pasan a depender más de contexto, intención y cobertura semántica, no solo de coincidencia de keywords. RAG añade la capa de memoria no paramétrica que el diseño de 2017 no resolvía. ReAct añade la capacidad de actuar sobre fuentes externas para reducir alucinaciones.

  • Limitación
    Grounding y frescura documental. El Transformer paramétrico no tiene mecanismo nativo para acceder a fuentes actualizadas. RAG cubre esta brecha combinando recuperación con generación.
  • Limitación
    Contexto largo y memoria. La atención cuadrática limita ventanas de contexto en producción. Para alta concurrencia o documentos largos, se requieren kernels optimizados y cuantización.
  • Limitación
    Alineamiento con intenciones del usuario. El diseño original no aborda utilidad, veracidad ni toxicidad. RLHF e InstructGPT cubren esta capa posterior.
  • Conclusión para GEO y producto

    Attention Is All You Need es el substrato de casi todo el NLP moderno, pero no es el blueprint final de un producto orientado a factualidad. Si tu caso exige fuentes verificables, frescura documental, trazabilidad o acción sobre entornos externos, necesitas recuperación, citación y/o agencia sobre el modelo base.

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Scroll al inicio