softmax 函数的哪些特殊特性使其成为分类神经网络输出层中最喜欢的激活函数?
为什么分类神经网络中经常使用softmax函数作为输出层的激活函数?
数据挖掘
机器学习
神经网络
深度学习
分类
激活函数
2022-02-15 13:27:35
1个回答
softmax 函数只是对逻辑函数的推广,它只是将值压缩到给定范围内。
在神经网络的最后一层,模型产生其最终激活(又名logits),我们希望能够将其解释为概率,因为这将允许例如创建分类结果。
使用 softmax 的原因是为了确保这些 logits 总和为 1,从而满足概率密度的约束。如果我们试图预测医学图像是否包含癌症(简单地yes或no),那么阳性结果(yes)和阴性结果(no)的概率必须总和为 1。o 模型为每个结果生成一个概率向量,采用伪代码:p = [yes, no].
如果这个二元分类示例中的最终 logits 是p = [0.03, 1.92],我们可以看到它们总和为1.95。这不能解释为概率,尽管我们可以看到 的值要高得多no。在其他可能有 1000 个类别,而不仅仅是两个类别的示例中,我们不能再轻易评估,这是最大的 logit。softmax 为我们提供了一些视角和(准)可解释的类别概率。
编辑
正如@Neil Slater在下面的评论中所描述的那样,使用softmax 后跟对数损失函数确实会产生一个模型,该模型可以预测真实概率范围内的值,从而使它们具有可解释性,并提供一些不错的统计特性(请参阅最大似然估计的属性部分)。
另请注意:最小化 log-loss等同于最大化 Maximium Liklihood Estimation。请参阅此处的数学解释。
对数损失的实现包括:
- Scikit Learn的log_loss
- Keras 中的binary_crossentropy(用于二进制问题)
- Keras 中的categorical_crossentropy(适用于 > 2 个类的情况)
前两个方法名称还强调了对数损失也与交叉熵相同(在计算错误率介于 0 和 1 之间的一般机器学习上下文中)。