∇ Σ ∂ ∫ λ θ
Análisis técnico a fondo

Las matemáticas
detrás de la IA

Del álgebra lineal a los transformers: un marco matemático completo

Espacios vectoriales Teoría de la probabilidad Cálculo y optimización Matemáticas de las redes neuronales Retropropagación Mecanismos de atención Arquitectura transformer Dinámica del entrenamiento

Introducción

La IA moderna, en concreto los grandes modelos de lenguaje, los generadores de imágenes y los sistemas de clasificación, se basa en unos fundamentos matemáticos sorprendentemente compactos. Todo, desde que ChatGPT genere una frase hasta que Stable Diffusion renderice una imagen, se reduce en el nivel más bajo a las mismas operaciones: multiplicación de matrices, funciones no lineales y descenso de gradiente. La sofisticación está en cómo se combinan y escalan estas primitivas.

Este artículo desarrolla las matemáticas desde los primeros principios. Empezamos con el álgebra lineal y la teoría de la probabilidad, pasamos por la optimización basada en el cálculo, construimos el formalismo de las redes neuronales, derivamos la retropropagación y culminamos en el mecanismo de atención y la arquitectura transformer en la que se basan todos los grandes modelos de lenguaje de 2026. Sin atajos: cada ecuación se deriva o se explica a partir de sus componentes.

Requisitos previos: soltura con el álgebra de secundaria y la notación básica del cálculo (derivadas, regla de la cadena). Todo lo demás se construye aquí.

01

Álgebra lineal

EL LENGUAJE DE LA IA

1.1 Vectores y espacios vectoriales

Un vector es una lista ordenada de números. En IA, los vectores lo representan todo: una palabra, un fragmento de imagen, una preferencia de usuario, un estado oculto. Un vector x en el espacio real n-dimensional se escribe así:

x = [x₁, x₂,..., xₙ]ᵀ ∈ ℝⁿ

El conjunto ℝⁿ es un espacio vectorial: es cerrado bajo la suma y la multiplicación por escalares, tiene un vector cero y cumple los ocho axiomas de espacio vectorial. Esta estructura algebraica es lo que hace que el álgebra lineal sea aplicable al aprendizaje automático: las capas de una red neuronal son aplicaciones lineales entre espacios vectoriales.

1.1.1 El producto escalar y la similitud del coseno

El producto escalar de dos vectores x, y ∈ ℝⁿ es:

x · y = xᵀy = Σᵢ xᵢyᵢ = ‖x‖‖y‖cos(θ)

donde θ es el ángulo entre los vectores. El producto escalar mide la alineación: es máximo cuando x e y apuntan en la misma dirección (cos θ = 1), cero cuando son perpendiculares (cos θ = 0) y mínimo cuando son antiparalelos (cos θ = -1). Esta interpretación geométrica es la base de los mecanismos de atención: el producto escalar entre una consulta y una clave mide cuánto «se atienden» mutuamente.

La similitud del coseno normaliza el producto escalar dividiéndolo por el producto de las magnitudes de los vectores:

cos_sim(x, y) = (x · y) / (‖x‖ · ‖y‖) ∈ [-1, 1]

La similitud del coseno se usa mucho en PLN para medir la similitud semántica entre embeddings de palabras: los vectores que representan palabras de significado parecido se agrupan en el espacio de embeddings y tienen una similitud del coseno cercana a 1.

1.2 Matrices y transformaciones lineales

Una matriz W ∈ ℝᵐˣⁿ representa una transformación lineal de ℝⁿ a ℝᵐ. Multiplicación matriz-vector:

y = Wx, donde yᵢ = Σⱼ Wᵢⱼ xⱼ

Esta es la operación central de una capa de red neuronal. Cada fila Wi· es un vector de pesos; la salida yi es el producto escalar de la fila i-ésima con la entrada x. La matriz W codifica lo que ha aprendido la capa: qué combinaciones lineales de las características de entrada debe calcular.

1.2.1 Multiplicación de matrices

Para las matrices A ∈ ℝᵐˣⁿ y B ∈ ℝⁿˣᵖ, su producto C = AB ∈ ℝᵐˣᵖ tiene como elementos:

Cᵢⱼ = Σₖ Aᵢₖ Bₖⱼ = Aᵢ· · B·ⱼ

La multiplicación de matrices no es conmutativa (en general, AB ≠ BA), pero sí asociativa: A(BC) = (AB)C. El coste computacional de multiplicar una matriz m×n por una matriz n×p es O(mnp), el coste dominante en las grandes redes neuronales. Para un transformer con dimensión oculta d = 4096 que procesa una secuencia de 2048 tokens, una sola multiplicación de matrices cuesta O(2048 × 4096 × 4096) ≈ 34 000 millones de operaciones.

1.2.2 Traspuesta y matrices simétricas

La traspuesta Wᵀ de una matriz W intercambia filas y columnas: (Wᵀ)ij = Wji. Propiedades clave: (AB)ᵀ = BᵀAᵀ, (Wᵀ)ᵀ = W. Una matriz simétrica cumple W = Wᵀ.

