Temperature Scaling
온도 스케일링은 소프트맥스 적용 전에 모델의 로짓을 하나의 학습된 값으로 나눠 예측 결과는 그대로 유지하면서 모델의 신뢰도가 정확도와 일치하도록 합니다.
온도 스케일링은 사후 보정 방법으로, 학습된 분류기의 로짓을 소프트맥스를 적용하기 전에 단일 양수 T로 나누며, T는 모델의 신뢰도가 실제 정답률과 일치하도록 홀드아웃 데이터에서 선택됩니다. 1보다 큰 온도는 과신된 확률 분포를 완화하고, 1보다 작은 온도는 확신이 부족한 확률 분포를 더 뾰족하게 만듭니다. 모든 로짓을 같은 양수로 나누면 로짓의 순서가 유지되므로, 예측 클래스는 바뀌지 않고 정확도도 정확히 동일하게 유지됩니다. "현대 신경망의 보정에 관하여" 연구에서 Guo와 동료들은 현대 심층 네트워크가 제대로 보정되지 않으며, Platt 스케일링의 단일 매개변수 변형인 온도 스케일링이 테스트한 데이터셋 대부분에서 심층 네트워크를 보정하는 데 놀라울 정도로 효과적이라는 사실을 발견했습니다.
온도 스케일링의 작동 방식#
스케일링된 소프트맥스에서 클래스 i의 확률은 exp(z_i / T) / Σ_j exp(z_j / T)이며, 여기서 z는 로짓입니다. T = 1이면 모델은 바뀌지 않습니다. T가 커질수록 확률은 균등 분포에 가까워지고, T가 0에 가까워질수록 최상위 클래스의 확률은 1에 가까워집니다. 학습 후 학습 손실과 동일한 교차 엔트로피인 음의 로그 가능도(NLL)를 최소화해 T를 적합합니다. 이때 검증용 홀드아웃 세트를 사용하고 네트워크 가중치는 고정합니다. 파라미터가 하나뿐이므로 적합에는 몇 초밖에 걸리지 않고 검증 세트를 과적합할 여지도 거의 없습니다. 아래 PyTorch 스크립트는 로짓이 실제보다 3배 큰 모델의 T를 적합합니다.
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")적합 결과 실제 계수 3에 가까운 T = 2.98을 얻습니다. 정확도는 0.663으로 유지되지만 평균 신뢰도는 0.880에서 0.664로 낮아집니다. 따라서 스케일링 후 모델의 평균 신뢰도는 정확도와 일치합니다.
네트워크가 과신하게 되는 이유#
교차 엔트로피 학습은 네트워크가 이미 올바르게 분류한 학습 예제의 로짓을 계속 키우도록 보상하므로, 새 데이터의 정확도가 정체된 뒤에도 신뢰도는 계속 높아집니다. 구오와 동료들은 깊이, 너비, 가중치 감쇠 및 배치 정규화를 보정 오류의 주요 요인으로 지목했습니다. 보정은 구간별 정확도와 신뢰도를 그리는 신뢰도 다이어그램과, 예측이 각 구간에 분포하는 수를 가중치로 사용해 해당 구간의 신뢰도와 정확도 간 평균 차이를 계산하는 기대 보정 오류(ECE)로 측정합니다. NLL과 브라이어 점수도 보정에 보상을 제공합니다. 30%를 넘는 위험 사례를 모두 의뢰하는 의료 분류 규칙, 불확실한 예측을 사람에게 넘기는 시스템, 라벨링할 확신도가 가장 낮은 이미지를 선택하는 능동 학습 루프처럼 점수를 확률로 해석하는 모든 경우에 보정이 중요합니다.
객체 탐지기의 온도 스케일링#
탐지기는 보통 소프트맥스 대신 클래스별 독립 시그모이드 점수를 사용하며, 온도는 sigmoid(z / T)와 같은 방식으로 적용됩니다. T가 1보다 크면 점수가 0.5에 가까워져 높은 점수는 낮아지고 낮은 점수는 높아집니다. YOLO26에서 각 박스의 신뢰도는 클래스 로짓에 시그모이드를 적용한 값으로, 예측 시점에 conf 임곗값 0.25와 비교됩니다. 따라서 홀드아웃 이미지에서 적합한 온도는 모든 박스의 순위를 유지하면서 임곗값을 넘는 박스를 바꿉니다. 평균 정밀도(mAP)와 같은 순위 기반 지표는 이 순위에 의존합니다.
기타 설정에서의 온도#
- 대규모 언어 모델(LLMs): 샘플링 온도는 각 다음 토큰의 로짓 벡터를 T로 나누는 방식으로 작동하며, 사용자는 다양성과 결정성 사이의 균형을 조절하기 위해 온도를 직접 설정합니다. T가 0에 가까워질수록 샘플링은 탐욕적 디코딩에 가까워지며, 이 방식은 항상 확률이 가장 높은 토큰을 선택합니다.
- 지식 증류: Hinton과 동료들의 증류 방법은 교사와 학생의 softmax 출력 온도를 모두 높여 학생이 오분류 클래스에 대한 교사의 상대적 확률을 학습하도록 합니다.
- 대조 학습: CLIP과 같은 모델은 softmax를 적용하기 전에 이미지-텍스트 유사도 점수를 학습된 온도로 나눕니다. 이를 통해 손실이 일치하는 쌍과 나머지 쌍을 얼마나 뚜렷하게 구분할지 조절합니다.
온도 스케일링과 관련 기법 비교#
- Platt 스케일링: 시그모이드를 적용하기 전에 이진 분류기의 점수에 기울기와 절편을 맞춥니다. 온도 스케일링은 하나의 공유 기울기인 1 / T를 사용하고 절편은 사용하지 않아 이를 다중 클래스 문제로 확장합니다.
- 벡터 및 행렬 스케일링: 클래스마다 별도의 가중치와 편향을 학습하거나 로짓 전체에 대한 행렬을 학습합니다. 이 기법은 유연성이 더 높지만 과적합되기 쉽고 예측 클래스를 바꿀 수 있습니다.
- 등장 회귀: 점수를 확률로 변환하는 비모수적 단조 매핑으로, scikit-learn의 보정 도구에서 Platt 스케일링과 함께 사용할 수 있습니다.
- 레이블 스무딩: 학습 중 과도한 확신을 줄이기 위해 정답 클래스의 타깃을 1.0 대신 0.9와 같이 완화합니다. 온도 스케일링은 학습이 완료된 모델의 출력만 변경합니다.
- 컨포멀 예측: 교환 가능 데이터에서 실제 레이블을 일정 비율, 예를 들어 90%의 확률로 포함하는 예측 집합을 점수로부터 생성합니다.










