为啥需要softmax函数?为啥不简单归一化?

Posted

技术标签:

【中文标题】为啥需要softmax函数?为啥不简单归一化?【英文标题】:Why is softmax function necessory? Why not simple normalization?为什么需要softmax函数?为什么不简单归一化? 【发布时间】:2018-02-08 11:41:15 【问题描述】:

我不熟悉深度学习,所以这可能是一个初学者问题。 据我了解,多层感知器中的 softmax 函数负责每个类的归一化和分布概率。 如果是这样,我们为什么不使用简单的归一化?

假设,我们得到一个向量x = (10 3 2 1) 应用softmax,输出为y = (0.9986 0.0009 0.0003 0.0001)

应用简单的归一化(将每个元素除以sum(16)) 输出将是y = (0.625 0.1875 0.125 0.166)

似乎简单的归一化也可以分布概率。 那么,在输出层使用softmax函数有什么好处呢?

【问题讨论】:

【参考方案1】:

归一化并不总是产生概率,例如,当您考虑负值时,它就不起作用。或者如果这些值的总和为零怎么办?

但是使用 logits 的指数会改变,理论上它永远不会为零,它可以将 logits 的全部范围映射为概率。所以它是首选,因为它确实有效。

【讨论】:

【参考方案2】:

这取决于训练损失函数。许多模型都使用 log loss 算法进行训练,因此您在该向量中看到的值可以估计每个概率的 log。因此,SoftMax 只是转换回线性值并进行归一化。

经验原因很简单:SoftMax 用于产生更好结果的地方。

【讨论】:

以上是关于为啥需要softmax函数?为啥不简单归一化?的主要内容,如果未能解决你的问题,请参考以下文章

归一化指数函数:softmax loss function

为啥归一化数的最高位总是 1?

为啥要对 SVM 特征向量进行余弦归一化?

归一化单位,为啥我们在数值积分中使用它们? [关闭]

为啥 z 坐标没有被 glm::ortho() 投影归一化?

为啥 R 文档指出可能出现大于最大归一化浮点数的数字?