La matriz de pesos de atención QKᵀ/√dk de los transformers se calcula como un producto de matrices que incluye una traspuesta — la matriz de consultas Q ∈ ℝˢˣᵈ multiplicada por la traspuesta de la matriz de claves Kᵀ ∈ ℝᵈˣˢ, lo que produce una matriz de pesos de atención s×s, donde s es la longitud de la secuencia.

1.3 Valores propios, vectores propios y SVD

Un vector v es un vector propio de la matriz A si:

Av = λv

donde λ es el valor propio correspondiente. Los vectores propios son direcciones que la matriz A escala sin rotarlas. El conjunto de todos los valores propios es el espectro de A y caracteriza el comportamiento de la matriz: los valores propios grandes amplifican sus direcciones correspondientes y los pequeños las atenúan.

La descomposición en valores singulares (SVD) generaliza la descomposición espectral a matrices no cuadradas:

W = U Σ Vᵀ

donde U ∈ ℝᵐˣᵐ y V ∈ ℝⁿˣⁿ son matrices ortogonales (rotación/reflexión) y Σ ∈ ℝᵐˣⁿ es diagonal con elementos no negativos σ₁ ≥ σ₂ ≥... ≥ σᵣ (los valores singulares). La SVD se usa en la compresión de pesos: la aproximación de rango bajo Wk = Uk Σk Vkᵀ, que usa solo los k valores singulares mayores, proporciona la mejor aproximación de rango k de W en norma de Frobenius — la base del fine-tuning con LoRA (Low-Rank Adaptation).

1.4 Normas y regularización

La norma L2 (norma euclídea) de un vector x ∈ ℝⁿ:

‖x‖₂ = √(Σᵢ xᵢ²) = √(xᵀx)

La norma de Frobenius de una matriz W ∈ ℝᵐˣⁿ:

‖W‖_F = √(Σᵢ Σⱼ Wᵢⱼ²) = √(tr(WᵀW))

Las normas cuantifican el «tamaño» de vectores y matrices. En optimización, añadir una penalización basada en la norma a la función de pérdida — la regularización — penaliza los pesos grandes y evita el sobreajuste. La regularización L2 (weight decay) añade λ‖W‖²F a la pérdida, lo que hace que los pesos decaigan hacia cero durante el entrenamiento.

02

Teoría de la probabilidad y teoría de la información

2.1 Distribuciones de probabilidad

Una distribución de probabilidad P sobre un espacio muestral discreto X asigna P(x) ≥ 0 a cada resultado x ∈ X, con Σx P(x) = 1. El modelado del lenguaje es exactamente esto: estimar una distribución sobre secuencias de tokens.

Para variables continuas, la función de densidad de probabilidad (FDP) f(x) cumple f(x) ≥ 0 y ∫f(x)dx = 1. La probabilidad de un intervalo es P(a ≤ X ≤ b) = ∫ab f(x)dx.

2.1.1 La distribución softmax

La función softmax convierte un vector de logits reales z ∈ ℝⁿ en una distribución de probabilidad:

softmax(z)ᵢ = exp(zᵢ) / Σⱼ exp(zⱼ)

Propiedades: todas las salidas son positivas, suman 1 (una distribución de probabilidad válida) y los logits grandes se traducen en probabilidades cercanas a 1, mientras que los pequeños dan valores próximos a 0. El escalado por temperatura modifica esto: softmax(z/T); con T → 0 se aproxima al argmax (one-hot) y con T → ∞, a la distribución uniforme. Los modelos de lenguaje muestrean de esta distribución en cada paso de generación.

El problema de estabilidad numérica: exp(z) se desborda para valores grandes de z. La solución estándar es restar el máximo antes de la exponenciación:

softmax(z)ᵢ = exp(zᵢ - max(z)) / Σⱼ exp(zⱼ - max(z))

2.2 Teoría de la información

2.2.1 Entropía de Shannon

La entropía H(P) de una distribución P mide su incertidumbre, es decir, el contenido medio de información de un resultado:

H(P) = -Σₓ P(x) log₂ P(x) [bits]

La entropía es máxima cuando P es uniforme (máxima incertidumbre) y mínima (= 0) cuando P es determinista. Una moneda equilibrada tiene H = 1 bit; un dado de seis caras tiene H = log₂(6) ≈ 2,58 bits. La entropía del lenguaje mide cuántos bits por token se necesitan para codificar una lengua.

2.2.2 Entropía cruzada y divergencia KL

La entropía cruzada H(P, Q) mide la longitud de código esperada al usar la distribución Q para codificar muestras de la distribución real P:

H(P, Q) = -Σₓ P(x) log Q(x)

Esta es la pérdida de entrenamiento estándar para la clasificación y el modelado del lenguaje: P es la distribución real de etiquetas (one-hot) y Q es la distribución predicha por el modelo. Minimizar la entropía cruzada equivale a maximizar la log-verosimilitud de los datos según el modelo.

