为啥需要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函数?为啥不简单归一化?的主要内容,如果未能解决你的问题,请参考以下文章