ARTICLE

交叉熵

交叉熵(Cross-Entropy)是信息论中的一个核心度量,用于衡量两个概率分布之间的差异程度。给定真实分布 p 与预测分布 q,交叉熵 H(p,q) 定义为: H(p,q) = - _x p(x) q(x) 。 从信息论的视角看,交叉熵表示使用基于分布 q 的编码方案来对来自分布 p 的事件进行编码时,所需的平均比特数。由于 q 并非真实分布,这一比特数

浏览 3 更新 2025-11-08

交叉熵(Cross-Entropy)是信息论中的一个核心度量,用于衡量两个概率分布之间的差异程度。给定真实分布 pp 与预测分布 qq,交叉熵 H(p,q)H(p,q) 定义为:H(p,q)=xp(x)logq(x) H(p,q) = -\sum_{x} p(x) \log q(x)

从信息论的视角看,交叉熵表示使用基于分布 qq 的编码方案来对来自分布 pp 的事件进行编码时,所需的平均比特数。由于 qq 并非真实分布,这一比特数必然大于或等于真实分布 pp H(p)H(p),两者之差即为KL散度H(p,q)=H(p)+DKL(pq) H(p,q) = H(p) + D_{KL}(p \parallel q) 。交叉熵因此可被直观地理解为"真实熵加上因分布偏差而产生的额外编码代价"。

1. 数学定义与性质

ppqq 为定义在同一样本空间 X\mathcal{X} 上的两个离散概率分布,交叉熵的数学表达式为:

H(p,q)=xXp(x)logq(x)H(p,q) = -\sum_{x \in \mathcal{X}} p(x) \log q(x)

对于连续分布,求和号换为积分号:H(p,q)=Xp(x)logq(x)dx H(p,q) = -\int_{\mathcal{X}} p(x) \log q(x) \, dx 。需要注意的是,这里的对数底数决定了交叉熵的单位:底数为2时单位为比特(bit),底数为ee时单位为纳特(nat),底数为10时单位为哈特(hart)。在机器学习实践中,通常以自然对数或二进制对数为默认选择。

