Keras和TensorFlow中所有这些交叉熵损失之间有什么区别?
keras
machine-learning
tensorflow
5
0

所有这些交叉熵损失之间有什么区别?

Keras在谈论

  • 二元交叉熵
  • 分类交叉熵
  • 稀疏分类交叉熵

虽然TensorFlow具有

  • 带logits的Softmax交叉熵
  • 带logits的稀疏softmax交叉熵
  • 具有logits的S型交叉熵

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

参考资料:
Stack Overflow
收藏
评论
共 1 个回答
高赞 时间 活跃

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

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

在机器学习用法中, P是实际(基本事实)分布,而Q是预测分布。您列出的所有函数只是辅助函数 ,它们接受表示PQ不同方法。

基本上要考虑以下三点:

  • 有两种可能的结果(二进制分类)或更多。如果只有两个结果,则Q(X=1) = 1 - Q(X=0)因此(0,1)中的单个浮点数标识整个分布,这就是为什么二进制分类中的神经网络具有单个输出的原因(逻辑回归也是如此)。如果有K> 2个可能的结果,则必须定义K个输出(每个Q(X=...)

  • 一个要么产生适当的概率(即Q(X=i)>=0SUM_i Q(X=i) =1要么一个产生“分数”,并且具有将得分转换为概率的固定方法。例如,单个可以通过采用S形来将实数“转换为概率”,并且可以通过采用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”。

最后一点-这个答案考虑了分类 ,当您考虑多标签的情况(一个点可以有多个标签)时,它会略有不同,因为P不会合计为1,尽管有多个输出单位,但仍应使用sigmoid_cross_entropy_with_logits 。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号