Temperature Scaling
El escalado de temperatura divide los logits de un modelo por un valor ajustado antes de aplicar softmax, de modo que su confianza se corresponda con su precisión sin cambiar las predicciones.
El escalado por temperatura es un método de calibración posterior al entrenamiento que divide los logits de un clasificador entrenado por un único número positivo T antes de la softmax; T se elige con datos reservados para que la confianza del modelo coincida con la frecuencia con la que acierta realmente. Una temperatura superior a 1 suaviza las probabilidades demasiado confiadas, y una inferior a 1 agudiza las que muestran poca confianza. Dividir todos los logits por el mismo número positivo mantiene su orden, por lo que la clase predicha nunca cambia y la precisión sigue siendo exactamente la misma. En el estudio «On Calibration of Modern Neural Networks», Guo y sus colaboradores descubrieron que las redes profundas modernas estaban mal calibradas y que el escalado por temperatura, una variante de Platt scaling con un solo parámetro, era sorprendentemente eficaz para calibrarlas en la mayoría de los conjuntos de datos que probaron.
Cómo funciona el escalado por temperatura#
La softmax escalada asigna a la clase i la probabilidad exp(z_i / T) / Σ_j exp(z_j / T), donde z representa los logits. Con T = 1, el modelo no cambia; a medida que aumenta T, las probabilidades se acercan a una distribución uniforme, y cuando T se aproxima a 0, la probabilidad de la clase principal se acerca a 1. T se ajusta después del entrenamiento minimizando la pérdida logarítmica negativa (NLL), la misma entropía cruzada que se utiliza como pérdida de entrenamiento, sobre un conjunto de validación reservado y con los pesos de la red congelados. Con un solo parámetro, el ajuste tarda unos segundos y deja poco margen para sobreajustar el conjunto de validación. El script de PyTorch siguiente ajusta T para un modelo cuyos logits son tres veces mayores de lo debido:
import torch
import torch.nn.functional as F
# Held-out logits for 5,000 images and 10 classes from an overconfident model:
# labels are drawn so that softmax(logits / 3) is perfectly calibrated
torch.manual_seed(0)
logits = 9 * torch.randn(5000, 10)
labels = torch.multinomial(F.softmax(logits / 3, dim=1), 1).squeeze(1)
# Fit the single temperature that minimizes negative log-likelihood (NLL) on the held-out set
temperatures = torch.linspace(0.5, 6.0, 551)
nll = torch.stack([F.cross_entropy(logits / t, labels) for t in temperatures])
T = temperatures[nll.argmin()]
# Accuracy depends only on the argmax, which dividing by T never changes
accuracy = (logits.argmax(1) == labels).float().mean()
before = F.softmax(logits, dim=1).max(1).values.mean()
after = F.softmax(logits / T, dim=1).max(1).values.mean()
print(f"T = {T:.2f}, accuracy {accuracy:.3f}")
print(f"Mean confidence: {before:.3f} before, {after:.3f} after")El ajuste obtiene T = 2,98, un valor cercano al factor real de 3. La precisión se mantiene en 0,663, mientras que la confianza media baja de 0,880 a 0,664; así, tras el escalado, la confianza media del modelo coincide con su precisión.
Por qué las redes se vuelven demasiado confiadas#
El entrenamiento con entropía cruzada sigue recompensando los logits más altos en los ejemplos de entrenamiento que la red ya clasifica correctamente, por lo que la confianza sigue aumentando aunque la precisión en datos nuevos se haya estabilizado. Guo y sus colaboradores identificaron la profundidad, la anchura, la regularización de pesos y la normalización por lotes como factores importantes de la mala calibración. La calibración se mide con diagramas de fiabilidad, que representan la precisión frente a la confianza en distintos intervalos, y con el error de calibración esperado (ECE), la diferencia media entre confianza y precisión en esos intervalos, ponderada según el número de predicciones de cada uno. La NLL y la puntuación de Brier también recompensan la calibración. La calibración importa siempre que una puntuación se interprete como una probabilidad, por ejemplo en una regla de triaje médico que deriva todos los casos con un riesgo superior al 30 %, en un sistema que remite las predicciones inciertas a una persona o en un ciclo de aprendizaje activo que selecciona para etiquetar las imágenes con menor confianza.
Escalado por temperatura para detectores de objetos#
Los detectores suelen puntuar cada clase con una sigmoide independiente en lugar de una softmax, y la temperatura se aplica del mismo modo, como sigmoid(z / T). Con T superior a 1, las puntuaciones se acercan a 0,5: las altas bajan y las bajas suben. En YOLO26, la confianza de cada cuadro es la sigmoide de un logit de clase, comparada con el umbral conf de 0,25 en el momento de la predicción; por tanto, una temperatura ajustada con imágenes reservadas cambia qué cuadros superan ese umbral, pero mantiene la clasificación de todos los cuadros, de la que dependen métricas de clasificación como la precisión media (mAP).
Temperatura en otros ajustes#
- Modelos de lenguaje grandes (LLMs): La temperatura de muestreo divide del mismo modo por T cada vector de logits del siguiente token, y los usuarios la ajustan manualmente para equilibrar diversidad y determinismo. Cuando T se acerca a 0, el muestreo se aproxima a la decodificación voraz, que siempre elige el token más probable.
- Destilación de conocimiento: El método de destilación de Hinton y sus colegas aumenta la temperatura de las salidas softmax del profesor y del alumno para que el alumno aprenda las probabilidades relativas del profesor para las clases incorrectas.
- Aprendizaje contrastivo: Modelos como CLIP dividen las puntuaciones de similitud entre imagen y texto por una temperatura aprendida antes de aplicar softmax, lo que controla con qué intensidad la pérdida separa los pares coincidentes del resto.
Escalado de temperatura frente a métodos relacionados#
- Escalado de Platt: Ajusta una pendiente y una intersección a la puntuación de un clasificador binario antes de aplicar una sigmoide. El escalado de temperatura lo amplía a varias clases con una única pendiente compartida, 1 / T, y sin intersección.
- Escalado vectorial y matricial: Aprende un peso y un sesgo distintos para cada clase, o una matriz completa sobre los logits. Son más flexibles, sufren sobreajuste con más facilidad y pueden cambiar la clase predicha.
- Regresión isotónica: Una transformación monótona no paramétrica de puntuación a probabilidad, disponible junto con el escalado de Platt en las herramientas de calibración de scikit-learn.
- Suavizado de etiquetas: Suaviza las etiquetas de entrenamiento, por ejemplo, usando 0,9 en lugar de 1,0 para la clase verdadera, con el fin de reducir el exceso de confianza durante el entrenamiento. El escalado de temperatura solo modifica las salidas de un modelo ya entrenado.
- Predicción conformal: Convierte las puntuaciones en conjuntos de predicciones que contienen la etiqueta verdadera con una tasa garantizada, por ejemplo, el 90 % de las veces, en datos intercambiables.