La divergencia KL DKL(P‖Q) mide cuánto difiere Q de P:

D_KL(P‖Q) = Σₓ P(x) log(P(x)/Q(x)) = H(P,Q) - H(P) ≥ 0

La divergencia KL es cero si y solo si P = Q en casi todo punto, y positiva en caso contrario (desigualdad de Gibbs). No es simétrica: DKL(P‖Q) ≠ DKL(Q‖P). Aparece en el entrenamiento con RLHF: el término de penalización KL que impide que el modelo ajustado se aleje demasiado del modelo base es DKL(πθ ‖ πref).

2.2.3 Perplexity

La perplejidad es la exponencial de la pérdida de entropía cruzada, la métrica estándar para evaluar modelos de lenguaje:

PPL(P, Q) = exp(H(P, Q)) = exp(-1/N Σₙ log Q(tₙ | t₁,...,tₙ₋₁))

Intuitivamente, la perplejidad es el tamaño efectivo del vocabulario entre el que elige el modelo en cada paso. Una perplejidad de 20 significa que el modelo está, de media, tan inseguro como si eligiera de forma uniforme entre 20 opciones igual de probables. Los modelos de lenguaje más avanzados alcanzan una perplejidad de 3–8 en los benchmarks estándar.

2.3 Teorema de Bayes

El teorema de Bayes es la base del aprendizaje automático probabilístico:

P(θ|D) = P(D|θ) · P(θ) / P(D)

donde θ son los parámetros del modelo, D son los datos observados, P(θ|D) es la probabilidad a posteriori, P(D|θ) es la verosimilitud, P(θ) es la probabilidad a priori y P(D) = ∫P(D|θ)P(θ)dθ es la verosimilitud marginal (evidencia). La estimación de máxima verosimilitud (MLE) maximiza P(D|θ) e ignora la probabilidad a priori. La estimación máxima a posteriori (MAP) maximiza P(θ|D), lo que equivale a la MLE con una regularización proporcional a -log P(θ).

El deep learning moderno suele usar MLE/MAP en lugar de la inferencia bayesiana completa, porque calcular la probabilidad a posteriori sobre miles de millones de parámetros es computacionalmente intratable. La estimación de la incertidumbre en los LLM sigue siendo un problema de investigación abierto.

03

Cálculo y optimización

3.1 Derivadas y el gradiente

La derivada de una función escalar f: ℝ → ℝ en el punto x mide la tasa de cambio instantánea:

f'(x) = df/dx = lim_{h→0} [f(x+h) - f(x)] / h

Para una función f: ℝⁿ → ℝ (como una función de pérdida), el gradiente ∇f ∈ ℝⁿ es el vector de derivadas parciales:

∇f(x) = [∂f/∂x₁, ∂f/∂x₂,..., ∂f/∂xₙ]ᵀ

El gradiente apunta en la dirección de máximo ascenso. Por tanto, moverse en la dirección del gradiente negativo hace descender la función de pérdida: esa es la base del descenso de gradiente.

3.1.1 La jacobiana y la hessiana

Para una función vectorial f: ℝⁿ → ℝᵐ, la matriz jacobiana J ∈ ℝᵐˣⁿ contiene todas las derivadas parciales de primer orden: Jij = ∂fi/∂xj. La jacobiana de la salida de una capa con respecto a su entrada es fundamental en la retropropagación.

La matriz hessiana H ∈ ℝⁿˣⁿ de una función escalar contiene todas las derivadas parciales de segundo orden: Hij = ∂²f/(∂xi ∂xj). La hessiana caracteriza la curvatura del paisaje de pérdida: una hessiana definida positiva implica un mínimo local, una definida negativa, un máximo local, y una indefinida, un punto de silla.

3.1.2 La regla de la cadena

La regla de la cadena es la base matemática de la retropropagación. Para funciones compuestas g(f(x)):

d/dx g(f(x)) = g'(f(x)) · f'(x)

Para funciones vectoriales, la regla de la cadena multivariable usa jacobianas:

∂z/∂x = (∂z/∂y) · (∂y/∂x) = J_g · J_f

Una red neuronal es una composición de funciones: L(θ) = loss(fₙ(...f₂(f₁(x; W₁)); Wₙ)). La regla de la cadena aplicada de forma recursiva a través de esta composición calcula ∂L/∂Wi para cada capa i — esta aplicación recursiva es la retropropagación.

3.2 El descenso de gradiente y sus variantes

3.2.1 Descenso de gradiente estocástico

El descenso de gradiente básico actualiza los parámetros θ en la dirección del gradiente negativo:

θ_{t+1} = θ_t - η · ∇_θ L(θ_t)

donde η es la tasa de aprendizaje. Calcular el gradiente real sobre todo el conjunto de datos es costoso: O(N) pasadas hacia delante por paso. El descenso de gradiente estocástico (SGD) lo aproxima usando un minilote B ⊂ D de tamaño b:

θ_{t+1} = θ_t - η · (1/b) Σ_{x∈B} ∇_θ ℓ(f(x; θ), y)

