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

Keras在谈论

  • 二进制交叉熵
  • 分类交叉熵
  • 稀疏分类交叉熵

  • 虽然TensorFlow具有
  • 带logits的Softmax交叉熵
  • 带有logits的稀疏softmax交叉熵
  • 带logits的Sigmoid交叉熵

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

    最佳答案

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

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

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

    基本上要考虑以下三点:
  • 有2种可能的结果(二进制分类)或更多。如果只有两个结果,则为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具有多个输出单元。

    关于tensorflow - Keras和TensorFlow中所有这些交叉熵损失之间有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44674847/

    10-12 19:39