2017-06-21 67 views
10

有人可以解释所有这些交叉熵损失之间的差异吗? keras在谈论交叉熵丛林

  • 二进制交叉熵
  • 范畴交叉熵
  • 稀疏范畴交叉熵

而tensorflow有

  • 使用SoftMax交叉熵随着Logits
  • 稀疏SOFTMAX交叉熵随着Logits
  • 乙状结肠交叉熵随着Logits

(也带来了一个问题:是否有任何交叉熵类型没有logits?

它们之间有什么区别和关系?他们的典型应用是什么?数学背景是什么?应该知道其他交叉熵类型吗?

回答

11

有一个定义为只是一个交叉(香农)熵:

你上市
H(P||Q) = - SUM_i P(X=i) log Q(X=i) 

所有功能都只是辅助功能它接受不同的方式来表示PQ

基本上有考虑3个主要方面:

  • 有要么2次候选条件的结果(二元分类)或更多。如果只有两个结果,那么Q(X=1) = 1 - Q(X=0)因此(0,1)中的单个浮点标识整个分布,这就是为什么二元分类中的神经网络具有单一输出(逻辑回归也如此)的原因。如果有K> 2个可能的结果之一具有以定义K个输出

  • 一个或者产生适当的概率(每个Q(X=...)一个)(这意味着Q(X=i)>=0SUM_i Q(X=i) =1或一个只产生“得分”,并具有一些固定的方法转化分数概率。例如,一个单一的实数可以被“转化为概率”通过取乙状结肠,和一组实数可以通过取它们的SOFTMAX等进行转化。

  • j使得P(X=j)=1 (有一个“真正的阶级”,目标是“硬”,像“这个形象代表一只猫”)或有“软目标”(如“我们60%肯定这是一只猫,但对于40%,它实际上是一只狗“)。

根据这三个方面,不同的辅助功能可用于:

        outcomes  what is in Q targets in P 
------------------------------------------------------------------------------- 
binary CE        2  probability   any 
categorical CE       >2  probability   soft 
sparse categorical CE     >2  probability   hard 
sigmoid CE with logits     2  score    any 
softmax CE with logits     >2  score    soft 
sparse softmax CE with logits   >2  score    hard 

在最后一个可以只使用“分类交叉熵”,因为这是它是如何数学定义,但是因为像硬目标或二进制分类这样的东西非常流行 - 现代ML库确实提供了这些辅助函数,以使事情变得更简单。特别是“叠加”S形和交叉熵可能在数值上不稳定,但如果知道这两种操作是一起使用的 - 它们的数字稳定版本(在TF中实现)相结合。

重要的是要注意,如果你应用了错误的帮助函数,代码通常仍然会执行,但结果将是错误的。例如,如果将softmax_ * helper应用于具有一个输出的二进制分类,则网络将被视为始终在输出处生成“True”。

最后要注意的 - 这样的回答认为分类,当你考虑多标签情况下(当一个单点可以有多个标签),如再PS总和不等于1则略有不同,一个尽管有多个输出单元,应该使用sigmoid_cross_entropy_with_logits。

+0

酷!如果我们知道keras损失函数代表的是什么,那将是非常好的。 –

+1

我使用与keras和TF兼容的命名约定,所以Keras“binary cross entropy”是我的表格中的“Binary CE”等等。 – lejlot