为什么需要softmax函数?为什么不使用简单的归一化?

3
我不熟悉深度学习,所以这可能是一个初学者问题。在我看来,多层感知器中的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函数有什么优点?
2个回答

3

规范化并不总是能产生概率值,比如当考虑到负数时它就无法发挥作用。或者如果所有值之和为零呢?

但是如果使用logits的指数函数,情况就会改变,从理论上来说它永远不会等于零,并且可以将logits的整个范围映射到概率上。因此它更可取,因为它实际上有效。


2
这取决于训练损失函数。许多模型都是使用对数损失算法进行训练的,因此您在该向量中看到的值估计了每个概率的对数。因此,SoftMax 只是将其转换回线性值并进行归一化。
经验上说,这么做的原因很简单:Softmax 用在哪里能产生更好的结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接