1

我想使用这个函数来计算神经网络的成本函数作为我的编程任务的一部分。 enter image description here神经网络获得NaN或Inf的成本函数的计算

其中K是标签的数量。因为我有5000个训练样例和10个标签,所以hTheta和y都是大小(5000,10)的矩阵。我使用八度和我得到我的成本函数为NaN。 (这也是期望的,因为hTheta和Y的所有值都是0或1,所以log(0)* 0将不被定义)。

但是我应该怎样计算成本?

注 - hTheta由神经网络上的前馈算法生成,y是输入标签。

回答

3

这里ý可以是1或0,但ħ不能为0或1。这是因为如果使用的是S形logisitic功能,然后ontaining 0(或1)将需要的参数sigmoid函数为-infinity(或+ infinity),这是不可能的。一个可能的原因可能是你必须选择学习率过高。尝试降低学习率。当我遇到同样的问题时,这对我有用。

1

一般的配方,以可靠地防止这种情况的发生是要么夹你的价值或增加一个小的值小量e=10e-6(或类似的东西),让你始终拥有log(x+e)x+e != 0。取决于你在做什么,你可能还需要将x限制在e和1之间。如果你将log组合成一个log中的一个分数,你再次在分母中加上e以避免任何分割通过零。

防止任何NAN行为比试图避免它更好。例如,对于RNN,您可能会发生梯度爆发 - 这种情况通常超出了您对超参数选择的控制范围 - 导致x=infinity然后在未捕获时产生NAN。