这是一个非常核心且经常让人混淆的问题!交叉熵损失(Cross-Entropy Loss)和KL散度(Kullback-Leibler Divergence)在形式上非常相似,而且在某些特定情况下,它们在优化目标上是等价的,但这并不意味着它们完全相同。我们来深入探讨一下。
1. 交叉熵损失 (Cross-Entropy Loss)
定义和目的:
交叉熵损失是机器学习中,特别是分类任务中最常用的一种损失函数。它衡量的是两个概率分布之间的差异。在分类任务中,这两个分布通常是:
- 真实标签的概率分布 §:通常是one-hot编码,表示某个样本属于某个类别的真实概率为1,其他为0。例如,对于一个猫的图片,真实标签分布可能是
[0, 1, 0](假设第二个是猫)。 - 模型预测的概率分布 (q):模型(通常是经过softmax层)输出的每个类别的概率。例如,模型预测猫的概率是0.8,狗是0.1,鸟是0.1,那么预测分布是
[0.1, 0.8, 0.1]。
公式:
对于离散概率分布 ppp 和 qqq,它们的交叉熵定义为:
H(p,q)=−∑i=1Npilog(qi)H(p, q) = -\sum_{i=1}^{N} p_i \log(q_i)H(p,q)=−∑i=1Npilog(qi)
其中:
- NNN 是类别的数量。
- pip_ipi 是真实分布中第 iii 个类别的概率。
- qiq_iqi 是预测分布中第 iii 个类别的概率。
在分类任务中的简化:
由于在标准的分类任务中,ppp 通常是one-hot编码,即只有一个 pk=1p_k=1pk=1 (真实类别),其他 pi=0p_i=0pi=0,所以公式简化为:
H(p,q)=−1⋅log(qtrue_class)+∑i≠true_class0⋅log(qi)=−log(qtrue_class)H(p, q) = -1 \cdot \log(q_{true\_class}) + \sum_{i \neq true\_class} 0 \cdot \log(q_i) = -\log(q_{true\_class})H(p,q)=−1⋅log(qtrue_class)+∑i=true_class0

最低0.47元/天 解锁文章
1372

被折叠的 条评论
为什么被折叠?



