Temperature Scaling
O escalonamento de temperatura divide os logits de um modelo por um valor ajustado antes da softmax, para que a confiança corresponda à precisão, sem alterar as previsões.
O escalonamento de temperatura é um método de calibração pós-treinamento que divide os logits de um classificador treinado por um único número positivo T antes da softmax, com T escolhido usando dados reservados, para que a confiança do modelo corresponda à frequência com que ele realmente acerta. Uma temperatura acima de 1 suaviza probabilidades excessivamente confiantes, e uma temperatura abaixo de 1 aguça as pouco confiantes. Dividir todos os logits pelo mesmo número positivo mantém sua ordem, portanto a classe prevista nunca muda e a precisão permanece exatamente igual. No estudo "On Calibration of Modern Neural Networks", Guo e colegas constataram que as redes profundas modernas eram mal calibradas e que o escalonamento de temperatura, uma variante de Platt scaling com um único parâmetro, era surpreendentemente eficaz para calibrá-las na maioria dos conjuntos de dados testados.
Como funciona o ajuste de temperatura#
A softmax escalonada atribui à classe i a probabilidade exp(z_i / T) / Σ_j exp(z_j / T), em que z representa os logits. Com T = 1, o modelo permanece inalterado; à medida que T cresce, as probabilidades se aproximam de uma distribuição uniforme; e, quando T se aproxima de 0, a probabilidade da classe principal se aproxima de 1. T é ajustado depois do treinamento, minimizando a log-verossimilhança negativa (NLL), a mesma entropia cruzada usada como perda de treinamento, num conjunto de validação reservado, mantendo os pesos da rede congelados. Como há um único parâmetro, o ajuste leva segundos e deixa pouca margem para sobreajustar o conjunto de validação. O script PyTorch abaixo ajusta T para um modelo cujos logits são três vezes maiores do que deveriam:
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")O ajuste recupera T = 2.98, próximo do fator verdadeiro de 3. A precisão permanece em 0.663, enquanto a confiança média cai de 0.880 para 0.664, portanto, após o escalonamento, a confiança média do modelo corresponde à sua precisão.
Por que as redes ficam excessivamente confiantes#
O treinamento com entropia cruzada continua recompensando logits maiores em exemplos de treinamento que a rede já classifica corretamente, portanto a confiança continua aumentando mesmo depois de a precisão em dados novos ter estabilizado. Guo e colegas identificaram profundidade, largura, decaimento dos pesos e normalização em lote como fatores importantes de má calibração. A calibração é medida com diagramas de confiabilidade, que apresentam a precisão em relação à confiança por intervalos, e com o erro esperado de calibração (ECE), a diferença média entre confiança e precisão nesses intervalos, ponderada pela quantidade de previsões em cada um. A NLL e a pontuação de Brier também recompensam a calibração. A calibração é importante sempre que uma pontuação é interpretada como probabilidade, como numa regra de triagem médica que encaminha todos os casos com risco acima de 30%, num sistema que encaminha previsões incertas para uma pessoa ou num ciclo de aprendizado ativo que escolhe as imagens menos confiáveis para anotação.
Escalonamento de temperatura para detectores de objetos#
Os detectores costumam pontuar cada classe com uma sigmoide independente, em vez de uma softmax, e a temperatura é aplicada da mesma forma, como sigmoid(z / T). Com T acima de 1, as pontuações se aproximam de 0.5: as pontuações altas diminuem e as baixas aumentam. No YOLO26, a confiança de cada caixa é a sigmoide de um logit de classe, comparada ao limiar conf de 0.25 no momento da predição; portanto, uma temperatura ajustada com imagens reservadas altera quais caixas ultrapassam esse limiar, mantendo a ordenação de todas as caixas, da qual dependem métricas de ordenação como a precisão média (mAP).
Temperatura em outras configurações#
- Modelos de linguagem de grande escala (LLMs): A temperatura de amostragem divide cada vetor de logits do próximo token por T da mesma forma, e os usuários a definem manualmente para equilibrar diversidade e determinismo. À medida que T se aproxima de 0, a amostragem se aproxima da decodificação gulosa, que sempre escolhe o token mais provável.
- Destilação de conhecimento: O método de destilação de Hinton e colegas aumenta a temperatura das saídas softmax do professor e do aluno para que o aluno aprenda as probabilidades relativas do professor para as classes incorretas.
- Aprendizado contrastivo: Modelos como o CLIP dividem as pontuações de similaridade entre imagem e texto por uma temperatura aprendida antes do softmax, o que controla o quanto a função de perda separa os pares correspondentes dos demais.
Escalonamento de temperatura vs. métodos relacionados#
- Escalonamento de Platt: Ajusta uma inclinação e um intercepto à pontuação de um classificador binário antes de aplicar uma sigmoide. O escalonamento de temperatura estende esse método a várias classes com uma única inclinação compartilhada, 1 / T, e sem intercepto.
- Escalonamento vetorial e matricial: Aprende um peso e um viés separados para cada classe, ou uma matriz completa sobre os logits. Esses métodos são mais flexíveis, tendem mais facilmente ao sobreajuste e podem alterar a classe prevista.
- Regressão isotônica: Um mapeamento monotônico não paramétrico de pontuação para probabilidade, disponível com o escalonamento de Platt nas ferramentas de calibração do scikit-learn.
- Suavização de rótulos: Suaviza os alvos de treinamento, por exemplo, usando 0.9 em vez de 1.0 para a classe correta, para reduzir o excesso de confiança durante o treinamento. O escalonamento de temperatura altera apenas as saídas de um modelo já treinado.
- Predição conformal: Transforma pontuações em conjuntos de previsões que contêm o rótulo verdadeiro com uma taxa garantida, como em 90% dos casos, em dados permutáveis.