El gradiente del minilote es un estimador insesgado del gradiente completo: E[gB] = ∇L. Su varianza disminuye con el tamaño de lote b: Var(gB) = σ²/b.

3.2.2 Momento

El momento acumula un vector de velocidad v en la dirección de las componentes persistentes del gradiente:

v_{t+1} = β · v_t + (1-β) · ∇_θ L(θ_t)
θ_{t+1} = θ_t - η · v_{t+1}

Con β ∈ [0.9, 0.99], el momento promedia en la práctica los gradientes a lo largo de 1/(1-β) pasos: 10 pasos con β=0.9 y 100 pasos con β=0.99. Esto acelera la convergencia en las dimensiones planas y amortigua la oscilación en las dimensiones pronunciadas.

3.2.3 Adam: estimación adaptativa de momentos

Adam (Kingma y Ba, 2015) mantiene tasas de aprendizaje adaptativas por parámetro siguiendo tanto el primer momento (media) como el segundo momento (varianza no centrada) de los gradientes:

m_t = β₁ · m_{t-1} + (1-β₁) · g_t
v_t = β₂ · v_{t-1} + (1-β₂) · g_t²
m̂_t = m_t / (1-β₁ᵗ), v̂_t = v_t / (1-β₂ᵗ)
θ_{t+1} = θ_t - η · m̂_t / (√v̂_t + ε)

Hiperparámetros típicos: β₁ = 0.9, β₂ = 0.999, ε = 10⁻⁸, η = 3×10⁻⁴. La tasa de aprendizaje efectiva por parámetro es η/√v̂_t: los parámetros con alta varianza del gradiente reciben pasos efectivos más pequeños, y los de baja varianza, pasos más grandes.

3.2.4 Programación de la tasa de aprendizaje

La tasa de aprendizaje η no suele mantenerse constante. Entre las programaciones habituales están el calentamiento lineal + decaimiento coseno (usado en la mayor parte del preentrenamiento de transformers), el recocido coseno con reinicios y el decaimiento polinómico. La fase de calentamiento es crucial en los modelos grandes: en la inicialización, las estimaciones del gradiente son ruidosas y una tasa de aprendizaje inicial alta puede desestabilizar el entrenamiento.

04

Arquitectura de redes neuronales

MATEMÁTICAS

4.1 La capa feedforward

Una sola capa de red neuronal calcula una transformación lineal seguida de una función de activación no lineal σ:

h = σ(Wx + b)

donde W ∈ ℝᵐˣⁿ es la matriz de pesos, b ∈ ℝᵐ es el vector de sesgo, x ∈ ℝⁿ es la entrada y h ∈ ℝᵐ es el estado oculto. Sin σ, apilar capas equivaldría a una única transformación lineal. La función de activación rompe esta linealidad y permite que las redes profundas representen funciones exponencialmente más complejas.

4.2 Funciones de activación

4.2.1 ReLU y sus variantes

ReLU(x) = max(0, x) = x · 𝟙[x > 0]

Propiedades: es trivial de calcular, su gradiente es 0 (x < 0) o 1 (x > 0), produce activaciones dispersas y no se satura para valores positivos. Problema: la «ReLU moribunda» (dying ReLU) — las neuronas con x < 0 tienen gradiente cero y no pueden recuperarse.

GeLU (Gaussian Error Linear Unit), usada en GPT y BERT:

GELU(x) = x · Φ(x) = x · P(Z ≤ x) donde Z ~ N(0,1)

SwiGLU, usada en LLaMA/PaLM, es una variante con compuerta:

SwiGLU(x, W, V) = Swish(xW) ⊙ (xV)

4.2.2 Sigmoide y tangente hiperbólica

σ(x) = 1/(1 + e⁻ˣ) ∈ (0,1)
tanh(x) = (eˣ - e⁻ˣ)/(eˣ + e⁻ˣ) ∈ (-1,1)

Ambas sufren el desvanecimiento del gradiente en redes profundas: para |x| >> 0, el gradiente σ'(x) = σ(x)(1-σ(x)) → 0, lo que hace que los gradientes se desvanezcan exponencialmente al propagarse hacia atrás. Este fue el principal obstáculo para entrenar redes profundas antes de ReLU y las conexiones residuales.

4.3 Perceptrones multicapa (MLP)

Un MLP de L capas calcula:

h₀ = x
hₗ = σ(Wₗ hₗ₋₁ + bₗ) para l = 1,...,L-1
ŷ = softmax(W_L h_{L-1} + b_L)

El teorema de aproximación universal (Hornik, 1989) establece que un MLP con una sola capa oculta y anchura suficiente puede aproximar cualquier función continua en un dominio compacto con precisión arbitraria. Sin embargo, para muchas clases de funciones, las redes profundas son exponencialmente más eficientes en parámetros que las poco profundas.

4.4 Retropropagación

La retropropagación calcula ∂L/∂W para cada matriz de pesos W de una red neuronal, aplicando la regla de la cadena hacia atrás a través del grafo computacional.

