You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

稀疏分类交叉熵损失的数学公式及推导解析求助

稀疏分类交叉熵损失:公式、推导与解析

1. 数学公式

对于单个样本,稀疏分类交叉熵损失的公式为:
$$
L = -\log\left(p_{y}\right)
$$
其中:

  • $y$ 是样本的真实类别索引(取值为 $0,1,...,C-1$,$C$ 代表总类别数)
  • $p_{y}$ 是模型对真实类别 $y$ 预测的概率值,由Softmax层输出得到:$p_{y} = \text{Softmax}(z_y) = \frac{e{z_y}}{\sum_{i=0}{C-1}e^{z_i}}$,$z_i$ 是模型最后一层的未归一化输出(即logits)

如果结合Softmax层展开,损失也可以写成更便于计算的形式:
$$
L = \log\left( \sum_{j=0}{C-1}e{z_j} \right) - z_y
$$

2. 数学推导

2.1 交叉熵的基础定义

交叉熵的核心是衡量真实概率分布与预测概率分布的差异,公式为:
$$
H(q,p) = -\sum_{i=0}^{C-1} q_i \log(p_i)
$$
这里 $q_i$ 是真实分布中类别 $i$ 的概率,$p_i$ 是预测分布中类别 $i$ 的概率。

2.2 稀疏标签下的简化

稀疏分类场景中,真实标签是单个整数 $y$,对应的真实分布 $q$ 是典型的one-hot分布:只有类别 $y$ 的概率为1,其余类别概率全为0,即:
$$
q_i =
\begin{cases}
1, & i = y \
0, & i \neq y
\end{cases}
$$

把这个分布代入交叉熵公式,求和项里只有 $i=y$ 的项有意义,其余项都为0,因此交叉熵直接简化为:
$$
H(q,p) = -\log(p_y)
$$

2.3 结合Softmax的展开推导

模型输出的logits需要通过Softmax转换为合法的概率分布,将 $p_y$ 的Softmax表达式代入简化后的交叉熵公式,就能得到展开形式:
$$
L = -\log\left( \frac{e{z_y}}{\sum_{j=0}{C-1}e^{z_j}} \right) = \log\left( \sum_{j=0}{C-1}e{z_j} \right) - z_y
$$
这个形式在工程实现中更常用,能避免直接计算Softmax时可能出现的数值溢出或下溢问题。

3. 解析说明

  • 适配稀疏标签场景:稀疏分类交叉熵无需将整数标签转换为one-hot向量,在类别数极多的场景下能大幅节省内存,同时简化数据预处理流程。
  • 损失的直观含义:损失值越小,说明模型对真实类别的预测概率越接近1,预测越准确;当预测概率为1时,损失为0;若预测概率趋近于0,损失会趋近于无穷大,对错误预测有很强的惩罚作用。
  • 数值稳定性优化:实际计算时采用展开后的形式,通过先计算log-sum-exp再减去真实类别的logit,能有效避免因logit数值过大或过小导致的计算精度问题。
  • 与普通交叉熵的关联:稀疏分类交叉熵是普通交叉熵在稀疏标签下的特例,当标签为one-hot格式时,两者的计算结果完全一致,仅输入标签的格式不同。

内容的提问来源于stack exchange,提问作者sourav roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 10:15:33