我正在尝试使用标准前馈 NN 进行标准 MNIST 数据集图像识别测试,但我的网络非常失败。现在我已经调试了很多,发现并修复了一些错误,但我还有一些想法。一方面,我使用 sigmoid 激活函数和 MSE 作为误差函数,但互联网建议我宁愿将 softmax 用于输出层,并将交叉熵损失作为误差函数。现在我知道 softmax 是这个任务的一个很好的激活函数,因为你可以将输出视为一个概率向量。但是,虽然拥有它是一件好事,但这更像是一种方便,不是吗?更容易可视化?
但是当我查看 softmax 和 CEL 组合的导数是什么时(我的计划是一步计算,然后将最后一层的激活函数视为线性,而不是再次应用 softmax 导数),我发现:
=-
(和作为最后一层的输入,一个热目标向量和预测向量)。
这与 MSE 导数相同。那么softmax + CEL在传播时究竟有什么好处,如果它们产生的梯度完全一样呢?