深度学习:交叉熵损失(Cross Entropy Loss)

交叉熵损失(Cross Entropy Loss)

定义和数学表达

交叉熵损失是一种常用于评估概率分类模型性能的损失函数。它衡量的是模型预测的概率分布与真实分布之间的差异。交叉熵损失特别适用于分类任务中,尤其是多类分类问题。

数学上,交叉熵可以定义为:

[ $C(\mathbf{y}, \mathbf{\hat{y}}) = -\sum_{i=1}^{N} y_i \log(\hat{y}_i) $]

其中:

  • ( y\mathbf{y}y ) 是真实的标签分布,通常表示为one-hot编码向量。
  • ( $\mathbf{\hat{y}} $) 是模型预测的概率分布,由模型的输出层经过softmax函数转换得到。
  • ( N ) 是类别的总数。
  • ( yiy_iyi ) 是实际标签在第 ( iii ) 类的值(0或1),( $\hat{y}_i KaTeX parse error: Can't use function '\)' in math mode at position 1: \̲)̲ 是预测为第 \( i$ ) 类的概率。
特性

交叉熵损失的核心特性包括:

  • 敏感性:这个函数对正确分类的概率非常敏感。如果实际类别的预测概率低(即接近于0),那么损失将会非常高。
  • 非对称性:这种损失在处理极端概率(接近0或1)时表现出明显的非对称性。特别是当预测概率趋近于0时,损失会迅速增加。
交叉熵与信息论

在信息论中,交叉熵衡量的是使用错误的概率分布(模型预测)来编码事件(实际发生的类别)所需的额外信息量。理想情况下,我们希望模型的预测分布尽可能接近真实分布,这样交叉熵就最小,表示预测非常准确。

实例解释

考虑一个简单的三类分类问题,比如预测一张图片是猫、狗还是鸟。假设对于一个实例,真实标签是狗,模型的预测输出(经过softmax)为:
[$ \hat{y} = [0.1, 0.7, 0.2]$ ]
对应的真实标签的one-hot编码为:
[$ y = [0, 1, 0]$ ]

交叉熵损失计算为:
[ $C(y, \hat{y}) = -(0 \times \log(0.1) + 1 \times \log(0.7) + 0 \times \log(0.2)) = -\log(0.7) $]
[ C(y,y^)≈0.3567C(y, \hat{y}) \approx 0.3567C(y,y^)0.3567 ]

这表明模型对真实类别(狗)的预测概率为0.7时的损失为0.3567。如果模型对狗的预测概率更高,比如0.9,则损失会更低,显示为:
[ C(y,y^)=−log⁡(0.9)≈0.1054C(y, \hat{y}) = -\log(0.9) \approx 0.1054C(y,y^)=log(0.9)0.1054 ]

结论

交叉熵损失函数是监督学习中非常重要的工具,特别是在处理分类问题时。它不仅提供了一种衡量模型性能的方法,还通过梯度下降等优化算法指导了模型的学习过程。优化交叉熵损失可以帮助模型更好地学习区分不同类别,提高分类的准确率。

### 交叉熵损失概述 #### 定义 交叉熵损失是一种广泛应用于分类问题中的损失函数,在机器学习尤其是深度学习领域非常常见。该损失函数衡量的是模型预测的概率分布与真实标签之间的差异程度。 #### 公式推导 对于二元分类问题,使用的具体形式称为二元交叉熵损失(Binary Cross Entropy Loss, BCELoss),其表达式可以写作: \[ \text{BCE}(y,\hat y)=-(y\log(\hat y)+(1-y)\log(1-\hat y)) \] 这里 \(y\) 表示真实的类别标签(0 或者 1),而 \(\hat y\) 则代表由模型给出的对应类别的概率估计值[^1]。 当扩展到多分类情况时,则采用一般的交叉熵损失(CrossEntropyLoss): \[ H(p,q)=-\sum_{i} p(x_i)\cdot\log(q(x_i)) \] 其中\(p(x_i)\) 是实际发生的事件的真实分布;\(q(x_i)\) 是模型所预测出来的分布[^3]。 #### 计算方法 在实现上,比如 PyTorch 中 `nn.CrossEntropyLoss()` 实际内部集成了两个操作:先执行 LogSoftmax 来获得对数似然比,再应用 NLLLoss(Negative Log Likelihood Loss)来完成最终的损失计算过程。 ```python import torch.nn as nn criterion = nn.CrossEntropyLoss() output = model(input_data) loss = criterion(output, target_labels) ``` 这段代码展示了如何创建一个交叉熵损失实例并用于训练过程中评估模型输出与目标标签间的差距。 #### 应用场景 - **图像识别**:无论是简单的手写数字辨识还是复杂的物体检测任务都可以见到它的身影; - **自然语言处理**:文本分类、情感分析等NLP子域也大量依赖此类损失函数来进行监督学习; - **医疗诊断辅助系统**:帮助提高疾病早期筛查准确性等方面发挥重要作用[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

YRr YRr

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

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

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

打赏作者

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

抵扣说明:

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

余额充值