什么是交叉熵?

时间:2017-02-01 21:38:08

标签: machine-learning cross-entropy

我知道有很多关于交叉熵的解释,但我仍然感到困惑。

它只是一种描述损失函数的方法吗?我们可以使用梯度下降算法来找到使用损失函数的最小值吗?

3 个答案:

答案 0 :(得分:178)

交叉熵通常用于量化两个概率分布之间的差异。通常,“真实”分布(您的机器学习算法试图匹配的分布)用单热分布表示。

例如,假设对于特定的训练实例,标签是​​B(可能的标签A,B和C中)。因此,此培训实例的单热分发是:

Pr(Class A)  Pr(Class B)  Pr(Class C)
        0.0          1.0          0.0

您可以将上述“真实”分布解释为训练实例具有0%概率为A类,100%概率为B类,0%概率为C类。

现在,假设您的机器学习算法预测了以下概率分布:

Pr(Class A)  Pr(Class B)  Pr(Class C)
      0.228        0.619        0.153

预测的分布与真实分布有多接近?这就是交叉熵损失决定的。使用此公式:

Cross entropy loss formula

p(x)是通缉概率,q(x)实际概率。总和超过A,B和C三类。在这种情况下,损失 0.479

H = - (0.0*ln(0.228) + 1.0*ln(0.619) + 0.0*ln(0.153)) = 0.479

这就是你的预测与真实分布的“错误”或“偏远”。

交叉熵是许多可能的损失函数中的一个(另一种流行的是SVM铰链损失)。这些损失函数通常写为J(θ)并且可以在梯度下降中使用,梯度下降是将参数(或系数)移向最佳值的迭代算法。在下面的等式中,您将J(theta)替换为H(p, q)。但请注意,您需要首先根据参数计算H(p, q)的导数。

gradient descent

所以直接回答你原来的问题:

  

它只是一种描述损失函数的方法吗?

正确,交叉熵描述了两个概率分布之间的损失。它是许多可能的损失函数之一。

  

然后我们可以使用例如梯度下降算法来查找   最小。

是的,交叉熵损失函数可以用作梯度下降的一部分。

进一步阅读:我的一个other answers与TensorFlow有关。

答案 1 :(得分:3)

简而言之,交叉熵(CE)是您的预测值与真实标签的距离的量度。

这里的十字是指计算两个或多个要素/真实标签(如0、1)之间的熵。

“熵”一词本身是指随机性,因此它的大值意味着您的预测与真实标签相距甚远。

因此,更改权重以降低CE,从而最终减少预测标签与真实标签之间的差异,从而提高准确性。

答案 2 :(得分:1)

在上述帖子中,最简单形式的交叉熵损失称为 binary-cross-entropy (用于二进制分类的损失函数,例如,逻辑回归)。广义版本是分类交叉熵(用于多类分类问题的损失函数,例如神经网络)。

想法保持不变:

  1. 当训练实例的目标标签的模型计算(softmax)类概率接近于1时(例如,用一热编码表示),则相应的CCE损失减小到零< / p>

  2. 否则,它会随着与目标类别相对应的预测概率变小而增加。

下图说明了这一概念(从图中可以看出,当y和p都很高或同时都低时,即达成一致,则BCE变为低):

enter image description here

交叉熵与计算两个概率分布之间距离的相对熵 KL散度密切相关。例如,在两个离散的pmfs之间,它们之间的关系如下图所示:

enter image description here