交叉熵损失函数原理详解-从理论到实践

2025-05-01 23

Image

交叉熵损失函数(Cross-Entropy Loss)是机器学习和深度学习中用于分类任务的核心损失函数,尤其在二分类和多分类问题中广泛应用。以下从原理、数学推导和实际应用三个层面进行详解:


1. 信息论基础

交叉熵源于信息论中的香农熵(Shannon Entropy),用于衡量事件的不确定性:

  • 熵(Entropy):描述一个概率分布 ( p ) 的不确定性,定义为:
    [
    H(p) = -\sum_{i} p(x_i) \log p(x_i)
    ]
  • 交叉熵(Cross-Entropy):衡量用分布 ( q ) 近似真实分布 ( p ) 时的平均信息量:
    [
    H(p, q) = -\sum_{i} p(x_i) \log q(x_i)
    ]
    在机器学习中,( p ) 是真实标签分布(通常是one-hot编码),( q ) 是模型预测的概率分布。

2. 分类任务中的交叉熵

二分类问题

  • 真实标签:( y \in {0, 1} )
  • 预测概率:( \hat{y} = \sigma(z) )(sigmoid输出)
  • 二分类交叉熵损失
    [
    L = - \left[ y \log \hat{y} + (1-y) \log (1-\hat{y}) \right]
    ]

    • 当 ( y=1 ),损失为 ( -\log \hat{y} )(预测概率 ( \hat{y} \to 1 ) 时损失趋近0)。
    • 当 ( y=0 ),损失为 ( -\log (1-\hat{y}) )(预测概率 ( \hat{y} \to 0 ) 时损失趋近0)。

多分类问题

  • 真实标签:one-hot编码 ( y = [0, \dots, 1, \dots, 0] )
  • 预测概率:softmax输出 ( \hat{y}i = \frac{e^{z_i}}{\sum{j} e^{z_j}} )
  • 多分类交叉熵损失
    [
    L = -\sum_{i=1}^{C} y_i \log \hat{y}_i
    ]
    其中 ( C ) 是类别数。由于 ( y_i ) 只有真实类别为1,其余为0,实际只需计算真实类别对应的预测概率的负对数。

3. 数学推导与梯度

以多分类为例,假设真实类别为 ( k ),损失函数为:
[
L = -\log \hat{y}_k
]
计算梯度(反向传播):

  1. Softmax梯度
    [
    \frac{\partial \hat{y}i}{\partial z_j} = \hat{y}_i (\delta{ij} - \hat{y}j)
    ]
    其中 ( \delta
    {ij} ) 是Kronecker delta(当 ( i=j ) 时为1,否则为0)。
  2. 损失对logits的梯度
    [
    \frac{\partial L}{\partial z_j} = \hat{y}_j - y_j
    ]
    这一简洁形式是交叉熵与softmax结合的优势,梯度仅取决于预测与真实的差异。

4. 为什么使用交叉熵?

  • 概率解释:直接优化模型输出概率与真实分布的差异。
  • 梯度友好:避免均方误差(MSE)在饱和区(如sigmoid两端)梯度消失的问题。
  • 与极大似然估计等价:最小化交叉熵等价于化对数似然函数。

5. 实际应用示例(PyTorch)

import torch.nn as nn

# 二分类
loss_fn = nn.BCELoss()  # 输入需经过sigmoid
# 或直接使用带sigmoid的版本
loss_fn = nn.BCEWithLogitsLoss()  # 输入为logits

# 多分类
loss_fn = nn.CrossEntropyLoss()  # 输入为logits(无需手动softmax)

6. 常见问题

  • 数值稳定性:计算 ( \log \hat{y} ) 时可能溢出,通常通过 log_softmaxBCEWithLogitsLoss 内置优化避免。
  • 类别不平衡:可通过加权交叉熵(weight 参数)或Focal Loss改进。

交叉熵通过衡量概率分布的差异,为分类模型提供了清晰且高效的优化目标。理解其原理有助于灵活调整损失函数以适应不同任务需求。

(本文地址:https://www.nzw6.com/6649.html)

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关