为什么要在softmax中使用Temperature?

Why should we use Temperature in softmax?

我最近在做CNN,想知道softmax公式中温度的作用是什么?以及为什么我们应该使用高温来观察概率分布的软范数?Softmax Formula

使用温度函数的一个原因是改变神经网络计算的输出分布。它根据以下等式添加到 logits 向量中:

=exp(/)/ ∑exp(/)

温度参数在哪里

你看,这会改变最终的概率。您可以选择 T 为任何值(T 越高,'softer' 分布将是 - 如果它是 1,输出分布将与您的正常 softmax 输出相同)。我所说的 'softer' 的意思是,模型基本上不会对其预测充满信心。随着 T 接近 0,'harder' 分布得到。

a) 样本 'hard' softmax 概率:[0.01,0.01,0.98]

b) 样本 'soft' softmax 概率:[0.2,0.2,0.6]

'a' 是一个 'harder' 分布。您的模型对其预测非常有信心。但是,在许多情况下,您不希望您的模型这样做。例如,如果您使用 RNN 生成文本,您基本上是从输出分布中采样并选择采样的单词作为输出标记(和下一个输入)。如果您的模型非常自信,它可能会产生非常重复且无趣的文本。你希望它产生更多样化的文本,它不会产生,因为当采样过程正在进行时,大部分概率质量将集中在几个标记中,因此你的模型将保持 selecting a select字数翻来覆去。为了让其他单词也有机会被采样,您可以插入温度变量并生成更多不同的文本。

关于为什么更高的温度导致更柔和的分布,这与指数函数有关。与较小的 logits 相比,温度参数对较大的 logits 的惩罚更大。指数函数是 'increasing function'。因此,如果一个术语已经很大,则对其进行少量惩罚会使它比该术语很小时小得多(明智的百分比)。

这就是我的意思,

exp(6) ~ 403
exp(3) ~ 20

现在让我们 'penalize' 这个温度假设为 1.5 的项:

exp(6/1.5) ~ 54
exp(3/1.5) ~ 7.4

你可以看到,以百分比计算,项越大,当使用温度来惩罚它时,它收缩得越多。当较大的 logits 比较小的 logits 收缩得更多时,更多的概率质量(由 softmax 计算)将分配给较小的 logits。