El Transformer es la arquitectura de red neuronal que revolucionó la inteligencia artificial desde 2017 (con el artículo "Attention is All You Need"). Es el motor de casi todos los grandes modelos de lenguaje: su superpoder es procesar una secuencia entera en paralelo y decidir, para cada palabra, a cuáles otras prestar atención.
El problema que vino a resolver
Antes, las redes leían el texto palabra por palabra, en orden (arquitecturas recurrentes). Eso era lento y les costaba conectar palabras lejanas: al llegar al final de un párrafo, ya casi habían olvidado el principio. El Transformer rompe con eso: mira toda la secuencia a la vez y conecta cualquier par de palabras sin importar la distancia.
Las piezas del Transformer
Una entrada de texto atraviesa varias etapas:
- Embeddings — cada token se convierte en un vector, como vimos en embeddings.
- Codificación posicional (positional encoding) — como todo se procesa en paralelo, se suma a cada vector una señal que indica su posición. Sin esto, "el perro mordió al gato" y "el gato mordió al perro" serían idénticos.
- Bloques de atención — el corazón de la arquitectura, apilados muchas veces.
- Salida — una capa final que predice el siguiente token.
El corazón: la autoatención
El motor de cada bloque es la autoatención (self-attention): cada palabra "mira" a todas las demás y decide cuáles son relevantes. Le dedicamos una lección entera —el mecanismo de atención— así que aquí basta con recordar el trío que la hace funcionar:
- Query (Q) — lo que esta palabra "busca".
- Key (K) — lo que cada palabra "ofrece".
- Value (V) — la información que aporta si resulta relevante.
Cada palabra compara su query con las keys de todas las demás; las que encajan reciben más peso, y con esos pesos se combinan los values:
Así, al procesar "banco" en "me senté en el banco del parque", la palabra presta más atención a "parque" que a "dinero", y resuelve la ambigüedad por contexto.
Atención multi-cabeza
En vez de una sola atención, el Transformer corre varias en paralelo (multi-head attention). Cada "cabeza" aprende a fijarse en un tipo de relación distinto: una en la sintaxis, otra en concordancias, otra en el tema. Luego se combinan. Es como leer la frase con varios lentes a la vez.
En código
La autoatención, en su forma mínima, son unas pocas líneas de numpy:
import numpy as np
def softmax(z):
e = np.exp(z - z.max(axis=-1, keepdims=True))
return e / e.sum(axis=-1, keepdims=True)
def autoatencion(Q, K, V):
d_k = Q.shape[-1]
pesos = softmax(Q @ K.T / np.sqrt(d_k)) # cuánto mira cada palabra a las demás
return pesos @ V # combina la información relevante
# 3 tokens representados por vectores de dimensión 4 (aquí Q=K=V para simplificar)
X = np.random.rand(3, 4)
print(autoatencion(X, X, X).shape) # (3, 4): un vector "contextualizado" por token
En la práctica se usa una librería como Hugging Face transformers, que trae la arquitectura completa y modelos ya entrenados (lo veremos en los casos prácticos).
Para llevar
El Transformer procesa el texto en paralelo y, mediante la autoatención, deja que cada palabra pese la relevancia de todas las demás. Sumando codificación posicional, múltiples cabezas de atención y muchas capas apiladas, obtiene una comprensión del contexto sin precedentes. Es la arquitectura sobre la que se construyen todos los LLM modernos.
