1. 概述
本文将深入探讨交叉熵(Cross-Entropy)在机器学习中的定义与应用。
我们将从信息论中的熵(Entropy)概念出发,理解它在监督学习中的意义;
接着,我们会从单变量分布的熵出发,推导出双变量分布的交叉熵,并理解其作为两个概率分布之间差异度量的作用;
最后,我们讨论如何将交叉熵作为损失函数使用,并通过梯度下降法优化模型参数。
2. 熵的概念
2.1. 监督学习中的熵与标签
熵是信息论中的核心概念。在分类任务中,我们的目标是学习一个函数,将输入特征映射到有限的标签集合中。设标签集合为:
$$ C = {c_1, c_2, ..., c_n} $$
我们可以将这些标签视为模型输出的可能值,并计算模型输出标签的熵:
$$ H = - \sum_{i=1}^n p(c_i) \times \log p(c_i) $$
这个公式衡量了模型预测结果的不确定性。预测越模糊,熵越高。
2.2. 从确定性到概率性分类
在机器学习中,我们通常不会直接输出单一的标签,而是输出一个概率分布。这可以通过以下几种激活函数实现:
- Logistic 函数(用于二分类)
- Softmax 函数(用于多分类)
- 双曲正切函数(Tanh)(归一化后也可用于概率)
这些函数输出的是一个在 [0,1] 区间内的值或向量,可以解释为类别归属的概率分布。
2.3. 标签概率分布与熵
以 Softmax 函数为例,它不是直接输出一个最可能的类别,而是返回一个完整的概率分布:
$$ P(C) = {p(c_1), p(c_2), ..., p(c_n)} $$
我们可以基于这个分布计算熵:
$$ H = - \sum_{i=1}^n p(c_i) \times \log p(c_i) $$
该熵值反映了模型预测的不确定性。预测越集中(某个类别概率接近 1),熵越低;预测越模糊(多个类别概率接近),熵越高。
2.4. 分类任务中的熵示例
以逻辑回归为例,输出是一个介于 0 和 1 之间的值,表示属于类别 1 的概率:
$$ P(y=1|x) = \sigma(x) = \frac{1}{1 + e^{-x}} $$
对应的类别 0 的概率为:
$$ P(y=0|x) = 1 - \sigma(x) $$
此时,熵为:
$$ H = -\sigma(x) \log \sigma(x) - (1 - \sigma(x)) \log (1 - \sigma(x)) $$
当模型输出不确定(即概率接近 0.5)时,熵达到最大值。
2.5. 多个概率分布的比较
我们可以比较多个模型的输出分布。例如,比较两个逻辑回归模型:
- 模型 1: $\sigma_1(x) = \frac{1}{1 + e^{-x}}$
- 模型 2: $\sigma_2(x) = \frac{1}{1 + e^{-1 - 2x}}$
它们的熵不同,说明不同模型的预测分布具有不同的不确定性。
2.6. 不同熵之间的比较
如果我们再引入第三个模型:
- 模型 3: $\sigma_3(x) = \frac{1}{1 + e^{10 + 5x}}$
它的输出更偏向于某一类,因此熵更低。
这说明:如果我们想比较模型之间的预测效果,不能只看熵的大小,而需要一个统一的度量标准。
3. 交叉熵
3.1. 交叉熵的定义
交叉熵是衡量两个概率分布之间差异的指标。设真实分布为 $p(x)$,模型预测分布为 $q(x)$,则交叉熵为:
$$ H(p, q) = - \sum_{i=1}^n p(x_i) \times \log q(x_i) $$
注意:交叉熵不是对称的,即 $H(p, q) \ne H(q, p)$。
3.2. 交叉熵用于模型比较
以两个逻辑回归模型为例:
- 真实分布:$\sigma_1(x)$
- 预测分布:$\sigma_2(x)$
它们的交叉熵为:
$$ H(\sigma_1(x), \sigma_2(x)) = -\sigma_1(x) \log \sigma_2(x) - (1 - \sigma_1(x)) \log (1 - \sigma_2(x)) $$
交叉熵通常比两个分布各自的熵更高,说明它反映了两个分布之间的“距离”。
3.3. 顺序很重要
交叉熵的顺序不能颠倒。在监督学习中:
- 真实分布(标签)是第一个参数 $p(x)$
- 模型预测是第二个参数 $q(x)$
这是标准做法,顺序错误会导致梯度方向错误,影响训练效果。
4. 交叉熵作为损失函数
4.1. 交叉熵损失函数
在分类模型中,交叉熵被广泛用作损失函数。以逻辑回归为例,模型预测为:
$$ \hat{y} = \sigma(x) $$
交叉熵损失函数为:
$$ L(x, y) = -\frac{1}{n} \sum_{i=1}^n y_i \log \sigma(x_i) $$
这个函数衡量了模型预测与真实标签之间的差异。我们通过最小化这个损失函数来优化模型参数。
4.2. 交叉熵的梯度下降优化
逻辑回归模型的预测函数为:
$$ \sigma(x, \beta) = \frac{1}{1 + e^{-x \cdot \beta}} $$
其导数为:
$$ \sigma'(x, \beta) = \sigma(x, \beta)(1 - \sigma(x, \beta)) $$
我们可以推导出损失函数对参数 $\beta$ 的梯度:
$$ \nabla_{\beta} L(x, y) = -\frac{1}{n} \sum_{i=1}^n (y_i - \sigma_i) x_i $$
然后通过梯度下降法更新参数,逐步优化模型。
5. 总结
交叉熵是机器学习中非常重要的概念,具有以下关键作用:
✅ 衡量模型预测与真实标签之间的差异
✅ 作为分类模型的损失函数
✅ 支持通过梯度下降进行参数优化
✅ 可用于比较不同模型的预测效果
理解交叉熵的本质和使用方式,是掌握现代分类模型训练流程的关键一步。