Definimos las señales de error (gradientes aguas arriba):

δₗ = ∂L/∂zₗ donde zₗ = Wₗhₗ₋₁ + bₗ

La recurrencia de la retropropagación:

δ_L = ∂L/∂z_L
δₗ = (Wₗ₊₁ᵀ δₗ₊₁) ⊙ σ'(zₗ)
∂L/∂Wₗ = δₗ hₗ₋₁ᵀ
∂L/∂bₗ = δₗ
python Implementación de la retropropagación
# Pasada hacia delante
def forward(x, layers):
    activations = [x]
    pre_activations = []
    for W, b in layers:
        z = W @ activations[-1] + b
        pre_activations.append(z)
        activations.append(relu(z))
    return activations, pre_activations

# Pasada hacia atrás
def backward(loss_grad, activations, pre_acts, layers):
    delta = loss_grad
    grads = []
    for l in reversed(range(len(layers))):
        W, b = layers[l]
        dW = delta @ activations[l].T  # ∂L/∂W
        db = delta.sum(axis=1)         # ∂L/∂b
        grads.insert(0, (dW, db))
        if l > 0:
            delta = (W.T @ delta) * relu_grad(pre_acts[l-1])
    return grads

Por qué la retropropagación es eficiente

Un enfoque ingenuo perturbaría cada peso en ε y mediría (L(W+εeij) - L(W))/ε. Para n parámetros, esto requiere n pasadas hacia delante. La retropropagación calcula los n gradientes en una sola pasada hacia atrás — O(n) en lugar de O(n²) — reutilizando cálculos intermedios mediante programación dinámica.

4.5 El problema del desvanecimiento y la explosión del gradiente

La señal de error δₗ implica un producto de L-l matrices jacobianas. Si el radio espectral ρ(J) < 1, los gradientes se desvanecen exponencialmente. Si ρ(J) > 1, los gradientes explotan. Entre las soluciones están las conexiones residuales (h = F(x) + x), el recorte de gradiente (‖g‖ > γ → reescalar), la normalización de capa y una inicialización cuidadosa (inicialización de He: W ~ N(0, 2/nin)).

05

Capas de normalización

5.1 Normalización por lotes (Batch Normalization)

μ_B = (1/m) Σᵢ xᵢ, σ²_B = (1/m) Σᵢ (xᵢ - μ_B)²
x̂ᵢ = (xᵢ - μ_B) / √(σ²_B + ε)
yᵢ = γ · x̂ᵢ + β

γ y β son parámetros aprendidos que permiten a la red deshacer la normalización si eso es lo óptimo. BatchNorm resulta problemática en los modelos de lenguaje porque las secuencias tienen longitud variable y las estadísticas del lote son inestables con lotes pequeños.

5.2 Normalización de capa (Layer Normalization)

μₓ = (1/H) Σⱼ xⱼ, σ²ₓ = (1/H) Σⱼ (xⱼ - μₓ)²
x̂ⱼ = (xⱼ - μₓ) / √(σ²ₓ + ε), yⱼ = γⱼ x̂ⱼ + βⱼ

Las estadísticas de la normalización de capa se calculan por ejemplo, no por lote: no dependen del tamaño del lote y funcionan igual en el entrenamiento y en la inferencia. Por eso LayerNorm es la normalización estándar en los transformers. En los transformers Pre-LN (GPT-2 en adelante), LayerNorm se aplica antes de las subcapas de atención y MLP, lo que produce una dinámica de entrenamiento más estable a escala.

5.3 RMSNorm

RMSNorm(x) = x / RMS(x) · γ, donde RMS(x) = √(1/H Σⱼ xⱼ²)

RMSNorm es un ~10 % más rápida que LayerNorm y ofrece resultados comparables. Se usa en las arquitecturas LLaMA, Mistral y Gemma. La intuición: el paso de recentrado de LayerNorm apenas afecta a la calidad del modelo; el beneficio principal procede del reescalado, que controla la magnitud de las activaciones.

06

Embeddings y codificación posicional

6.1 Embeddings de tokens

Una matriz de embeddings de tokens E ∈ ℝ|V|×d asigna a cada token discreto del vocabulario V un vector denso de d dimensiones:

e_t = E[t] ∈ ℝᵈ

La dimensión del embedding d suele ser de 512–4096 en los modelos modernos. La matriz de embeddings se aprende junto con el resto del modelo: los tokens cercanos en el espacio de embeddings tienen patrones de uso contextual similares. El descubrimiento de Word2Vec de que la aritmética en el espacio de embeddings captura relaciones semánticas (rey - hombre + mujer ≈ reina) es una propiedad emergente del entrenamiento con grandes corpus.

Vinculación de pesos (weight tying): en muchos modelos, la matriz de proyección de salida Wout se comparte con Eᵀ, lo que reduce los parámetros en |V|×d sin degradación empírica.

6.2 Codificación posicional

