Keras和TensorFlow中所有这些交叉熵损失之间的区别是什么?
所有这些交叉熵损失之间的区别是什么 凯拉斯说的是Keras和TensorFlow中所有这些交叉熵损失之间的区别是什么?,tensorflow,machine-learning,keras,loss-function,cross-entropy,Tensorflow,Machine Learning,Keras,Loss Function,Cross Entropy,所有这些交叉熵损失之间的区别是什么 凯拉斯说的是 二进制交叉熵 分类交叉熵 稀疏分类交叉熵 而TensorFlow Softmax与logits的交叉熵 稀疏softmax与logits的交叉熵 带logits的Sigmoid交叉熵 它们之间的区别和关系是什么?它们的典型应用是什么?数学背景是什么?还有其他的交叉熵类型吗?有没有不带logits的交叉熵类型?只有一个交叉(香农)熵定义为: H(P||Q) = - SUM_i P(X=i) log Q(X=i) 在机器学习使用中,p是实际
- 二进制交叉熵
- 分类交叉熵
- 稀疏分类交叉熵
- Softmax与logits的交叉熵
- 稀疏softmax与logits的交叉熵
- 带logits的Sigmoid交叉熵
H(P||Q) = - SUM_i P(X=i) log Q(X=i)
在机器学习使用中,p
是实际(基本真理)分布,Q
是预测分布。您列出的所有函数都是辅助函数,它接受不同的方式来表示P
和Q
基本上有三点需要考虑:
- 有两种或更多可能的结果(二元分类)。如果只有两个结果,那么
因此(0,1)中的一个浮点数可以识别整个分布,这就是为什么二元分类中的神经网络只有一个输出(逻辑回归也是如此)。如果有K>2个可能的结果,则必须定义K个输出(每个Q(X=1)=1-Q(X=0)
)Q(X=…)
- 要么产生适当的概率(意味着
和Q(X=i)>=0
,要么只产生一个“分数”,并有一些固定的方法将分数转换为概率。例如,一个实数可以“转换为概率”通过使用S形,一组实数可以通过使用其softmax等进行转换SUM_i Q(X=i)=1
- 有
这样的j
(有一个“真正的类”,目标是“硬的”,比如“这个图像代表一只猫”)或者有“软的目标”(比如“我们60%确定这是一只猫,但40%的目标实际上是一只狗”)p(X=j)=1
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库确实提供了这些额外的帮助函数,使事情更简单。特别是“堆叠”sigmoid和cross-entropy在数值上可能是不稳定的,但如果你知道这两个操作是同时应用的,那么它们的组合在数值上是稳定的(在TF中实现)
需要注意的是,如果应用了错误的helper函数,代码通常仍会执行,但结果将是错误的。例如,如果将softmax_*helper应用于具有一个输出的二进制分类,则您的网络将被视为始终在输出处生成“True”
作为最后一个注释——这个回答考虑了<强>分类< /强>,在考虑<强>多标签>情况下(当单个点可以有多个标签时)略有不同。,因为Ps的和不等于1,尽管有多个输出单位,但应使用sigmoid交叉熵和logits。
只有一个交叉(香农)熵定义为:H(P||Q) = - SUM_i P(X=i) log Q(X=i)
在机器学习使用中,p
是实际(基本真理)分布,Q
是预测分布。您列出的所有函数都是辅助函数,它们接受不同的方式来表示p
和Q
基本上有三点需要考虑:
- 有两种或两种以上的可能结果(二元分类)。如果只有两种结果,那么
因此(0,1)中的一个浮点数可以识别整个分布,这就是二元分类中的神经网络具有单一输出(逻辑回归也是如此)的原因如果有K>2个可能的结果,则必须定义K个输出(每个Q(X=1)=1-Q(X=0)
)Q(X=…)
- 要么产生适当的概率(意味着
和Q(X=i)>=0
,要么只产生一个“分数”,并有一些固定的方法将分数转换为概率。例如,一个实数可以“转换为概率”通过使用S形,一组实数可以通过使用其softmax等进行转换SUM_i Q(X=i)=1
- 有
这样的j
(有一个“真正的类”,目标是“硬的”,比如“这个图像代表一只猫”)或者有“软的目标”(比如“我们60%确定这是一只猫,但40%的目标实际上是一只狗”)p(X=j)=1
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库确实提供了这些额外的帮助函数,使事情更简单。特别是“堆叠”sigmoid和cross-entropy在数值上可能是不稳定的,但如果你知道这两个操作是同时应用的,那么它们的组合在数值上是稳定的(在TF中实现)
需要注意的是,如果应用了错误的helper函数,代码通常仍会执行,但结果将是错误的。例如,如果将softmax_*helper应用于具有一个输出的二进制分类,则您的网络将被视为始终在输出处生成“True”
最后一点,这个答案考虑了分类,它是sl