一文理解什么是交叉熵损失函数以及它的作用

本文解释了交叉熵损失函数在深度学习中的作用,它是通过比较模型预测分布与真实标签分布的差异度量模型性能,损失越小表示模型预测越接近真实。文章还通过实例展示了如何用交叉熵评估模型预测效果,并说明其在机器学习中的广泛应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天看一个在深度学习中很枯燥但很重要的概念——交叉熵损失函数。

作为一种损失函数,它的重要作用便是可以将“预测值”和“真实值(标签)”进行对比,从而输出 loss 值,直到  loss 值收敛,可以认为神经网络模型训练完成。

那么这个所谓的“交叉熵”到底是什么,为什么它可以用来作为损失函数呢?

1、熵与交叉熵

“交叉熵”包含了“交叉”和“熵”这两部分。

关于“熵”的描述在理解熵的本质一文中有更详细的说明。总的来说,熵可以用来衡量一个随机变量的不确定性,数学上可表示为:

H(i) = - ∑ P(i) * log(P(i))

对于上面的公式,我们稍微变一下形,将负号和 log(P(i)) 看做一个变量,得到:

PP(i) = -log(p(i))

那么熵的公式就可以写作:H(i) = ∑ P(i) * PP(i)

此时熵的公式中,P(i) 和 PP(i) 是服从相同的概率分布。因此,熵H(i)就变成了事件 PP(i) 发生的数学期望,通俗理解为均值。

熵越大,表示事件发生的不确定性越大。而交叉熵是用于比较两个概率分布之间的差异,对于两个概率分布 P 和 Q 而言,

交叉熵定义为:

H(i) = ∑ P(i) * Q(i)

此时,P(i) 和 Q(i) 服从两种不同的概率分布,交叉熵的“交叉”就体现在这。

其中 P(i) 为真实分布,也就是训练过程中标签的分布;Q(i) 为预测分布,也就是模型每轮迭代输出的预测结果的分布。

交叉熵越小,表示两个概率分布越接近。

从而模型预测结果就越接近真实标签结果,说明模型训练收敛了。

关于更细节的数学原理,可以查看熵的本质,不过我们也可以不用深究,理解上述结论就可以。

2、交叉熵作为损失函数

假设有一个动物图像数据集,其中有五种不同的动物,每张图像中只有一只动物。

来源:https: //www.freeimages.com/

我们将每张图像都使用 one-hot 编码来标记动物。对one-hot编码不清楚的可以移步这里有个你肯定能理解的one-hot

上图是对动物分类进行编码后的表格,我们可以将一个one-hot 编码视为每个图像的概率分布,那么:

第一个图像是狗的概率分布是 1.0 (100%)。

对于第二张图是狐狸的概率分布是1.0(100%)。

以此类推,此时,每个图像的熵都为零。

换句话说,one-hot 编码标签 100% 确定地告诉我们每张图像有哪些动物:第一张图片不可能 90% 是狗,10% 是猫,因为它100%是狗。

因为这是训练的标签,是固定下来的确定分布。

现在,假设有一个神经网络模型来对这些图像进行预测,在神经网络执行完一轮训练迭代后,它可能会对第一张图像(狗)进行如下分类:

该分类表明,第一张图像越 40%的概率是狗,30%的概率是狐狸,5%的概率是马,5%的概率是老鹰,20%的概率是松鼠。

但是,单从图像标签上看,它100%是一只狗,标签为我们提供了这张图片的准确的概率分布。

那么,此时如何评价模型预测的效果呢?

我们可以计算利用标签的one-hot编码作为真实概率分布 P,模型预测的结果作为 Q 来计算交叉熵:

结果明显高于标签的零熵,说明预测结果并不是很好。

继续看另一个例子。

假设模型经过了改良,在完成一次推理或者一轮训练后,对第一张图得到了如下的预测,也就是说这张图有98%的概率是狗,这个标签的100%已经差的很少了。

我们依然计算交叉熵:

可以看到交叉熵变得很低,随着预测变得越来越准确,交叉熵会下降,如果预测是完美的,它就会变为零。

基于此理论,很多分类模型都会利用交叉熵作为模型的损失函数。

在机器学习中,由于多种原因(比如更容易计算导数),对数 log 的计算大部分情况下是使用基数 e 而不是基数 2 ,对数底的改变不会引起任何问题,因为它只改变幅度。

在图像分割任务中,面对类别不平衡的问题,一种常见的处理策略是对交叉熵损失函数进行权重调整,赋予少数类别更高的权重。具体操作如下:首先,对每个类别的样本进行统计,确定各类别的样本数量。然后,根据样本数量的反比,为每个类别设置一个权重系数。权重系数较高的类别在交叉熵损失函数中的影响更大,从而促使模型更加重视这些少数类别。 参考资源链接:[分类问题中的交叉熵损失函数及其应用](https://wenku.youkuaiyun.com/doc/6401ac86cce7214c316ec2c7?spm=1055.2569.3001.10343) 此外,还可以采用Focal Loss等改进版的交叉熵损失函数,这种方法通过引入一个调节参数γ,动态调整不同类别对损失函数的贡献度。当γ>0时,Focal Loss会降低易分类样本的权重,同时增加难分类样本(尤其是少数类别)的权重,从而减少类别不平衡对模型性能的影响。 另一种方法是使用在线硬样本挖掘(OHEM),这种方法通过迭代地选择损失最大的样本参与模型训练,强化模型对少数类别样本的分类能力。OHEM能够确保在每次迭代中,模型都重点关注那些对当前模型最难分类的样本,从而提高少数类别的识别准确性。 在实际应用中,可以根据具体的数据集任务需求选择合适的方法或者将多种策略结合起来使用,以达到最佳的平衡效果。例如,可以在训练过程中结合权重调整Focal Loss,这样既能保证少数类别得到足够的关注,也能避免将过多的注意力集中在易分类的样本上。通过这些策略,可以显著提高图像分割任务中模型对少数类别的识别能力。为了深入理解这些方法技术,推荐阅读《分类问题中的交叉熵损失函数及其应用》一文,该文详细探讨了交叉熵在分类问题中的作用,以及如何应用它来解决类别不平衡等问题。 参考资源链接:[分类问题中的交叉熵损失函数及其应用](https://wenku.youkuaiyun.com/doc/6401ac86cce7214c316ec2c7?spm=1055.2569.3001.10343)
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董董灿是个攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值