我最近在研究CNN,我想知道softmax公式中温度的函数是什么?为什么我们应该使用高温来看到概率分布中更软的范数? Softmax Formula
最佳答案
使用温度函数的一个原因是改变神经网络计算的输出分布。根据以下方程将其添加到 logits 向量:
𝑞𝑖 =exp(𝑧𝑖/𝑇)/Σ𝑗exp(𝑧𝑗/𝑇)
其中𝑇是温度参数。
你看,这会改变最终的概率。您可以选择 T 为任何值(T 越高,分布就越“柔和” - 如果它是 1,则输出分布将与正常的 softmax 输出相同)。我所说的“更软”的意思是模型基本上对其预测不太有信心。随着 T 越接近 0,分布就越“困难”。
a) 示例“硬”softmax 概率:[0.01,0.01,0.98]
b) 示例“软”softmax 概率:[0.2,0.2,0.6]
“a”是“更难”的分布。您的模型对其预测非常有信心。但是,在许多情况下,您不希望模型这样做。例如,如果您使用 RNN 生成文本,那么您基本上是从输出分布中进行采样,并选择采样的单词作为输出标记(和下一个输入)。如果您的模型非常自信,它可能会产生非常重复且无趣的文本。您希望它生成更多样化的文本,但它不会生成,因为当采样过程进行时,大部分概率质量将集中在几个标记中,因此您的模型将不断一遍又一遍地选择选定数量的单词。为了给其他单词也提供采样的机会,您可以插入温度变量并生成更多样化的文本。
关于为什么较高的温度会导致较软的分布,这与指数函数有关。温度参数对较大 logits 的惩罚大于对较小 logits 的惩罚。指数函数是“递增函数”。因此,如果一个术语已经很大,那么对其进行少量惩罚会使其比该术语较小时小得多(按百分比计算)。
这就是我的意思,
exp(6) ~ 403
exp(3) ~ 20
现在让我们用 1.5 的温度来“惩罚”这个术语:
exp(6/1.5) ~ 54
exp(3/1.5) ~ 7.4
您可以看到,以百分比形式表示,该术语越大,当使用温度对其进行惩罚时,它收缩得越多。当较大的 logits 比较小的 logits 收缩得更多时,更多的概率质量(由 softmax 计算)将分配给较小的 logits。
关于machine-learning - 为什么我们要在softmax中使用Temperature?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58764619/