交叉熵损失函数的不同定义


12

我从使用Neuronetworksanddeeplearning点com教程开始学习神经网络。特别是在第三章中,有一节关于交叉熵函数,并将交叉熵损失定义为:

C=-1个ñ∑X∑Ĵ(ÿĴln⁡一种Ĵ大号+(1个-ÿĴ)ln⁡(1个-一种Ĵ大号))

但是,阅读Tensorflow简介后,交叉熵损失定义为:

C=-1个ñ∑X∑Ĵ(ÿĴln⁡一种Ĵ大号)(使用与上面相同的符号时)

然后四处搜寻以查找发生了什么事情,我发现了另一组注释:(https://cs231n.github.io/linear-classify/#softmax-classifier),它使用了完全不同的交叉熵损失定义,尽管这时间用于softmax分类器,而不是神经网络。

有人可以告诉我这是怎么回事吗?为什么会有差异。人们将交叉熵损失定义为什么?是否有一些总体原则?


Answers:


18

这三个定义基本相同。

1)Tensorflow引入,

C=-1个ñ∑X∑Ĵ(ÿĴln⁡一种Ĵ)。

Ĵ=2

C=-1个ñ∑X(ÿ1个ln⁡一种1个+ÿ2ln⁡一种2)
∑Ĵ一种Ĵ=1个∑ĴÿĴ=1个
C=-1个ñ∑X(ÿ1个ln⁡一种1个+(1个-ÿ1个)ln⁡(1个-一种1个))

ÿÿķ

CX=-∑Ĵ(ÿĴln⁡一种Ĵ)=-(0+0+。。。+ÿķln⁡一种ķ)=-ln⁡一种ķ。

CX=-ln⁡(一种ķ)=-ln⁡(ËFķ∑ĴËFĴ)。

0

在第三章中,方程式(63)是应用于多个S型曲线(可能不等于1)的交叉熵,而在Tensoflow简介中,交叉熵是在softmax输出层上计算的。

正如dontloo所解释的,两个公式在两个类别上基本上是等效的,但在考虑两个以上类别时却不是。使用SoftMax有意义的独家类多类(即那些可能正时,有每个样品只有一个标签,其允许标签中的所述一个热编码),而(多个)S形可以用来描述一个多标记问题(即,与样品几个班级)。

也请参见其他答案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.