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


12

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

C=-1个ñXĴÿĴln一种Ĵ大号+1个-ÿĴln1个-一种Ĵ大号

但是,阅读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个ln1个-一种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.