使用交叉熵损失和softmax有什么好处?

人工智能 神经网络 梯度下降 交叉熵 均方误差 软最大
2021-10-27 14:28:39

我正在尝试使用标准前馈 NN 进行标准 MNIST 数据集图像识别测试,但我的网络非常失败。现在我已经调试了很多,发现并修复了一些错误,但我还有一些想法。一方面,我使用 sigmoid 激活函数和 MSE 作为误差函数,但互联网建议我宁愿将 softmax 用于输出层,并将交叉熵损失作为误差函数。现在我知道 softmax 是这个任务的一个很好的激活函数,因为你可以将输出视为一个概率向量。但是,虽然拥有它是一件好事,但这更像是一种方便,不是吗?更容易可视化?

但是当我查看 softmax 和 CEL 组合的导数是什么时(我的计划是一步计算,然后将最后一层的激活函数视为线性,而不是再次应用 softmax 导数),我发现:

δδ一世=-

(和一世作为最后一层的输入,一个热目标向量和预测向量)。

这与 MSE 导数相同。那么softmax + CEL在传播时究竟有什么好处,如果它们产生的梯度完全一样呢?

2个回答

简短的回答:更大的梯度

这不是 softmax 函数的导数。-是 softmax 函数和交叉熵损失的组合导数。交叉熵损失用于简化softmax函数的导数。最后,你最终会得到不同的渐变。就像您在使用 MSE 损失时忽略了 sigmoid 导数并且输出不同。与使用 sigmoid 和 MSE 相比,使用 softmax 和交叉熵损失具有不同的用途和好处。它将有助于防止梯度消失,因为 sigmoid 函数的导数仅在其非常小的空间中具有较大的值。它类似于使用不同的交叉熵损失,其中损失和 sigmoid 的组合导数是-.

带有 sigmoid 函数softmax 函数的交叉熵导数的信息我还建议对我的链接之外的交叉熵损失函数进行更多研究。

如果您查看交叉熵的定义(例如此处),您会看到它是为概率分布定义的(实际上,它来自信息论)。您还可以证明(二项式/伯努利)对数似然的最大化等效于交叉熵的最小化,即当您最小化交叉熵时,您实际上最大化了给定标记数据的参数的对数似然. 因此,softmax 的使用在理论上是成立的。

关于so​​ftmax前面的交叉熵损失函数的假定导数,即使该导数是正确的(我没有考虑过,现在也不想考虑),请注意,然后-取决于是否是概率向量或非归一化向量(可以取任意大的数字)。如果是一个概率向量并且一个单热编码向量(即也是一个概率向量),然后所有数量的-将在范围内[-1,1]. 然而,如果一世可以任意大,例如一世=10, 然后一世-一世[-10,-9]. 因此,如果传播的错误会有所不同不是概率向量。