交叉熵刻画了两个概率分布之间的距离
但是神经网络的输出却不是一个概率分布
softmax回归可以把前向传播返回的结果变成一个概率分布的问题
在tf中,softmax回归参数被去掉了,只是一个额外的输出处理层
也就是说原来的输出被当成了置信度
从交叉熵的公式来来看H(A,B)!=H(B,A)也就是说这个函数是不对称的。
H(A,B)表达的是概率分布B来表达概率分布A的困难程度
当交叉熵作为损失函数的时候,A表示的是正确答案,而B表示的则是预测的答案
也就是说交叉熵的值越小,两个概率的分布也就越接近
例题:有一个三分类的问题,某个样例的正确答案是(1,0,0),某个模型经过softmax回归之后的预测答案是(0.5,0.4,0.1)
那么这个预测和正确答案之间的交叉熵是
如果另外一个模型的预测是(0.8,0.1,0.1),那么交叉熵为
可以看到区别呢,tf实现代码如下
cross_entropy = -tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-10,1.0)))
clip_by_value(y,up,dowm) 可以将一个张量中的数值限制到一个范围,避免出现log0这样的错误
把y限制到(up,down)之间