Inicio · Parte 16 — Matemática de Transformers, modelos generativos, grafos y RL
softmax(z)ᵢ = e^{zᵢ} / Σⱼ e^{zⱼ}
softmax(z + c) = softmax(z) para todo c
implementación: restar max(z) antes de exponenciar
Softmax convierte un vector de números reales cualesquiera en una distribución de probabilidad: todos positivos y sumando 1. Es la capa de salida de todo clasificador y la pieza que normaliza los pesos de atención, así que aparece dos veces en cada bloque Transformer.
Su propiedad estructural es la invariancia frente a desplazamientos: sumar la misma constante a todos los logits no cambia la salida, porque el factor común se cancela entre numerador y denominador. Solo importan las diferencias entre logits, no sus valores absolutos.
Esa invariancia tiene una consecuencia práctica que no es opcional. Si un logit vale 1000, exp(1000) desborda a infinito y el resultado es NaN. Como restar el máximo no altera la salida, toda implementación seria lo hace: los exponentes quedan entre exp(−algo) y exp(0) = 1, siempre representables. Es el truco de estabilidad numérica más rentable de todo el aprendizaje profundo, y viene directamente de la parte 01.
Conviene además recordar su origen: softmax es la distribución de máxima entropía compatible con los logits, como se vio en la clase 267. No es una normalización elegida por comodidad sino la solución de un problema de optimización con restricciones, y esa es la razón de su forma exponencial.
Invariancia y estabilidad numérica.
logits: [2,0 ; 1,0 ; 0,1 ; −1,0]
probabilidades: [0,638066 ; 0,234731 ; 0,095435 ; 0,031767]
suman 1,0 ✓
Sumando 1000 a todos los logits:
[0,638066 ; 0,234731 ; 0,095435 ; 0,031767]
idéntico resultado ✓
Sin restar el máximo:
exp(1002) = inf → inf/inf = NaN ✗
Restando el máximo (2,0 o 1002,0, da igual):
exponentes en [exp(−3), exp(0)] ✓
Solo importan las diferencias entre logits.
Softmax: de logits arbitrarios a una distribución categórica.
python classes/part-16-matematica-de-transformers-modelos-generativos-grafos-y-rl/321-softmax-y-distribuciones-categoricas/lab.py
compmath run 321
logitsprobabilidadessuman_1invariante_a_desplazamientocon_logits_enormessin_restar_el_maximoel_orden_se_conservatemperatura_alta_aplanatemperatura_baja_afila{
"logits": [
2.0,
1.0,
0.1,
-1.0
],
"probabilidades": [
0.638066,
0.234731,
0.095435,
0.031767
],
"suman_1": 1.0,
"invariante_a_desplazamiento": [
0.638066,
0.234731,
0.095435,
0.031767
],
"con_logits_enormes": [
0.638066,
0.234731,
0.095435,
0.031767
],
"sin_restar_el_maximo": "exp(1000) desborda a inf"
}
Capa de salida de clasificadores, normalización de pesos de atención, muestreo de tokens y políticas estocásticas en aprendizaje por refuerzo.
Esta parte es la traducción matemática directa de los papers que definen el estado del arte actual.
9780262337373 verificado en International ISBN Agency (2026-08-19).10.1007/978-3-642-76153-9_28 verificado en Crossref (2026-08-20).