Skip to content

English · Español

01 — Escalado por temperatura

🇪🇸 La temperatura es un único escalar que controla cuán "valiente" o "tímido" es el modelo. Bajo τ: el modelo se aferra a su token favorito. Alto τ: el modelo casi sortea de uniforme. La cara matemática: τ aplana o agudiza la softmax.

La fórmula

Dados logits \(z \in \mathbb{R}^V\) y temperatura \(\tau > 0\):

\[q_i(\tau) = \frac{\exp(z_i / \tau)}{\sum_{j=1}^V \exp(z_j / \tau)}\]

Todo se divide por \(\tau\) dentro del exponente. Nota: aplicar \(\tau\) fuera de la softmax (p. ej., \(q^{1/\tau} / \sum q^{1/\tau}\)) da una distribución distinta — misma forma pero distinta normalización. Quédate con la forma interna.

Los tres límites

\(\tau \to 0^+\) — colapso a argmax

A medida que \(\tau\) decrece, \(z_i / \tau\) crece en magnitud. Si \(z^* = \max_i z_i\) es el máximo único:

\[\lim_{\tau \to 0^+} q_i(\tau) = \begin{cases} 1 & \text{si } z_i = z^* \\ 0 & \text{en caso contrario} \end{cases}\]

Así que greedy decoding es el límite τ → 0 del muestreo con temperatura. (Cuando hay empates, el límite es uniforme sobre los tokens empatados — un caso borde de medida cero en la práctica.)

\(\tau = 1\) — identidad

Cuando \(\tau = 1\), \(q_i = \text{softmax}(z)_i\) — la distribución nominal del modelo. Úsalo como referencia.

\(\tau \to \infty\) — uniforme

A medida que \(\tau\) crece, \(z_i / \tau \to 0\) para todo \(i\). Los exponentes tienden todos a 1, el normalizador tiende a \(V\), y:

\[\lim_{\tau \to \infty} q_i(\tau) = 1/V \quad \text{para todo } i\]

— una distribución uniforme. Muestrear de \(\tau = \infty\) es lo mismo que elegir un token al azar.

Entropía como función de \(\tau\)

La entropía de \(q(\tau)\) es no-decreciente en \(\tau\):

\[\frac{\partial H(q(\tau))}{\partial \tau} \ge 0\]

con igualdad solo cuando los logits son constantes (ya uniformes).

Esbozo de la demostración

Calcula \(\partial H / \partial \tau\). Usando \(H(q) = -\sum_i q_i \log q_i\) y \(q_i = \exp(z_i/\tau) / Z\) donde \(Z = \sum_j \exp(z_j/\tau)\):

\[\frac{\partial q_i}{\partial \tau} = -\frac{z_i}{\tau^2} q_i + \frac{q_i}{\tau^2} \langle z \rangle = -\frac{1}{\tau^2}(z_i - \langle z \rangle) q_i\]

donde \(\langle z \rangle = \sum_j q_j z_j = \mathbb{E}_q[z]\). Entonces:

\[\frac{\partial H}{\partial \tau} = -\sum_i \frac{\partial q_i}{\partial \tau} (1 + \log q_i) = \frac{1}{\tau^2}\sum_i (z_i - \langle z \rangle) q_i (1 + \log q_i)\]

Usa \(\log q_i = z_i/\tau - \log Z\) y simplifica; los términos constantes desaparecen porque \(\sum_i (z_i - \langle z \rangle) q_i = 0\). El término restante es \(\frac{1}{\tau^3} \text{Var}_q[z] \ge 0\).

Así que \(\partial H / \partial \tau \ge 0\) con igualdad si y solo si todos los \(z_i\) son iguales.

(El lab 01 verifica esto empíricamente barriendo \(\tau\) sobre un vector de logits sintético y graficando \(H(q(\tau))\).)

Una nota sobre calibración

Un modelo perfectamente calibrado con \(\tau = 1\) tiene una confianza expresada igual a su accuracy empírica. Un modelo sobre-confiado (típico en redes neuronales; ver Fase 05 lab 03) pone demasiada masa en su mejor predicción. Bajar \(\tau\) ligeramente (p. ej., \(\tau = 0.9\)) a veces recupera calibración empíricamente; subir \(\tau\) ligeramente (p. ej., \(\tau = 1.1\)) a veces añade diversidad útil para un modelo infra-confiado.

Esto no es la misma operación que el escalado por temperatura usado para calibración en la Fase 05. Allí la temperatura se ajusta sobre un conjunto held-out para minimizar el CE de validación. Aquí es un mando de tiempo de ejecución para diversidad. Misma matemática, distinta motivación. No los confundas.

¿Y la repetición?

Un problema clásico del muestreo autorregresivo: el modelo puede caer en bucles repetitivos (I work. I work. I work...). Una solución habitual es la penalización por repetición: reducir el peso de los logits para tokens ya presentes en la secuencia generada:

\[z'_i = \begin{cases} z_i / \rho & \text{si } i \in \text{generated\_so\_far y } z_i > 0 \\ z_i \cdot \rho & \text{si } i \in \text{generated\_so\_far y } z_i \le 0 \\ z_i & \text{en caso contrario} \end{cases}\]

con \(\rho > 1\) (típicamente \(\rho = 1.1\) a \(1.3\)).

Para nuestro corpus de verbos, la repetición es menos problemática porque las secuencias son cortas. No implementamos la penalización por repetición en el lab; la mencionamos solo en teoría.

Una trampa: temperatura aplicada a la etapa equivocada

Tres sitios donde uno podría aplicar \(\tau\):

  1. softmax(z / τ) — la forma correcta. La temperatura escala los logits antes del softmax.
  2. softmax(z) ** (1/τ) / normalisecasi pero no exactamente lo mismo; produce una distribución distinta.
  3. Muestrear de softmax(z) y rechazar con probabilidad τ — sin sentido, pero te sorprendería.

Solo (1) está bien. El lab 00 te hará verificarlo calculando la entropía con \(\tau = 2\) vía (1) y (2) sobre los mismos logits y mostrando que difieren.

Lo que este archivo NO cubre

  • Top-k / top-p. Siguiente archivo.
  • Calibración vía temperatura como parámetro aprendido. La Fase 05 lab 03 lo cubre.
  • Programaciones de temperatura adaptativas. Algunos samplers varían τ en función de la posición; fuera de alcance.

Siguiente: 02-top-k-and-top-p.md