Temperature Scaling
La mise à l’échelle par température divise les logits d’un modèle par une valeur ajustée avant le softmax, afin que son niveau de confiance corresponde à sa précision, sans modifier ses prédictions.
La mise à l’échelle par température est une méthode de calibration a posteriori qui divise les logits d’un classificateur entraîné par un nombre positif unique T avant la fonction softmax. T est choisi sur des données mises de côté afin que la confiance du modèle corresponde à sa fréquence réelle de réponses correctes. Une température supérieure à 1 adoucit les probabilités trop confiantes, tandis qu’une température inférieure à 1 accentue les probabilités insuffisamment confiantes. Diviser tous les logits par le même nombre positif préserve leur ordre : la classe prédite ne change donc jamais et la précision reste exactement la même. Dans l’étude « On Calibration of Modern Neural Networks », Guo et ses collègues ont constaté que les réseaux profonds modernes étaient mal calibrés et que la mise à l’échelle par température, une variante de Platt scaling à un seul paramètre, se révélait étonnamment efficace pour calibrer la plupart des jeux de données testés.
Fonctionnement de la mise à l’échelle de la température#
La softmax mise à l’échelle attribue à la classe i la probabilité exp(z_i / T) / Σ_j exp(z_j / T), où z représente les logits. À T = 1, le modèle est inchangé ; à mesure que T augmente, les probabilités tendent vers une distribution uniforme ; et lorsque T tend vers 0, la probabilité de la classe dominante tend vers 1. T est ajusté après l’entraînement en minimisant la log-vraisemblance négative (NLL), la même entropie croisée que la fonction de perte d’entraînement, sur un jeu de validation mis de côté, en gardant les poids du réseau figés. Comme il n’y a qu’un seul paramètre, l’ajustement prend quelques secondes et présente peu de risques de surapprentissage du jeu de validation. Le script PyTorch ci-dessous ajuste T pour un modèle dont les logits sont trois fois trop grands :
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")L’ajustement retrouve T = 2,98, proche du facteur réel de 3. La précision reste à 0,663, tandis que la confiance moyenne passe de 0,880 à 0,664 ; après la mise à l’échelle, la confiance moyenne du modèle correspond donc à sa précision.
Pourquoi les réseaux deviennent trop confiants#
L’entraînement par entropie croisée continue de récompenser des logits plus élevés pour les exemples d’entraînement que le réseau classe déjà correctement ; la confiance augmente donc encore après que la précision sur les nouvelles données a atteint un plateau. Guo et ses collègues ont relevé la profondeur, la largeur, la décroissance des poids et la normalisation par lots parmi les facteurs importants de mauvaise calibration. La calibration se mesure à l’aide de diagrammes de fiabilité, qui représentent la précision en fonction de la confiance par intervalles, et de l’erreur de calibration attendue (ECE), l’écart moyen entre confiance et précision dans ces intervalles, pondéré par le nombre de prédictions dans chacun d’eux. La NLL et le score de Brier récompensent aussi la calibration. Celle-ci est importante chaque fois qu’un score est interprété comme une probabilité, par exemple pour une règle de triage médical qui oriente tout cas présentant un risque supérieur à 30 %, un système qui confie à une personne les prédictions incertaines ou une boucle d’apprentissage actif qui sélectionne les images les moins certaines pour l’annotation.
Mise à l’échelle par température pour les détecteurs d’objets#
Les détecteurs évaluent généralement chaque classe avec une sigmoïde indépendante plutôt qu’avec une softmax ; la température s’applique de la même façon, sous la forme sigmoïde(z / T). Lorsque T est supérieur à 1, les scores se rapprochent de 0,5 : les scores élevés diminuent et les scores faibles augmentent. Dans YOLO26, la confiance de chaque boîte correspond à la sigmoïde d’un logit de classe, comparée au seuil conf de 0,25 au moment de la prédiction ; une température ajustée sur des images mises de côté modifie donc les boîtes qui dépassent ce seuil tout en conservant leur classement, sur lequel reposent des métriques de classement comme la précision moyenne (mAP).
Température dans d’autres contextes#
- Grands modèles de langage (LLM) : La température d’échantillonnage divise de la même manière le vecteur de logits du jeton suivant par T, et les utilisateurs la règlent manuellement pour trouver un équilibre entre diversité et déterminisme. Lorsque T tend vers 0, l’échantillonnage se rapproche du décodage glouton, qui choisit toujours le jeton le plus probable.
- Distillation des connaissances : La méthode de distillation de Hinton et de ses collègues augmente la température des sorties softmax de l’enseignant et de l’élève afin que l’élève apprenne les probabilités relatives attribuées par l’enseignant aux classes incorrectes.
- Apprentissage contrastif : Des modèles comme CLIP divisent les scores de similarité entre image et texte par une température apprise avant le softmax, ce qui contrôle la netteté avec laquelle la fonction de perte distingue les paires correspondantes des autres.
Mise à l’échelle de la température et méthodes apparentées#
- Mise à l’échelle de Platt : Ajuste une pente et une ordonnée à l’origine au score d’un classificateur binaire avant une sigmoïde. La mise à l’échelle de la température l’étend à plusieurs classes avec une pente commune, 1 / T, et sans ordonnée à l’origine.
- Mise à l’échelle vectorielle et matricielle : Apprend un poids et un biais distincts pour chaque classe, ou une matrice complète appliquée aux logits. Ces méthodes sont plus flexibles, surajustent plus facilement et peuvent modifier la classe prédite.
- Régression isotone : Mappage monotone non paramétrique d’un score vers une probabilité, disponible avec la mise à l’échelle de Platt dans les outils d’étalonnage de scikit-learn.
- Lissage des étiquettes : Adoucit les cibles d’entraînement, par exemple en utilisant 0,9 au lieu de 1,0 pour la classe réelle, afin de réduire l’excès de confiance pendant l’entraînement. La mise à l’échelle de la température ne modifie que les sorties d’un modèle déjà entraîné.
- Prédiction conforme : Transforme les scores en ensembles de prédictions qui contiennent l’étiquette réelle avec une fréquence garantie, par exemple 90 % du temps, sur des données échangeables.










