为什么我的深度神经网络在全连接层中使用 softmax 缓慢下降,而不是在全连接层中没有 softmax?



我只是在构建一个深度神经网络,当全连接层中没有激活函数(softmax(时,我发现我的网络收敛得更快。但是当我添加这个softmax函数时,收敛性真的很差,甚至停止在非常高的损失中。顺便说一句。我使用交叉熵损失作为我的损失函数,rmsprop作为我的优化器。 没有上次软最大激活的神经网络

CrossEntropyLoss假定输入对数。因此,概率是行不通的,因为它们 - 作为最明显的问题 - 将动态范围从+/- inf大幅降低到<0;1>.

如果您希望网络的输出已经规范化,我强烈建议LogSoftmax()作为激活与NLLLoss相结合作为标准。

由于数值原因,使用普通softmax进行训练是有风险的;如果下游任务中需要概率,则可以很容易地对输出进行后处理。

如果你使用交叉熵作为模型的损失函数,你必须确保你的最终输出是有效的概率,即它们的总和为一,是非负的,并且在(0,1)

这是通过softmax激活来确保的,它将从最后一层的输出扩展到概率。如果省略此步骤,则您计算的损失不正确,不能代表模型的收敛/学习。

最新更新