Los transformers no tienen un orden intrínseco: la atención es equivariante a las permutaciones. La codificación posicional inyecta la información de posición.

6.2.1 Codificación posicional sinusoidal

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

6.2.2 Embeddings posicionales rotatorios (RoPE)

RoPE (Su et al., 2021), usado en LLaMA, Mistral y GPT-NeoX, codifica la posición rotando los vectores de consulta y clave en subespacios 2D:

q_m = R_m q, k_n = R_n k
(R_m q)ᵀ(R_n k) = qᵀ R_{m-n}ᵀ k = f(q, k, m-n)

El producto escalar depende solo de la posición relativa m-n, no de las posiciones absolutas. Esto hace que RoPE sea claramente superior a la codificación sinusoidal en sensibilidad a la posición relativa y permite extrapolar la longitud del contexto.

07

El mecanismo de atención

7.1 Atención por producto escalar escalado

El mecanismo de atención calcula sumas ponderadas de valores, donde los pesos se determinan por la similitud entre consulta y clave:

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

donde Q ∈ ℝˢˣᵈᵏ (consultas), K ∈ ℝˢˣᵈᵏ (claves), V ∈ ℝˢˣᵈᵥ (valores). El factor de escala 1/√dk evita que los productos escalares crezcan demasiado — sin él, la softmax se satura en distribuciones casi one-hot, lo que provoca el desvanecimiento del gradiente.

En la matriz de pesos de atención A = softmax(QKᵀ/√dk) ∈ ℝˢˣˢ, el elemento Aij representa cuánto atiende la posición i a la posición j. La salida es una suma ponderada de valores: outputi = Σj Aij Vj. Esto permite que cada posición agregue información de cualquier otra posición de la secuencia — la capacidad que define a los transformers.

7.2 Atención multicabeza

La atención multicabeza ejecuta h operaciones de atención en paralelo en subespacios de menor dimensión:

headᵢ = Attention(QWᵢQ, KWᵢK, VWᵢV)
MultiHead(Q,K,V) = Concat(head₁,...,headₕ) Wᴼ

Cada cabeza aprende patrones de atención distintos: unas atienden a posiciones recientes (contexto local), otras a la estructura sintáctica y otras a relaciones semánticas. Con h=12 cabezas y d=768 (BERT-base), cada cabeza opera en un subespacio de 64 dimensiones.

7.3 Atención causal (enmascarada)

A = softmax((QKᵀ/√dₖ) + M), M_ij = 0 si j≤i, -∞ si j>i

Sumar -∞ a las posiciones enmascaradas antes de la softmax hace que exp(-∞) = 0 y anula esos pesos de atención. La atención resultante es triangular inferior: la posición i atiende a las posiciones 1,...,i, pero no a i+1,...,s.

7.4 Complejidad computacional

La atención estándar es O(s²d) en tiempo y O(s²) en memoria debido a la matriz de atención s×s. Entre las variantes eficientes están FlashAttention (tiling para acelerar 2-4×, exacta), la atención dispersa (O(s·w) para un tamaño de ventana w), la atención lineal (O(s·d²)) y Multi-Query Attention (comparte K y V entre cabezas, lo que reduce el tamaño de la caché KV en un factor h).

08

La arquitectura transformer

8.1 El bloque transformer

Una capa transformer consta de dos subcapas, autoatención multicabeza y un MLP aplicado por posición, cada una con conexión residual y normalización de capa:

x' = x + MultiHead(LN(x), LN(x), LN(x))
x'' = x' + MLP(LN(x'))

La subcapa MLP:

MLP(x) = W₂ · GELU(W₁x + b₁) + b₂

donde W₁ ∈ ℝ4d×d y W₂ ∈ ℝd×4d. Para d=4096, este MLP tiene ~134 millones de parámetros por capa.

8.2 Número de parámetros

Componente Parámetros Notas
Embedding de tokensd × |V|Pesos vinculados con la salida
Embedding posicionald × s_maxNo existe en los modelos con RoPE
Atención (por capa)4d²Proyecciones Q, K, V, O
MLP (por capa)8d²SwiGLU: 12d²
LayerNorm (por capa)4dDespreciable
Total (L capas)≈ 12Ld²Para d grande

Para GPT-3 (L=96, d=12288): 12 × 96 × 12288² ≈ 175 000 millones de parámetros.

8.3 El flujo residual

El patrón de conexiones residuales crea el flujo residual (residual stream): un vector de d dimensiones que recorre toda la red y que cada capa modifica de forma aditiva:

x₀ = Embed(tokens) + PE
xₗ = xₗ₋₁ + Attn_l(xₗ₋₁) + MLP_l(...)
logits = Unembed(LN(x_L))

La interpretabilidad mecanicista ve el flujo residual como un canal de comunicación: las cabezas de atención y las capas MLP leen de él y escriben actualizaciones aditivas, lo que permite investigar cómo fluye la información.

09

Dinámica del entrenamiento a escala

9.1 El paisaje de pérdida

