2015-12-03 44 views
1

我不完全理解如何计算交叉熵误差。由于某些负数的对数没有定义(或假想),并且神经网络的输出可能是一些负数(权重和偏差随机初始化),所以我经常得到NaN。我如何避免这种情况?交叉熵误差计算

例子:

output[] = {-0.78, -0.98, 0.78, -0.68}; 
target[] = {-1.0, -1.0, 1.0, 1.0}; 
error = ln(0.78) * 1.0 + ln(-0.68) * 1.0; 

回答

1

如果你的任务是一个二元分类我建议你改变目标值“-1”到“0”。在最后一层,输出层,你有两个神经元(每个类一个)。对于神经网络的输出,您应该使用softmax function,它为每个类别分配概率(意思是,您没有负值)。最后,每个实例的输出是对应于这两个概率中较大者的类的标签。

0

交叉熵的证明显示两个概率分布之间的量化差异。在机器学习的情况下,它会计算您的“目标”(真实值)与模型“输出”预测的值之间的差异。 概率可能仅在[0; 1]的范围内变化,并且在任何情况下可能都不是负数。负数在概率方面没有任何意义。