稳定的Softmax函数返回错误的输出

问题描述 投票:0回答:1

我实现了Softmax函数,后来发现必须稳定才能使其数值稳定(duh)。现在,它再次不稳定,因为即使从我的向量中减去max(x),给定的向量值仍然太大而不能成为e的幂。这是我用来确定错误的代码的图片,矢量是向前传播的示例输出矢量:

enter image description here

我们可以清楚地看到值太大了,我得到的是这些很小的数字,而不是概率,这会导致很小的误差,从而导致梯度消失,最终使网络无法学习。

python numpy math neural-network softmax
1个回答
0
投票

您完全正确,只是翻译softmax的数学定义可能会使它不稳定,这就是为什么您必须在进行任何计算之前减去x的最大值(顺便说一下,max(x)只是示例中的0 )。

您的实现是正确的,并且消失/爆炸梯度是一个独立的问题,您可能会遇到该问题,这取决于您打算使用哪种神经网络。

© www.soinside.com 2019 - 2024. All rights reserved.