交叉熵为什么可以被用作损失函数
交叉熵为什么可以被用作损失函数
在机器学习中,交叉熵(Cross-Entropy)被广泛用作损失函数,尤其是在分类任务中。以下是其理论背景和直观解释:
1. 交叉熵的定义
交叉熵衡量两个概率分布P(真实分布)和Q(预测分布)之间的差异:
\[H(P, Q) = -\sum_{x} P(x) \log Q(x).\]- P(x) 是真实标签的概率分布(如 one-hot 编码)。
- Q(x) 是模型的预测概率分布。
目标:最小化交叉熵 H(P, Q) ,即让预测分布 Q 尽可能接近真实分布 P 。
2. 交叉熵与KL散度的关系
交叉熵可以分解为熵(Entropy)和KL散度(Kullback-Leibler Divergence)的和:
\[H(P, Q) = \underbrace{H(P)}_{\text{固定值}} + D_{KL}(P \parallel Q).\]- 熵H(P):真实分布P的固有不确定性(固定值,与模型无关)。
- KL散度: $D_{KL}(P \parallel Q)$:衡量Q偏离P的程度。
结论:
最小化交叉熵H(P, Q)等价于最小化KL散度即让Q逼近P 。
因此,交叉熵直接量化了模型预测与真实分布的差异。
3. 交叉熵与最大似然估计(MLE)
在分类任务中,交叉熵损失与最大似然估计等价。
- 似然函数:假设样本独立同分布(i.i.d.),模型的似然函数为:
其中 P(x_i) 是真实标签0或1。
负对数似然:取对数并取负号后得到:
\[-\log \mathcal{L} = -\sum_{i} P(x_i) \log Q(x_i),\]这正是交叉熵的表达式。
结论:
最小化交叉熵损失等价于最大化模型对数据的似然概率(即极大似然估计)。
4. 交叉熵的实践优势
除了理论上的合理性,交叉熵在实践中还有以下优点:
(1) 梯度计算友好
以分类任务为例:
\[\frac{\partial H(P, Q)}{\partial \text{logits}} = Q(x) - P(x).\]
假设使用 Softmax 输出预测概率Q(x),交叉熵的梯度为:梯度仅取决于预测概率与真实标签的差异,避免了均方误差MSE可能出现的梯度消失问题。
(2) 适用于概率输出
- 交叉熵天然适用于概率模型(如逻辑回归、神经网络中的 Softmax 层)。
- 直接惩罚预测概率与真实标签的偏差,与分类目标高度一致。
(3) 对错误预测的强惩罚
- 当模型对某个类别的预测概率Q(x)很低,而真实标签P(x) = 1时,交叉熵会给出极大的损失值,迫使模型快速修正错误。
5. 交叉熵 vs. 均方误差(MSE)
在分类任务中,交叉熵通常优于 MSE:
- MSE 的问题:
- 梯度中包含 Q(x)(1 - Q(x)) 项,当预测概率接近 0 或 1 时,梯度趋于 0(梯度消失)。
- 对概率的惩罚不够直接,可能导致训练缓慢。
- 交叉熵的优势:
- 梯度直接反映预测误差,更新效率高。
- 更适合概率建模。
总结
交叉熵作为损失函数的核心原因是:
- 理论层面:等价于最小化 KL 散度,与最大似然估计一致。
- 实践层面:梯度计算高效,适合概率输出,对错误预测敏感。
在分类任务(如图像分类、文本分类)中,交叉熵是自然且高效的选择。
This post is licensed under CC BY 4.0 by the author.