La función de pérdida de una red neuronal L: ℝⁿ → ℝ (donde n ~ 10⁹–10¹²) es altamente no convexa. En teoría es intratable; sin embargo, las grandes redes sobreparametrizadas son relativamente fáciles de entrenar gracias a la sobreparametrización (la mayoría de los mínimos locales están cerca del global), al régimen NTK (las redes de anchura infinita convergen como una regresión kernel) y a la regularización implícita (el SGD encuentra mínimos planos que generalizan bien).

9.2 Las leyes de escalado de Chinchilla

Hoffmann et al. (2022) derivaron leyes de escalado empíricas que relacionan el presupuesto de cómputo C, el tamaño del modelo N y el tamaño del conjunto de datos D:

L(N, D) = E + A/Nᵅ + B/Dᵝ

donde E ≈ 1,69 (entropía irreducible) y α ≈ β ≈ 0,34. El hallazgo clave: con un cómputo fijo C = 6ND, el equilibrio óptimo es Nopt ∝ C0.5 y Dopt ∝ C0.5 — el tamaño del modelo y el del conjunto de datos deben escalar por igual. Esto implica que GPT-3 (175B parámetros, 300B tokens) estaba considerablemente infraentrenado.

9.3 Entrenamiento con precisión mixta

Los modelos modernos se entrenan con precisión mixta: la pasada hacia delante en float16 para ahorrar memoria y las actualizaciones de pesos en float32 para mantener la estabilidad numérica.

python Entrenamiento con precisión mixta (PyTorch)
# Pasada hacia delante en fp16
with torch.autocast(device_type='cuda', dtype=torch.float16):
    logits = model(input_ids)
    loss = cross_entropy(logits, targets)

# Pasada hacia atrás: gradientes en fp16
scaler.scale(loss).backward()

# Desescalado + recorte del gradiente en fp32
scaler.unscale_(optimizer)
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)

# Actualización de pesos en fp32 (pesos maestros)
scaler.step(optimizer)
scaler.update()

Se prefiere BFloat16 a float16: tiene el mismo exponente de 8 bits que float32 (el mismo rango dinámico), pero solo 7 bits de mantisa, lo que evita el desbordamiento y el subdesbordamiento sin necesidad de escalar la pérdida.

9.4 Entrenamiento distribuido

Entrenar un modelo de 70B requiere ~140 GB de memoria de GPU solo para los pesos. Las estrategias incluyen el paralelismo de datos (replicar el modelo y sincronizar gradientes), el paralelismo de tensores (dividir las matrices de pesos entre GPU), el paralelismo de pipeline (asignar capas a distintas GPU) y ZeRO (repartir los estados del optimizador, los gradientes y los pesos entre los workers, lo que permite modelos arbitrariamente grandes).

10

Modelado del lenguaje y generación

10.1 El objetivo autorregresivo

L(θ) = -E_{x~D}[ Σₜ log P_θ(xₜ | x_{<t}) ]

En cada posición t, el modelo predice una distribución sobre todo el vocabulario V a partir de todos los tokens anteriores. Este sencillo objetivo de predicción del siguiente token, aplicado a una escala enorme, basta para aprender representaciones ricas del lenguaje, conocimiento factual y razonamiento.

10.2 Estrategias de decodificación

10.2.1 Escalado por temperatura

P(tᵢ) = exp(zᵢ/T) / Σⱼ exp(zⱼ/T)

T < 1 agudiza la distribución (más determinista) y T > 1 la aplana (más aleatoria). T = 0 se reduce al argmax (decodificación voraz).

10.2.2 Muestreo top-k

P'(tᵢ) = P(tᵢ) / Σ_{j∈top-k} P(tⱼ) para i ∈ top-k

10.2.3 Muestreo de núcleo (top-p)

V_p = {t : Σ_{v sorted} P(v) ≤ p}, P'(tᵢ) = P(tᵢ)/p

El top-p es adaptativo: más tokens cuando hay incertidumbre y menos cuando hay confianza. Valores típicos: temperatura 0,7–1,0 y top-p 0,9–0,95.

10.2.4 Búsqueda en haz (beam search)

score(x_{1:t}) = (1/t) Σᵢ log P(xᵢ|x_{<i})

La búsqueda en haz maximiza directamente la probabilidad. Es preferible para traducción y salidas estructuradas; para la generación abierta se prefiere el muestreo.

10.3 La caché de claves y valores (KV cache)

Durante la inferencia autorregresiva, la caché KV almacena los tensores K y V ya calculados, de modo que cada paso de generación es O(sd) en lugar de O(s²d), pero consume O(2Lsd) de memoria: en un modelo de 70B, ~320 GB en float16. La compresión de la caché KV es un área de investigación activa y crucial para la inferencia con contextos largos.

python Inferencia con caché KV
kv_cache = {}

def generate_step(input_token, kv_cache, model):
    q, k, v = model.qkv_proj(embed(input_token))

    if layer_idx in kv_cache:
        K = torch.cat([kv_cache[layer_idx][0], k], dim=1)
        V = torch.cat([kv_cache[layer_idx][1], v], dim=1)
    else:
        K, V = k, v

    kv_cache[layer_idx] = (K, V)
    output = scaled_dot_product_attention(q, K, V)
    return output, kv_cache