交叉熵具有以下基本性质:

  • 非负性:由于 0p(x)10 \le p(x) \le 10q(x)10 \le q(x) \le 1logq(x)0\log q(x) \le 0,故 H(p,q)0H(p,q) \ge 0。当且仅当分布 pp 退化为某一确定性事件时交叉熵为零。
  • 不对称性H(p,q)H(q,p) H(p,q) \neq H(q,p) 一般而言成立,这一点与KL散度的不对称性一脉相承。因此在应用中必须明确区分"真实分布"与"预测分布"的角色。
  • 下界性:由吉布斯不等式(Gibbs' Inequality),H(p,q)H(p) H(p,q) \ge H(p) ,等号成立当且仅当 p=qp = q 几乎处处成立。这一性质表明,任何偏离真实分布的预测都会引入额外的编码代价。
  • 凸性:对于固定 ppH(p,q) H(p,q) qq 的凸函数,这一性质在优化中至关重要——它保证了通过梯度下降寻找最优 qq 时不会陷入局部最优的困扰,全局最优解能够被稳定地收敛到。

2. 交叉熵与机器学习

交叉熵在机器学习领域,尤其是分类问题中,扮演着不可替代的角色。其核心地位源于两个方面:概率解释与优化便利性。

2.1 交叉熵损失函数

在监督学习中,设真实标签的one-hot编码为 pp(即正确类别对应概率为1,其余为0),模型输出的预测概率分布为 qq。此时交叉熵退化为负对数似然(Negative Log-Likelihood):

H(p,q) = -\log q(\text{true_class})

这一形式的损失函数被称为交叉熵损失(Cross-Entropy Loss)或对数损失(Log Loss)。对于二分类问题,其表达式为:

L=[ylogy^+(1y)log(1y^)]L = -\bigl[y \log \hat{y} + (1-y) \log (1-\hat{y})\bigr]

其中 y{0,1}y \in \{0,1\} 为真实标签,y^[0,1]\hat{y} \in [0,1] 为模型预测为正类的概率。从统计学的角度看,最小化交叉熵损失等价于最大似然估计——这一等价关系赋予交叉熵以深厚的统计理论基础,而非仅仅是工程上的经验选择。

2.2 相对于均方误差的优势

均方误差(Mean Squared Error, MSE)相比,交叉熵在分类任务中具有显著优势。考虑使用SigmoidSoftmax作为输出激活函数的神经网络:当模型完全预测错误时(如真实标签为1、预测概率趋近于0),MSE的梯度趋近于0,导致学习停滞(梯度弥散);而交叉熵的梯度在同样情形下仍保持较大幅度,从而持续驱动参数更新。这一特性使得交叉熵成为深度学习中分类问题的标准损失函数,几乎取代了MSE在分类场景中的地位。

2.3 Softmax交叉熵

对于多分类问题,Softmax函数将模型输出的logits转换为概率分布:

qj=ezjk=1Kezkq_j = \frac{e^{z_j}}{\sum_{k=1}^{K} e^{z_k}}

结合交叉熵损失后,对logits zjz_j 的梯度具有极为简洁的形式:

Lzj=qjpj\frac{\partial L}{\partial z_j} = q_j - p_j

这一梯度形式——预测概率与真实概率之差——既是反向传播算法高效运转的关键,也为交叉熵损失提供了直观的"纠错"解释:当预测概率高于真实概率时,梯度为正,驱动logits下降;反之亦然。这种线性纠错机制使得神经网络在训练过程中能够根据偏差的大小自动调整学习步幅,大幅提升了训练的稳定性和效率。

3. 交叉熵与KL散度的关系

交叉熵、熵与KL散度三者构成信息论中最为紧密的概念三角:

H(p,q)=H(p)+DKL(pq)H(p,q) = H(p) + D_{KL}(p \parallel q)

这一关系式揭示了交叉熵的双重角色。在最大似然估计(MLE)的框架下,最小化交叉熵等价于最大化对数似然,而等价于最小化KL散度。因此,机器学习中普遍使用的"最小化交叉熵"实质上是在寻找一个与经验分布KL散度最小的模型分布——这也是信息论为统计学习提供的深层理论根基。

与KL散度相比,交叉熵在实际计算中更具操作性:KL散度要求知道真实分布 pp 的熵 H(p)H(p),而后者在许多场景中难以直接计算。但由于在优化过程中 H(p)H(p) 相对于模型参数为常数,最小化交叉熵与最小化KL散度完全等价。这也是实践中普遍采用交叉熵而非KL散度作为损失函数的原因——两者在优化层面等价,但交叉熵的计算更为直接,无需额外求解真实分布的熵值。

4. 应用场景

交叉熵的应用远超分类任务本身,遍及多个学科领域:

  • 深度学习分类:从前馈网络到卷积神经网络(CNN),从循环神经网络(RNN)到Transformer架构,交叉熵损失是绝大多数分类任务的默认选择。无论是图像识别中的ResNet、自然语言处理中的BERT,还是语音识别中的端到端模型,交叉熵都占据着损失函数的中心位置。
  • 自然语言处理语言模型通过最小化下一个token预测的交叉熵进行训练,其输出的困惑度(Perplexity)即为交叉熵的指数变换:PPL=eH(p,q) \text{PPL} = e^{H(p,q)} 。困惑度越低,说明模型对下一个词的预测越准确,这一指标已成为大语言模型评估的核心标准之一。
  • 对抗训练与生成模型生成对抗网络(GAN)的判别器本质上是一个二分类器,其优化目标即为交叉熵损失。变分自编码器(VAE)的重建损失项同样采用交叉熵。在扩散模型中,噪声预测网络的训练目标也常与交叉熵有着深层关联。
  • 模型蒸馏:在知识蒸馏中,学生模型的训练目标不仅包括硬标签的交叉熵,还包含与教师模型softmax输出之间的交叉熵,以此传递"暗知识"——那些关于类别间相似度的细粒度信息,仅凭硬标签无法充分捕获。
  • 量子信息与统计力学:交叉熵在量子态断层扫描(Quantum State Tomography)中用于衡量真实量子态与重构态的接近程度;在统计力学中,它与自由能及变分推断的优化目标直接对应,成为连接信息论与物理学的纽带。

5. 局限与替代方案

尽管交叉熵在理论与实践中取得巨大成功,其本身亦存在局限:

  • 对噪声标签的敏感性:交叉熵损失对错误标注的样本赋予较大权重,在数据集存在标签噪声时可能导致过拟合。对称交叉熵(Symmetric Cross-Entropy)与广义交叉熵(Generalized Cross-Entropy)被提出以增强鲁棒性,其主要思路是通过对损失函数进行对称化处理或截断极端梯度,降低噪声样本的不良影响。
  • 缺乏边际控制:交叉熵倾向于推动模型"更加确信",即便在正确分类后仍持续增大logits幅度,可能削弱泛化性能。标签平滑(Label Smoothing)通过向真实标签分布中注入均匀噪声予以缓解,这一技巧在图像分类竞赛中被广泛采用,能够有效提升模型在测试集上的表现。
  • 不适用于排序任务:在信息检索与推荐系统中,交叉熵损失不能直接优化NDCG平均准确率(MAP)等排序指标,此时排序损失(Ranking Loss)或ListNet等替代方案更为合适。这些损失函数直接针对排序指标的上界或近似进行优化,能够获得比交叉熵更好的排序效果。

总体而言,交叉熵以其清晰的概率解释、稳定的优化曲面与广泛的适用性,成为信息论与机器学习之间最深刻的桥梁之一。从Shannon奠基信息论到当代大语言模型的训练,交叉熵始终是连接理论优雅性与实践有效性的核心纽带。