Как температура влияет на распределение вероятностей в softmax?
Ответ от нейросети
sobes.tech AI
Температура в функции softmax — это параметр, который масштабирует входные логиты перед применением экспоненты. Формально, если у нас есть вектор логитов (z = (z_1, z_2, ..., z_n)), то softmax с температурой (T) вычисляется как:
[ \text{softmax}(z_i) = \frac{e^{z_i / T}}{\sum_{j} e^{z_j / T}} ]
Влияние температуры:
-
Высокая температура ((T > 1)) делает распределение более "плоским", то есть вероятности становятся более равномерными. Это снижает уверенность модели в выборе наиболее вероятного класса.
-
Низкая температура ((T < 1)) усиливает различия между логитами, делая распределение более "острым" и сконцентрированным на наиболее вероятных классах.
-
При (T \to 0) softmax приближается к функции выбора максимума (argmax), выдавая почти детерминированный результат.
Пример:
import numpy as np
def softmax_with_temperature(logits, T=1.0):
scaled_logits = logits / T
exps = np.exp(scaled_logits - np.max(scaled_logits))
return exps / np.sum(exps)
logits = np.array([2.0, 1.0, 0.1])
print(softmax_with_temperature(logits, T=0.5)) # более "острое" распределение
print(softmax_with_temperature(logits, T=2.0)) # более "плоское" распределение
Таким образом, температура позволяет контролировать степень уверенности модели в предсказаниях, что полезно, например, при генерации текста или в методах обучения с подкреплением.