11

Aprendizaje por refuerzo a partir de retroalimentación humana

11.1 El pipeline de tres etapas

El RLHF alinea los modelos de lenguaje preentrenados con las preferencias humanas en tres etapas: fine-tuning supervisado (SFT), entrenamiento del modelo de recompensa y optimización por RL.

11.2 El modelo de recompensa

Un modelo de recompensa Rφ: (prompt, respuesta) → ℝ se entrena con datos de preferencias humanas por pares:

L_RM(φ) = -E[ log σ(R_φ(x,y_w) - R_φ(x,y_l)) ]

11.3 Optimización con PPO

El modelo de lenguaje πθ se optimiza para maximizar la recompensa esperada sin alejarse demasiado de la política de referencia:

max_θ E[ R_φ(x,y) ] - β · D_KL(π_θ ‖ π_ref)
L_PPO = E_t[ min(rₜ Aₜ, clip(rₜ, 1-ε, 1+ε) Aₜ) ]

El término KL evita el reward hacking, es decir, que el modelo se desvíe para explotar debilidades del modelo de recompensa. El objetivo sustituto recortado de PPO impide actualizaciones de la política excesivamente grandes que desestabilizarían el entrenamiento.

11.4 Direct Preference Optimization (DPO)

DPO (Rafailov et al., 2023) prescinde por completo del modelo de recompensa:

L_DPO(θ) = -E[ log σ(β log π_θ(y_w|x)/π_ref(y_w|x) - β log π_θ(y_l|x)/π_ref(y_l|x)) ]

DPO es matemáticamente equivalente a RLHF, pero más sencillo y estable, y no requiere un modelo de recompensa independiente. La mayoría de los pipelines modernos de fine-tuning usan DPO o sus variantes (IPO, KTO) en lugar de PPO.

∞

Resumen: los componentes matemáticos básicos

Concepto Ecuación clave Papel en la IA
Multiplicación de matricesy = Wx + bTodas las capas lineales y proyecciones de atención
Softmaxexp(z)/Σexp(z)Probabilidades de tokens, pesos de atención
Entropía cruzadaH(P,Q) = -Σ P log QPérdida de entrenamiento en clasificación/modelos de lenguaje
Regla de la cadena∂z/∂x = (∂z/∂y)(∂y/∂x)Retropropagación a través de las capas
Actualización de Adamθ -= η·m̂/√(v̂+ε)Actualización de parámetros durante el entrenamiento
Atención por producto escalarsoftmax(QKᵀ/√dₖ)VNúcleo de la autoatención del transformer
Normalización de capa(x-μ)/σ · γ + βEstabiliza las activaciones por muestra
RoPE(Rₘq)ᵀ(Rₙk)=f(q,k,m-n)Codificación posicional relativa
Divergencia KLΣ P log(P/Q)Regularización en RLHF, objetivo de los VAE
Perplexityexp(H(P,Q))Métrica de evaluación de modelos de lenguaje
SVDW=UΣVᵀCompresión de pesos, fine-tuning con LoRA
Objetivo de PPOE[min(r·A, clip(r)·A)]Optimización de la política en RLHF

Referencias

Vaswani, A., et al. (2017). Attention is all you need. NeurIPS 2017.

He, K., et al. (2016). Deep residual learning for image recognition. CVPR 2016.

Ba, J. L., et al. (2016). Layer normalization. arXiv:1607.06450.

Kingma, D. P., & Ba, J. (2015). Adam: A method for stochastic optimization. ICLR 2015.

Hochreiter, S., & Schmidhuber, J. (1997). Long short-term memory. Neural Computation 9(8).

Ioffe, S., & Szegedy, C. (2015). Batch normalization. ICML 2015.

Elhage, N., et al. (2021). A mathematical framework for transformer circuits. Transformer Circuits Thread.

Hoffmann, J., et al. (2022). Training compute-optimal large language models. arXiv:2203.15556.

Su, J., et al. (2021). RoFormer: Enhanced transformer with rotary position embedding. arXiv:2104.09864.

Dao, T., et al. (2022). FlashAttention: Fast and memory-efficient exact attention. NeurIPS 2022.

Rafailov, R., et al. (2023). Direct preference optimization. NeurIPS 2023.

Zhang, B., & Sennrich, R. (2019). Root mean square layer normalization. NeurIPS 2019.

Schulman, J., et al. (2017). Proximal policy optimization algorithms. arXiv:1707.06347.

Ouyang, L., et al. (2022). Training language models to follow instructions with human feedback. NeurIPS 2022.

Kirchenbauer, J., et al. (2023). A watermark for large language models. ICML 2023.

Rajbhandari, S., et al. (2020). ZeRO: Memory optimizations toward training trillion parameter models. SC 2020.

Sigue aprendiendo

Ver planes de pago