有人可以解释所有这些交叉熵损失之间的差异吗? keras在谈论交叉熵丛林
- 二进制交叉熵
- 范畴交叉熵
- 稀疏范畴交叉熵
而tensorflow有
- 使用SoftMax交叉熵随着Logits
- 稀疏SOFTMAX交叉熵随着Logits
- 乙状结肠交叉熵随着Logits
(也带来了一个问题:是否有任何交叉熵类型没有logits?)
它们之间有什么区别和关系?他们的典型应用是什么?数学背景是什么?应该知道其他交叉熵类型吗?
有人可以解释所有这些交叉熵损失之间的差异吗? keras在谈论交叉熵丛林
而tensorflow有
(也带来了一个问题:是否有任何交叉熵类型没有logits?)
它们之间有什么区别和关系?他们的典型应用是什么?数学背景是什么?应该知道其他交叉熵类型吗?
有一个定义为只是一个交叉(香农)熵:
你上市H(P||Q) = - SUM_i P(X=i) log Q(X=i)
所有功能都只是辅助功能它接受不同的方式来表示P
和Q
。
基本上有考虑3个主要方面:
有要么2次候选条件的结果(二元分类)或更多。如果只有两个结果,那么Q(X=1) = 1 - Q(X=0)
因此(0,1)中的单个浮点标识整个分布,这就是为什么二元分类中的神经网络具有单一输出(逻辑回归也如此)的原因。如果有K> 2个可能的结果之一具有以定义K个输出
一个或者产生适当的概率(每个Q(X=...)
一个)(这意味着Q(X=i)>=0
和SUM_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。
酷!如果我们知道keras损失函数代表的是什么,那将是非常好的。 –
我使用与keras和TF兼容的命名约定,所以Keras“binary cross entropy”是我的表格中的“Binary CE”等等。 – lejlot