第7篇 熵、交叉熵与交叉熵损失的概念梳理及计算示例
- 一、熵(Entropy):衡量信息的不确定性
-
- [1.1 概念定义](#1.1 概念定义)
- [1.2 熵的计算示例](#1.2 熵的计算示例)
- 二、交叉熵(Cross-Entropy):衡量两个概率分布的差异
-
- [2.1 概念定义](#2.1 概念定义)
- [2.2 交叉熵的计算示例](#2.2 交叉熵的计算示例)
- [三、交叉熵损失(Cross-Entropy Loss):机器学习中的损失函数](#三、交叉熵损失(Cross-Entropy Loss):机器学习中的损失函数)
-
- [3.1 概念定义](#3.1 概念定义)
- [3.2 交叉熵损失的计算示例](#3.2 交叉熵损失的计算示例)
- 四、熵、交叉熵与交叉熵损失的关联总结
在机器学习、信息论等领域,熵、交叉熵及交叉熵损失是核心基础概念,三者层层递进、紧密关联。本文将从概念本质出发,清晰界定三者的含义,剖析其内在逻辑,并通过具体计算示例帮助理解,让抽象的理论变得直观可感。
一、熵(Entropy):衡量信息的不确定性
1.1 概念定义
熵是信息论中的核心概念,由香农(Shannon)提出,用于衡量一个随机变量取值的不确定性程度。简单来说,熵值越高,随机变量的不确定性就越大;熵值越低,不确定性就越小。当随机变量的取值确定无疑时(比如必然发生的事件),熵值为0;当随机变量所有取值的概率均等时,熵值达到最大。
对于离散型随机变量X,其可能的取值为x₁, x₂, ..., xₙ,对应的概率分布为P(X=xᵢ) = pᵢ(其中i=1,2,...,n,且Σpᵢ=1),则熵H(X)的计算公式为:
H(X) = -Σ[pᵢ · log(pᵢ)]
注:公式中的对数底数可根据场景选择(常见底数为2或e),底数不影响熵衡量不确定性的核心逻辑,仅影响熵的数值单位(底数为2时单位为比特,底数为e时单位为奈特)。
1.2 熵的计算示例
为了更直观理解,我们举两个典型示例,均采用底数为2的对数计算。
示例1:确定型随机变量
假设随机变量X表示"抛出一枚必然正面朝上的硬币的结果",其取值只有1种:正面(概率p₁=1)。
代入熵的计算公式:
H(X) = -[p₁·log₂(p₁)] = -[1·log₂(1)] = -[1·0] = 0
结论:确定型事件的熵为0,符合"不确定性为0"的直观认知。
示例2:均匀分布的随机变量
假设随机变量Y表示"抛出一枚均匀的硬币的结果",其取值有2种:正面(概率p₁=0.5)、反面(概率p₂=0.5)。
代入熵的计算公式:
H(Y) = -[p₁·log₂(p₁) + p₂·log₂(p₂)] = -[0.5·log₂(0.5) + 0.5·log₂(0.5)]
由于log₂(0.5) = -1,因此:
H(Y) = -[0.5·(-1) + 0.5·(-1)] = -[(-0.5) + (-0.5)] = -(-1) = 1 比特
结论:均匀分布的二值随机变量熵为1比特,此时不确定性最大。
示例3:非均匀分布的随机变量
假设随机变量Z表示"抛出一枚不均匀的硬币的结果",其取值为:正面(概率p₁=0.8)、反面(概率p₂=0.2)。
代入熵的计算公式:
H(Z) = -[0.8·log₂(0.8) + 0.2·log₂(0.2)] ≈ -[0.8·(-0.3219) + 0.2·(-2.3219)]
计算得:H(Z) ≈ -[(-0.2575) + (-0.4644)] = -(-0.7219) ≈ 0.72 比特
结论:非均匀分布的随机变量熵小于均匀分布时的熵,符合"概率越集中,不确定性越小"的认知(此例中正面概率更高,我们对结果的预判更明确,不确定性低于均匀硬币)。
二、交叉熵(Cross-Entropy):衡量两个概率分布的差异
2.1 概念定义
交叉熵同样是信息论中的重要概念,用于衡量两个概率分布P和Q之间的差异程度,其中P通常代表"真实概率分布"(比如数据的真实标签分布),Q代表"预测概率分布"(比如模型输出的预测标签分布)。
交叉熵的核心思想是:用预测分布Q来编码真实分布P所产生的平均编码长度。交叉熵值越小,说明两个分布的差异越小;交叉熵值越大,说明两个分布的差异越大。
对于离散型随机变量X,真实分布为P(X=xᵢ)=pᵢ,预测分布为Q(X=xᵢ)=qᵢ(i=1,2,...,n,Σpᵢ=1,Σqᵢ=1),则交叉熵H(P, Q)的计算公式为:
H(P, Q) = -Σ[pᵢ · log(qᵢ)]
注:1. 对数底数与熵的选择一致,通常为2或e;2. 交叉熵不满足对称性,即H(P, Q)≠H(Q, P),这也符合其"用预测分布编码真实分布"的定义逻辑。
2.2 交叉熵的计算示例
结合实际场景,以"二分类任务的标签分布"为例,说明交叉熵的计算过程(对数底数为2)。
示例1:真实分布与预测分布完全一致
假设某二分类任务中,样本的真实标签分布P为:正类(x₁)概率p₁=0.6,负类(x₂)概率p₂=0.4;模型预测的标签分布Q与P完全一致,即q₁=0.6,q₂=0.4。
代入交叉熵公式:
H(P, Q) = -[p₁·log₂(q₁) + p₂·log₂(q₂)] = -[0.6·log₂(0.6) + 0.4·log₂(0.4)]
计算得:log₂(0.6)≈-0.7369,log₂(0.4)≈-1.3219
H(P, Q)≈-[0.6·(-0.7369) + 0.4·(-1.3219)] ≈ -[(-0.4421) + (-0.5288)] = -(-0.9709)≈0.97 比特
此时交叉熵值较小,符合"分布一致时差异小"的结论。
示例2:真实分布与预测分布差异较大
沿用上述真实分布P(p₁=0.6,p₂=0.4),若模型预测分布Q为:q₁=0.2(正类概率极低),q₂=0.8(负类概率极高)。
代入交叉熵公式:
H(P, Q) = -[0.6·log₂(0.2) + 0.4·log₂(0.8)]
计算得:log₂(0.2)≈-2.3219,log₂(0.8)≈-0.3219
H(P, Q)≈-[0.6·(-2.3219) + 0.4·(-0.3219)] ≈ -[(-1.3931) + (-0.1288)] = -(-1.5219)≈1.52 比特
对比示例1,此例中交叉熵值更大,说明真实分布与预测分布的差异更显著。
示例3:单一样本的交叉熵计算(one-hot编码场景)
在分类任务中,单个样本的真实标签常以one-hot编码表示(即真实分布中只有一个类别概率为1,其余为0)。例如,某单一样本真实标签为"正类",其真实分布P为:p₁=1(正类),p₂=0(负类);模型预测分布Q为:q₁=0.7,q₂=0.3。
代入交叉熵公式:
H(P, Q) = -[1·log₂(0.7) + 0·log₂(0.3)] = -[log₂(0.7) + 0] ≈ -(-0.5146)≈0.51 比特
若模型预测q₁=0.3,q₂=0.7,则交叉熵为:
H(P, Q) = -[1·log₂(0.3) + 0·log₂(0.7)] ≈ -(-1.7369)≈1.74 比特
结论:对于单一样本(one-hot标签),交叉熵的计算可简化为"-log(预测正确类别的概率)",预测正确类别概率越高,交叉熵越小,模型预测越准确。
三、交叉熵损失(Cross-Entropy Loss):机器学习中的损失函数
3.1 概念定义
交叉熵损失是将交叉熵应用于机器学习任务的"损失函数",用于衡量模型预测结果与真实标签之间的误差,作为模型训练的优化目标(即通过最小化交叉熵损失,让模型的预测分布尽可能接近真实分布)。
从本质上看,交叉熵损失是交叉熵在"机器学习样本集"上的平均表现------对于单个样本,交叉熵就是其损失值;对于包含m个样本的数据集,交叉熵损失(也叫平均交叉熵损失)就是所有样本交叉熵的平均值。
假设数据集有m个样本,第i个样本的真实分布为Pᵢ,预测分布为Qᵢ,其交叉熵为H(Pᵢ, Qᵢ),则整个数据集的交叉熵损失L的计算公式为:
L = (1/m) · Σ[H(Pᵢ, Qᵢ)] = - (1/m) · Σ[Σ(pᵢⱼ · log(qᵢⱼ))]
其中,pᵢⱼ表示第i个样本中第j类别的真实概率,qᵢⱼ表示第i个样本中第j类别的预测概率。
注:在二分类任务中,常将对数底数设为e(此时交叉熵损失也叫"对数损失"),结合sigmoid激活函数,形成"sigmoid+交叉熵损失"的经典组合;在多分类任务中,结合softmax激活函数(保证预测概率和为1),形成"softmax+交叉熵损失"的组合。
3.2 交叉熵损失的计算示例
以"3个样本的二分类任务"为例,计算交叉熵损失(对数底数为e,即自然对数ln;样本真实标签为one-hot编码)。
已知数据集信息如下表:
| 样本序号 | 真实标签(one-hot) | 真实分布Pᵢ(正类概率,负类概率) | 模型预测分布Qᵢ(正类概率,负类概率) |
|---|---|---|---|
| 1 | 正类 | (1,0) | (0.8,0.2) |
| 2 | 负类 | (0,1) | (0.3,0.7) |
| 3 | 正类 | (1,0) | (0.6,0.4) |
计算步骤:
第一步:计算每个样本的交叉熵(损失值)
样本1:H(P₁, Q₁) = -[1·ln(0.8) + 0·ln(0.2)] = -ln(0.8) ≈ -(-0.2231) = 0.2231
样本2:H(P₂, Q₂) = -[0·ln(0.3) + 1·ln(0.7)] = -ln(0.7) ≈ -(-0.3567) = 0.3567
样本3:H(P₃, Q₃) = -[1·ln(0.6) + 0·ln(0.4)] = -ln(0.6) ≈ -(-0.5108) = 0.5108
第二步:计算交叉熵损失(所有样本损失的平均值)
L = (0.2231 + 0.3567 + 0.5108) / 3 ≈ 1.0906 / 3 ≈ 0.3635
结论:该数据集上模型的交叉熵损失约为0.3635,若模型优化后损失值降低,则说明预测效果提升。
四、熵、交叉熵与交叉熵损失的关联总结
-
三者的核心关联:熵是单个概率分布的"不确定性度量";交叉熵是两个概率分布(真实+预测)的"差异度量";交叉熵损失是交叉熵在机器学习样本集上的"平均化拓展",是模型优化的目标函数。
-
数学关系推导:对于真实分布P和预测分布Q,交叉熵H(P, Q)可分解为"P的熵H§"与"相对熵(KL散度)D_KL(P||Q)"之和,即:H(P, Q) = H§ + D_KL(P||Q)。其中,相对熵D_KL(P||Q)≥0,且仅当P=Q时D_KL(P||Q)=0。因此,最小化交叉熵损失等价于最小化相对熵,即让预测分布逼近真实分布(因为H§是真实分布的固有属性,与模型无关,优化过程中为常数)。
-
应用场景差异:熵常用于信息论中衡量信息不确定性(如数据的信息量);交叉熵常用于衡量两个分布的差异;交叉熵损失则专门用于机器学习任务(分类任务为主),指导模型参数更新,提升预测准确性。