我知道有很多关于交叉熵的解释,但我仍然感到困惑。
它只是一种描述损失函数的方法吗?我们可以使用梯度下降算法来找到使用损失函数的最小值吗?
答案 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
预测的分布与真实分布有多接近?这就是交叉熵损失决定的。使用此公式:
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)
的导数。
所以直接回答你原来的问题:
它只是一种描述损失函数的方法吗?
正确,交叉熵描述了两个概率分布之间的损失。它是许多可能的损失函数之一。
然后我们可以使用例如梯度下降算法来查找 最小。
是的,交叉熵损失函数可以用作梯度下降的一部分。
进一步阅读:我的一个other answers与TensorFlow有关。
答案 1 :(得分:3)
简而言之,交叉熵(CE)是您的预测值与真实标签的距离的量度。
这里的十字是指计算两个或多个要素/真实标签(如0、1)之间的熵。
“熵”一词本身是指随机性,因此它的大值意味着您的预测与真实标签相距甚远。
因此,更改权重以降低CE,从而最终减少预测标签与真实标签之间的差异,从而提高准确性。
答案 2 :(得分:1)
在上述帖子中,最简单形式的交叉熵损失称为 binary-cross-entropy (用于二进制分类的损失函数,例如,逻辑回归)。广义版本是分类交叉熵(用于多类分类问题的损失函数,例如神经网络)。
想法保持不变:
当训练实例的目标标签的模型计算(softmax)类概率接近于1时(例如,用一热编码表示),则相应的CCE损失减小到零< / p>
否则,它会随着与目标类别相对应的预测概率变小而增加。
下图说明了这一概念(从图中可以看出,当y和p都很高或同时都低时,即达成一致,则BCE变为低):
交叉熵与计算两个概率分布之间距离的相对熵或 KL散度密切相关。例如,在两个离散的pmfs之间,它们之间的关系如下图所示: