Как температура влияет на распределение вероятностей в softmax?
Что проверяют
Понимаете ли вы, что температура просто делит логиты перед экспонентой, и умеете ли вывести из этого поведение на краях. Следом спрашивают, где температуру применяют на практике: генерация текста, дистилляция, калибровка.
Как отвечать
Формула: softmax(z/T), вероятность класса пропорциональна exp(z_i/T). Отсюда поведение:
- T меньше 1: разрывы между логитами растягиваются, распределение острее. При T, стремящейся к нулю, получается argmax, вся масса на одном классе;
- T больше 1: распределение сглаживается, энтропия растёт, при очень большой T оно стремится к равномерному;
- порядок не меняется: деление на положительное число сохраняет порядок логитов, поэтому argmax и accuracy от T не зависят. Меняется только уверенность.
Для логитов [2, 1, 0.1]: при T=1 примерно 0.66, 0.24, 0.10; при T=0.5 уже 0.86, 0.12, 0.02; при T=2 около 0.50, 0.30, 0.19.
Где это применяют:
- генерация в языковых моделях: низкая T даёт предсказуемый текст, высокая разнообразный. Температуру 0 API обычно трактуют как жадный выбор;
- дистилляция знаний: учитель и ученик считают softmax при T больше 1, чтобы ученик видел соотношения между «неправильными» классами. Лосс на мягких метках умножают на T², иначе его градиенты слишком малы;
- калибровка (temperature scaling): после обучения подбирают одну T на валидации по log loss. Accuracy не меняется, вероятности становятся честнее;
- контрастивное обучение: в InfoNCE и CLIP температура задаёт резкость сравнения, в CLIP она обучаемая.
Где спотыкаются
Говорят, что высокая температура мешает выбрать лучший класс. Argmax остаётся тем же, меняются только вероятности.
Путают масштабирование со сдвигом. Прибавление одного числа ко всем логитам softmax не меняет вообще, а деление на T меняет.
Забывают про численную устойчивость. При маленькой T логиты после деления огромные и exp переполняется, поэтому перед экспонентой вычитают максимум.