熵与交叉熵:从不确定性角度理解 KL 散度
从不确定性减少视角理解KL散度
【 Transformer 系列,故事从 d k \sqrt{d_k} dk说起】
LLM这么火,Transformer厥功甚伟,某天心血来潮~,再去看看!
它长这个样子: 深入浅出 Transformer
看完后,想起了老生常谈 d k \sqrt{d_k} dk问题,必须一探究竟:Transformer 中缩放点积注意力机制探讨:除以根号 dk 理由及其影响
感觉不够清楚,还是再Review下考研概率论,有了:基于考研概率论知识解读 Transformer:为何自注意力机制要除以根号 dk,中间会涉及初始化、标准化、Sofrmax函数,于是继续
【初始化相关】:深度学习中的常见初始化方法:原理、应用与比较
【标准化系列】: 数据为什么要进行标准化:Z-标准化的神奇蜕变,带出了关联知识点: 深度 “炼丹” 术之 Batch Normalization 与 Z - 标准化:开启数据的神秘转换
【Softmax复习】:Softmax 层反向传播梯度计算实例解析,中间想到了经常配套使用的交叉熵,于是梳理了交叉熵的前世今生KL 散度:多维度解读概率分布间的隐秘 “距离”
熵与交叉熵:从不确定性角度理解 KL 散度
机器学习、深度学习关于熵你所需要知道的一切
本文核心
- 由于熵表征不确定性大小,且基于真实分布 P P P 本身编码是最“有效”的方式(即不确定性最小),所以当使用其他分布 Q Q Q 来近似 P P P 进行编码时,必然会引入更多的不确定性,也就意味着交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 肯定会比熵 H ( P ) H(P) H(P) 大。
- D K L ( P ∣ ∣ Q ) = H ( P , Q ) − H ( P ) D_{KL}(P||Q)=H(P, Q)-H(P) DKL(P∣∣Q)=H(P,Q)−H(P),即:KL散度 = 交叉熵[H(P, Q)]-熵[H(Q)],鉴于交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 大于等于熵 H ( P ) H(P) H(P),KL散度 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q) 必然是非负的。
- 由于真实分布 其熵 H ( P ) H(P) H(P) 是一个固定值,所以最小化 KL 散度等价于最小化交叉熵 H ( P , Q ) H(P, Q) H(P,Q),即
min Q D K L ( P ∣ ∣ Q ) = min Q ( H ( P , Q ) − H ( P ) ) = min Q H ( P , Q ) \min_{Q} D_{KL}(P||Q)=\min_{Q}(H(P, Q)-H(P))=\min_{Q} H(P, Q) QminDKL(P∣∣Q)=Qmin(H(P,Q)−H(P))=QminH(P,Q)这就解释了为何机器/深度学习领域将交叉熵作为损失函数。
引言
在信息论与概率统计的交融领域,KL散度(Kullback - Leibler Divergence)扮演着举足轻重的角色。从不确定性减少的独特视角深入探究KL散度,不仅能揭示其本质内涵,还能为诸多实际应用提供清晰的理论支撑。而在这个过程中,理解熵、交叉熵以及它们之间的关系至关重要,尤其要明确熵是表达不确定性大小的量,并且交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 必然大于等于熵 H ( P ) H(P) H(P)。
一、信息熵:不确定性的精准度量
(一)信息熵的定义与本质
信息熵 H ( P ) H(P) H(P) 作为衡量概率分布 P P P 不确定性程度的核心指标,其数学表达式为: H ( P ) = − ∑ i P ( x i ) log P ( x i ) H(P)=-\sum_{i}P(x_i)\log P(x_i) H(P)=−i∑P(xi)logP(xi)其中, x i x_i xi 涵盖了随机变量所有可能的取值, P ( x i ) P(x_i) P(xi) 则代表取值 x i x_i xi 出现的概率。信息熵本质上量化了从分布 P P P 中随机抽取一个事件时,平均所蕴含的信息量。由于熵是表达不确定性大小的,分布的不确定性程度越高,对应的信息熵数值越大。
例如,考虑一个均匀的六面骰子,每个面向上的概率均为 1 6 \frac{1}{6} 61。在此情形下,每次掷骰子的结果都具有较高的不确定性,其信息熵也相对较大。这是因为在掷骰子之前,我们难以准确预测哪个面会朝上,每个结果都带来了较多的“意外”信息。反之,若骰子经过特殊处理,使得某一面出现的概率为1,而其他面为0,此时该骰子的结果几乎没有不确定性,信息熵也就趋近于0。
(二)信息熵的直观理解
可以将信息熵看作是对随机事件结果“混乱程度”或“不可预测性”的一种度量。以抛硬币为例,一枚标准的硬币,正面和反面出现的概率各为 0.5 0.5 0.5,其信息熵相对较高,因为在抛硬币之前,我们无法确切知晓结果是正面还是反面。而如果硬币被做了手脚,总是正面朝上,那么它的信息熵就为0,因为结果完全确定,没有任何不确定性。
二、交叉熵:近似分布下的不确定性测度
(一)交叉熵的定义与作用
当我们尝试使用另一个概率分布 Q Q Q 来近似真实的概率分布 P P P 时,交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 便成为了衡量这种近似效果的重要工具。其计算公式为: H ( P , Q ) = − ∑ i P ( x i ) log Q ( x i ) H(P, Q)=-\sum_{i}P(x_i)\log Q(x_i) H(P,Q)=−i∑P(xi)logQ(xi)交叉熵的意义在于,它反映了在采用分布 Q Q Q 对源于分布 P P P 的事件进行编码、预测或描述时,平均所需要的信息量。
由于熵表征不确定性大小,且基于真实分布 P P P 本身编码是最“有效”的方式(即不确定性最小),所以当使用其他分布 Q Q Q 来近似 P P P 进行编码时,必然会引入更多的不确定性,也就意味着交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 肯定会比熵 H ( P ) H(P) H(P) 大。
例如,假设我们正在预测明天的天气状况,真实的天气概率分布 P P P 为晴天 60 % 60\% 60%、多云 30 % 30\% 30%、下雨 10 % 10\% 10%。然而,由于某些原因,我们错误地认为概率分布 Q Q Q 是晴天 30 % 30\% 30%、多云 30 % 30\% 30%、下雨 40 % 40\% 40%。在这种情况下,基于错误的分布 Q Q Q 来预测明天天气,相较于基于真实分布 P P P 预测,必然会带来更多的不确定性,即交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 大于熵 H ( P ) H(P) H(P)。这表明使用不恰当的分布 Q Q Q 进行预测时,我们对预测结果更加不确定,需要更多的信息量来描述这种预测情况。
(二)交叉熵与信息熵的关系
交叉熵与信息熵密切相关,信息熵 H ( P ) H(P) H(P) 可以视为交叉熵 H ( P , P ) H(P, P) H(P,P) 的特殊情况,即当我们使用真实分布 P P P 自身来对事件进行编码或预测时的平均信息量。而交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 则衡量了使用近似分布 Q Q Q 替代真实分布 P P P 时,信息量的变化情况。由于熵代表了基于真实分布的最小不确定性,所以交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 总是大于等于 H ( P ) H(P) H(P)。
(三)举个🌰
二分类例子
假设我们要判断一封邮件是垃圾邮件还是正常邮件。真实情况中,邮件是垃圾邮件的概率为 P ( 垃圾邮件 ) = 0.8 P(\text{垃圾邮件}) = 0.8 P(垃圾邮件)=0.8,是正常邮件的概率为 P ( 正常邮件 ) = 0.2 P(\text{正常邮件}) = 0.2 P(正常邮件)=0.2,即真实分布 P P P 为: P = [ 0.8 , 0.2 ] P = [0.8, 0.2] P=[0.8,0.2]。
某邮件分类模型对邮件类别的预测概率分布 Q Q Q 为:认为是垃圾邮件的概率 Q ( 垃圾邮件 ) = 0.6 Q(\text{垃圾邮件}) = 0.6 Q(垃圾邮件)=0.6,是正常邮件的概率 Q ( 正常邮件 ) = 0.4 Q(\text{正常邮件}) = 0.4 Q(正常邮件)=0.4,即 Q = [ 0.6 , 0.4 ] Q = [0.6, 0.4] Q=[0.6,0.4]。
根据交叉熵公式 H ( P , Q ) = − ∑ i P ( x i ) log Q ( x i ) H(P, Q)=-\sum_{i}P(x_i)\log Q(x_i) H(P,Q)=−i∑P(xi)logQ(xi),计算过程如下:
H ( P , Q ) = − ( P ( 垃圾邮件 ) log Q ( 垃圾邮件 ) + P ( 正常邮件 ) log Q ( 正常邮件 ) ) = − ( 0.8 × log ( 0.6 ) + 0.2 × log ( 0.4 ) ) \begin{align*} H(P, Q)&= - (P(\text{垃圾邮件})\log Q(\text{垃圾邮件}) + P(\text{正常邮件})\log Q(\text{正常邮件}))\\ &= - (0.8\times\log(0.6) + 0.2\times\log(0.4)) \end{align*} H(P,Q)=−(P(垃圾邮件)logQ(垃圾邮件)+P(正常邮件)logQ(正常邮件))=−(0.8×log(0.6)+0.2×log(0.4))
以自然常数 e e e 为底计算对数(实际应用中也可根据需求选择以2为底等):
H ( P , Q ) ≈ − ( 0.8 × ( − 0.5108 ) + 0.2 × ( − 0.9163 ) ) = − ( − 0.4086 − 0.1833 ) = − ( − 0.5919 ) = 0.5919 \begin{align*} H(P, Q)&\approx - (0.8\times(-0.5108) + 0.2\times(-0.9163))\\ &= - (-0.4086 - 0.1833)\\ &= - (-0.5919)\\ &= 0.5919 \end{align*} H(P,Q)≈−(0.8×(−0.5108)+0.2×(−0.9163))=−(−0.4086−0.1833)=−(−0.5919)=0.5919
多分类例子
假设我们要对一幅图像进行分类,判断它是汽车、飞机、轮船、火车这四类交通工具中的哪一类。真实分布 P P P 如下:
- P ( 汽车 ) = 0.4 P(\text{汽车}) = 0.4 P(汽车)=0.4
- P ( 飞机 ) = 0.2 P(\text{飞机}) = 0.2 P(飞机)=0.2
- P ( 轮船 ) = 0.3 P(\text{轮船}) = 0.3 P(轮船)=0.3
- P ( 火车 ) = 0.1 P(\text{火车}) = 0.1 P(火车)=0.1
某图像分类模型给出的预测概率分布 Q Q Q 为:
- Q ( 汽车 ) = 0.3 Q(\text{汽车}) = 0.3 Q(汽车)=0.3
- Q ( 飞机 ) = 0.3 Q(\text{飞机}) = 0.3 Q(飞机)=0.3
- Q ( 轮船 ) = 0.2 Q(\text{轮船}) = 0.2 Q(轮船)=0.2
- Q ( 火车 ) = 0.2 Q(\text{火车}) = 0.2 Q(火车)=0.2
根据交叉熵公式 H ( P , Q ) = − ∑ i P ( x i ) log Q ( x i ) H(P, Q)=-\sum_{i}P(x_i)\log Q(x_i) H(P,Q)=−∑iP(xi)logQ(xi),计算过程如下:
H ( P , Q ) = − ( P ( 汽车 ) log Q ( 汽车 ) + P ( 飞机 ) log Q ( 飞机 ) + P ( 轮船 ) log Q ( 轮船 ) + P ( 火车 ) log Q ( 火车 ) ) = − ( 0.4 × log ( 0.3 ) + 0.2 × log ( 0.3 ) + 0.3 × log ( 0.2 ) + 0.1 × log ( 0.2 ) ) \begin{align*} H(P, Q)&= - (P(\text{汽车})\log Q(\text{汽车}) + P(\text{飞机})\log Q(\text{飞机}) + P(\text{轮船})\log Q(\text{轮船}) + P(\text{火车})\log Q(\text{火车}))\\ &= - (0.4\times\log(0.3) + 0.2\times\log(0.3) + 0.3\times\log(0.2) + 0.1\times\log(0.2)) \end{align*} H(P,Q)=−(P(汽车)logQ(汽车)+P(飞机)logQ(飞机)+P(轮船)logQ(轮船)+P(火车)logQ(火车))=−(0.4×log(0.3)+0.2×log(0.3)+0.3×log(0.2)+0.1×log(0.2))
以自然常数 e e e 为底计算对数:
H ( P , Q ) ≈ − ( 0.4 × ( − 1.2040 ) + 0.2 × ( − 1.2040 ) + 0.3 × ( − 1.6094 ) + 0.1 × ( − 1.6094 ) ) = − ( − 0.4816 − 0.2408 − 0.4828 − 0.1609 ) = − ( − 1.3661 ) = 1.3661 \begin{align*} H(P, Q)&\approx - (0.4\times(-1.2040) + 0.2\times(-1.2040) + 0.3\times(-1.6094) + 0.1\times(-1.6094))\\ &= - (-0.4816 - 0.2408 - 0.4828 - 0.1609)\\ &= - (-1.3661)\\ &= 1.3661 \end{align*} H(P,Q)≈−(0.4×(−1.2040)+0.2×(−1.2040)+0.3×(−1.6094)+0.1×(−1.6094))=−(−0.4816−0.2408−0.4828−0.1609)=−(−1.3661)=1.3661
在上述两个例子中,交叉熵的值反映了模型预测分布与真实分布之间的差异程度。值越小,说明模型预测分布与真实分布越接近,模型性能相对越好;值越大,则表明两者差异越大,模型可能需要进一步优化。
三、KL散度:不确定性变化的量化桥梁
(一)KL散度的定义推导
KL散度 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q) 通过信息熵和交叉熵的关系来定义,即: D K L ( P ∣ ∣ Q ) = H ( P , Q ) − H ( P ) D_{KL}(P||Q)=H(P, Q)-H(P) DKL(P∣∣Q)=H(P,Q)−H(P)
即:KL散度 = 交叉熵[H(P, Q)]-熵[H(Q)],鉴于交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 大于等于熵 H ( P ) H(P) H(P),KL散度 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q) 必然是非负的。从不确定性减少的角度深入剖析,KL散度精准地刻画了在使用分布 Q Q Q 近似分布 P P P 的过程中,相较于分布 P P P 本身所具有的不确定性,所额外增加的不确定性量(当 D K L ( P ∣ ∣ Q ) = 0 D_{KL}(P||Q)=0 DKL(P∣∣Q)=0 时,表示 Q Q Q 与 P P P 完全相同,没有额外增加不确定性)。
(二)KL散度的数值含义
若 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q) 的值较大,这明确表明使用分布 Q Q Q 近似分布 P P P 时,引入了大量额外的不确定性。以之前的天气预测为例,如果我们基于错误的分布 Q Q Q 来做预测,会发现预测结果的不确定性比基于真实分布 P P P 时更高,即我们对预测结果的把握程度降低。这清晰地反映出分布 Q Q Q 与真实分布 P P P 之间存在较大的差异。
反之,若 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q) 接近0,这意味着使用分布 Q Q Q 近似分布 P P P 时,几乎没有引入额外的不确定性。这表明分布 Q Q Q 与分布 P P P 非常接近,在实际应用中,例如在文本分类任务里,若真实文本类别分布为 P P P,模型预测的类别分布为 Q Q Q,当 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q) 趋近于0时,说明模型预测分布与真实分布高度吻合,模型对文本类别的预测不确定性与真实情况相近,也就意味着模型性能良好。
(三)举个🌰
交叉熵H(P,Q)
- 熵H(P)
计算 show case
下面的计算过程中,也是对上面结论的一个验证,即:交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 肯定会比熵 H ( P ) H(P) H(P) 大
-
二分类例子
- 定义概率分布:
假设在一个判断用户是否点击广告的场景中,真实的点击与未点击的概率分布 P P P 为:点击概率 P ( 点击 ) = 0.2 P(\text{点击}) = 0.2 P(点击)=0.2,未点击概率 P ( 未点击 ) = 0.8 P(\text{未点击}) = 0.8 P(未点击)=0.8。
某个预测模型给出的概率分布 Q Q Q 为:点击概率 Q ( 点击 ) = 0.3 Q(\text{点击}) = 0.3 Q(点击)=0.3,未点击概率 Q ( 未点击 ) = 0.7 Q(\text{未点击}) = 0.7 Q(未点击)=0.7。 - 计算熵 H ( P ) H(P) H(P):
根据熵的公式 H ( P ) = − ∑ i P ( x i ) log P ( x i ) H(P)=-\sum_{i}P(x_i)\log P(x_i) H(P)=−∑iP(xi)logP(xi),对于这个二分类问题:
H ( P ) = − P ( 点击 ) log P ( 点击 ) − P ( 未点击 ) log P ( 未点击 ) = − 0.2 × log ( 0.2 ) − 0.8 × log ( 0.8 ) \begin{align*} H(P)&=-P(\text{点击})\log P(\text{点击})-P(\text{未点击})\log P(\text{未点击})\\ &=-0.2\times\log(0.2)-0.8\times\log(0.8) \end{align*} H(P)=−P(点击)logP(点击)−P(未点击)logP(未点击)=−0.2×log(0.2)−0.8×log(0.8)
以自然常数 e e e 为底计算:
H ( P ) ≈ − 0.2 × ( − 1.6094 ) − 0.8 × ( − 0.2231 ) ≈ 0.3219 + 0.1785 ≈ 0.5004 \begin{align*} H(P)&\approx - 0.2\times(-1.6094)-0.8\times(-0.2231)\\ &\approx0.3219 + 0.1785\\ &\approx0.5004 \end{align*} H(P)≈−0.2×(−1.6094)−0.8×(−0.2231)≈0.3219+0.1785≈0.5004 - 计算交叉熵 H ( P , Q ) H(P, Q) H(P,Q):
根据交叉熵公式 H ( P , Q ) = − ∑ i P ( x i ) log Q ( x i ) H(P, Q)=-\sum_{i}P(x_i)\log Q(x_i) H(P,Q)=−∑iP(xi)logQ(xi):
H ( P , Q ) = − P ( 点击 ) log Q ( 点击 ) − P ( 未点击 ) log Q ( 未点击 ) = − 0.2 × log ( 0.3 ) − 0.8 × log ( 0.7 ) \begin{align*} H(P, Q)&=-P(\text{点击})\log Q(\text{点击})-P(\text{未点击})\log Q(\text{未点击})\\ &=-0.2\times\log(0.3)-0.8\times\log(0.7) \end{align*} H(P,Q)=−P(点击)logQ(点击)−P(未点击)logQ(未点击)=−0.2×log(0.3)−0.8×log(0.7)
以自然常数 e e e 为底计算:
H ( P , Q ) ≈ − 0.2 × ( − 1.2040 ) − 0.8 × ( − 0.3567 ) ≈ 0.2408 + 0.2854 ≈ 0.5262 \begin{align*} H(P, Q)&\approx - 0.2\times(-1.2040)-0.8\times(-0.3567)\\ &\approx0.2408+0.2854\\ &\approx0.5262 \end{align*} H(P,Q)≈−0.2×(−1.2040)−0.8×(−0.3567)≈0.2408+0.2854≈0.5262 - 计算KL散度 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q):
由 D K L ( P ∣ ∣ Q ) = H ( P , Q ) − H ( P ) D_{KL}(P||Q)=H(P, Q)-H(P) DKL(P∣∣Q)=H(P,Q)−H(P),可得:
D K L ( P ∣ ∣ Q ) = 0.5262 − 0.5004 = 0.0258 D_{KL}(P||Q)=0.5262 - 0.5004 = 0.0258 DKL(P∣∣Q)=0.5262−0.5004=0.0258 - 结果分析:
计算得到的KL散度 D K L ( P ∣ ∣ Q ) = 0.0258 D_{KL}(P||Q)=0.0258 DKL(P∣∣Q)=0.0258,表明预测模型的分布 Q Q Q 与真实分布 P P P 存在一定差异。KL散度值越小,说明预测分布与真实分布越接近,模型的预测效果相对越好。在此例中,模型还有优化空间,以减小与真实分布的差异。
- 定义概率分布:
-
多分类例子
- 定义概率分布:
假设在一个水果分类任务中,要区分苹果、香蕉、橙子和梨,真实的概率分布 P P P 为:
P ( 苹果 ) = 0.3 P(\text{苹果}) = 0.3 P(苹果)=0.3, P ( 香蕉 ) = 0.2 P(\text{香蕉}) = 0.2 P(香蕉)=0.2, P ( 橙子 ) = 0.4 P(\text{橙子}) = 0.4 P(橙子)=0.4, P ( 梨 ) = 0.1 P(\text{梨}) = 0.1 P(梨)=0.1。
某分类模型给出的预测概率分布 Q Q Q 为:
Q ( 苹果 ) = 0.25 Q(\text{苹果}) = 0.25 Q(苹果)=0.25, Q ( 香蕉 ) = 0.25 Q(\text{香蕉}) = 0.25 Q(香蕉)=0.25, Q ( 橙子 ) = 0.35 Q(\text{橙子}) = 0.35 Q(橙子)=0.35, Q ( 梨 ) = 0.15 Q(\text{梨}) = 0.15 Q(梨)=0.15。 - 计算熵 H ( P ) H(P) H(P):
根据熵的公式 H ( P ) = − ∑ i P ( x i ) log P ( x i ) H(P)=-\sum_{i}P(x_i)\log P(x_i) H(P)=−i∑P(xi)logP(xi):
H ( P ) = − P ( 苹果 ) log P ( 苹果 ) − P ( 香蕉 ) log P ( 香蕉 ) − P ( 橙子 ) log P ( 橙子 ) − P ( 梨 ) log P ( 梨 ) = − 0.3 × log ( 0.3 ) − 0.2 × log ( 0.2 ) − 0.4 × log ( 0.4 ) − 0.1 × log ( 0.1 ) \begin{align*} H(P)&=-P(\text{苹果})\log P(\text{苹果})-P(\text{香蕉})\log P(\text{香蕉})-P(\text{橙子})\log P(\text{橙子})-P(\text{梨})\log P(\text{梨})\\ &=-0.3\times\log(0.3)-0.2\times\log(0.2)-0.4\times\log(0.4)-0.1\times\log(0.1) \end{align*} H(P)=−P(苹果)logP(苹果)−P(香蕉)logP(香蕉)−P(橙子)logP(橙子)−P(梨)logP(梨)=−0.3×log(0.3)−0.2×log(0.2)−0.4×log(0.4)−0.1×log(0.1)
以自然常数 e e e 为底计算:
H ( P ) ≈ − 0.3 × ( − 1.2040 ) − 0.2 × ( − 1.6094 ) − 0.4 × ( − 0.9163 ) − 0.1 × ( − 2.3026 ) ≈ 0.3612 + 0.3219 + 0.3665 + 0.2303 ≈ 1.2799 \begin{align*} H(P)&\approx - 0.3\times(-1.2040)-0.2\times(-1.6094)-0.4\times(-0.9163)-0.1\times(-2.3026)\\ &\approx0.3612 + 0.3219+0.3665+0.2303\\ &\approx1.2799 \end{align*} H(P)≈−0.3×(−1.2040)−0.2×(−1.6094)−0.4×(−0.9163)−0.1×(−2.3026)≈0.3612+0.3219+0.3665+0.2303≈1.2799 - 计算交叉熵 H ( P , Q ) H(P, Q) H(P,Q):
根据交叉熵公式 H ( P , Q ) = − ∑ i P ( x i ) log Q ( x i ) H(P, Q)=-\sum_{i}P(x_i)\log Q(x_i) H(P,Q)=−∑iP(xi)logQ(xi):
H ( P , Q ) = − P ( 苹果 ) log Q ( 苹果 ) − P ( 香蕉 ) log Q ( 香蕉 ) − P ( 橙子 ) log Q ( 橙子 ) − P ( 梨 ) log Q ( 梨 ) = − 0.3 × log ( 0.25 ) − 0.2 × log ( 0.25 ) − 0.4 × log ( 0.35 ) − 0.1 × log ( 0.15 ) \begin{align*} H(P, Q)&=-P(\text{苹果})\log Q(\text{苹果})-P(\text{香蕉})\log Q(\text{香蕉})-P(\text{橙子})\log Q(\text{橙子})-P(\text{梨})\log Q(\text{梨})\\ &=-0.3\times\log(0.25)-0.2\times\log(0.25)-0.4\times\log(0.35)-0.1\times\log(0.15) \end{align*} H(P,Q)=−P(苹果)logQ(苹果)−P(香蕉)logQ(香蕉)−P(橙子)logQ(橙子)−P(梨)logQ(梨)=−0.3×log(0.25)−0.2×log(0.25)−0.4×log(0.35)−0.1×log(0.15)
以自然常数 e e e 为底计算:
H ( P , Q ) ≈ − 0.3 × ( − 1.3863 ) − 0.2 × ( − 1.3863 ) − 0.4 × ( − 1.0498 ) − 0.1 × ( − 1.8971 ) ≈ 0.4159 + 0.2773 + 0.4199 + 0.1897 ≈ 1.3028 \begin{align*} H(P, Q)&\approx - 0.3\times(-1.3863)-0.2\times(-1.3863)-0.4\times(-1.0498)-0.1\times(-1.8971)\\ &\approx0.4159+0.2773+0.4199+0.1897\\ &\approx1.3028 \end{align*} H(P,Q)≈−0.3×(−1.3863)−0.2×(−1.3863)−0.4×(−1.0498)−0.1×(−1.8971)≈0.4159+0.2773+0.4199+0.1897≈1.3028 - 计算KL散度 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q):
由 D K L ( P ∣ ∣ Q ) = H ( P , Q ) − H ( P ) D_{KL}(P||Q)=H(P, Q)-H(P) DKL(P∣∣Q)=H(P,Q)−H(P),可得:
D K L ( P ∣ ∣ Q ) = 1.3028 − 1.2799 = 0.0229 D_{KL}(P||Q)=1.3028 - 1.2799 = 0.0229 DKL(P∣∣Q)=1.3028−1.2799=0.0229 - 结果分析:
计算得到的KL散度 D K L ( P ∣ ∣ Q ) = 0.0229 D_{KL}(P||Q)=0.0229 DKL(P∣∣Q)=0.0229,在多分类的水果分类任务中,该值反映了模型预测分布 Q Q Q 与真实分布 P P P 的差异程度。KL散度越小,说明模型预测分布与真实分布越接近,模型性能越好。此例中模型预测与真实分布有一定接近程度,但仍可通过优化提升模型性能,减小KL散度。
- 定义概率分布:
KL 散度原始公式计算 show case
-
二分类例子
- 定义概率分布:
在判断用户是否点击广告的场景中,真实分布 P P P 为:点击概率 P ( 点击 ) = 0.2 P(\text{点击}) = 0.2 P(点击)=0.2,未点击概率 P ( 未点击 ) = 0.8 P(\text{未点击}) = 0.8 P(未点击)=0.8。
预测模型的分布 Q Q Q 为:点击概率 Q ( 点击 ) = 0.3 Q(\text{点击}) = 0.3 Q(点击)=0.3,未点击概率 Q ( 未点击 ) = 0.7 Q(\text{未点击}) = 0.7 Q(未点击)=0.7。 - 根据KL散度原始公式计算:
KL散度公式为 D K L ( P ∣ ∣ Q ) = ∑ i P ( x i ) log P ( x i ) Q ( x i ) D_{KL}(P||Q)=\sum_{i}P(x_i)\log\frac{P(x_i)}{Q(x_i)} DKL(P∣∣Q)=i∑P(xi)logQ(xi)P(xi),对于此二分类问题, i i i 取值为“点击”和“未点击”。
D K L ( P ∣ ∣ Q ) = P ( 点击 ) log P ( 点击 ) Q ( 点击 ) + P ( 未点击 ) log P ( 未点击 ) Q ( 未点击 ) = 0.2 × log 0.2 0.3 + 0.8 × log 0.8 0.7 \begin{align*} D_{KL}(P||Q)&=P(\text{点击})\log\frac{P(\text{点击})}{Q(\text{点击})}+P(\text{未点击})\log\frac{P(\text{未点击})}{Q(\text{未点击})}\\ &=0.2\times\log\frac{0.2}{0.3}+0.8\times\log\frac{0.8}{0.7} \end{align*} DKL(P∣∣Q)=P(点击)logQ(点击)P(点击)+P(未点击)logQ(未点击)P(未点击)=0.2×log0.30.2+0.8×log0.70.8
以自然常数 e e e 为底进行计算:
0.2 × log 0.2 0.3 + 0.8 × log 0.8 0.7 ≈ 0.2 × ( − 0.4055 ) + 0.8 × ( 0.1335 ) ≈ − 0.0811 + 0.1068 ≈ 0.0257 \begin{align*} &0.2\times\log\frac{0.2}{0.3}+0.8\times\log\frac{0.8}{0.7}\\ \approx&0.2\times(-0.4055)+0.8\times(0.1335)\\ \approx& - 0.0811 + 0.1068\\ \approx&0.0257 \end{align*} ≈≈≈0.2×log0.30.2+0.8×log0.70.80.2×(−0.4055)+0.8×(0.1335)−0.0811+0.10680.0257 - 结果说明:
通过原始公式计算得到的KL散度 D K L ( P ∣ ∣ Q ) ≈ 0.0257 D_{KL}(P||Q)\approx0.0257 DKL(P∣∣Q)≈0.0257 ,与使用交叉熵和熵相减方法计算出的结果(之前计算为 0.0258 0.0258 0.0258 ,存在微小差异是因为计算过程中保留小数位数导致)相近。它表明预测模型的分布 Q Q Q 与真实分布 P P P 存在一定差异,KL散度值越小,模型预测分布与真实分布越接近,模型预测效果相对越好。在此例中,模型仍有优化空间以减小与真实分布的差异。
- 定义概率分布:
-
多分类例子
- 定义概率分布:
在水果分类任务中,真实分布 P P P 为:
P ( 苹果 ) = 0.3 P(\text{苹果}) = 0.3 P(苹果)=0.3, P ( 香蕉 ) = 0.2 P(\text{香蕉}) = 0.2 P(香蕉)=0.2, P ( 橙子 ) = 0.4 P(\text{橙子}) = 0.4 P(橙子)=0.4, P ( 梨 ) = 0.1 P(\text{梨}) = 0.1 P(梨)=0.1。
预测模型的分布 Q Q Q 为:
Q ( 苹果 ) = 0.25 Q(\text{苹果}) = 0.25 Q(苹果)=0.25, Q ( 香蕉 ) = 0.25 Q(\text{香蕉}) = 0.25 Q(香蕉)=0.25, Q ( 橙子 ) = 0.35 Q(\text{橙子}) = 0.35 Q(橙子)=0.35, Q ( 梨 ) = 0.15 Q(\text{梨}) = 0.15 Q(梨)=0.15。 - 根据KL散度原始公式计算:
根据KL散度公式 D K L ( P ∣ ∣ Q ) = ∑ i P ( x i ) log P ( x i ) Q ( x i ) D_{KL}(P||Q)=\sum_{i}P(x_i)\log\frac{P(x_i)}{Q(x_i)} DKL(P∣∣Q)=i∑P(xi)logQ(xi)P(xi),这里 i i i 取值为“苹果”“香蕉”“橙子”“梨”。
D K L ( P ∣ ∣ Q ) = P ( 苹果 ) log P ( 苹果 ) Q ( 苹果 ) + P ( 香蕉 ) log P ( 香蕉 ) Q ( 香蕉 ) + P ( 橙子 ) log P ( 橙子 ) Q ( 橙子 ) + P ( 梨 ) log P ( 梨 ) Q ( 梨 ) = 0.3 × log 0.3 0.25 + 0.2 × log 0.2 0.25 + 0.4 × log 0.4 0.35 + 0.1 × log 0.1 0.15 \begin{align*} D_{KL}(P||Q)&=P(\text{苹果})\log\frac{P(\text{苹果})}{Q(\text{苹果})}+P(\text{香蕉})\log\frac{P(\text{香蕉})}{Q(\text{香蕉})}+P(\text{橙子})\log\frac{P(\text{橙子})}{Q(\text{橙子})}+P(\text{梨})\log\frac{P(\text{梨})}{Q(\text{梨})}\\ &=0.3\times\log\frac{0.3}{0.25}+0.2\times\log\frac{0.2}{0.25}+0.4\times\log\frac{0.4}{0.35}+0.1\times\log\frac{0.1}{0.15} \end{align*} DKL(P∣∣Q)=P(苹果)logQ(苹果)P(苹果)+P(香蕉)logQ(香蕉)P(香蕉)+P(橙子)logQ(橙子)P(橙子)+P(梨)logQ(梨)P(梨)=0.3×log0.250.3+0.2×log0.250.2+0.4×log0.350.4+0.1×log0.150.1
以自然常数 e e e 为底进行计算:
≈ 0.3 × ( 0.1823 ) + 0.2 × ( − 0.2231 ) + 0.4 × ( 0.1335 ) + 0.1 × ( − 0.4055 ) ≈ 0.0547 − 0.0446 + 0.0534 − 0.0405 ≈ 0.0230 \begin{align*} &\approx0.3\times(0.1823)+0.2\times(-0.2231)+0.4\times(0.1335)+0.1\times(-0.4055)\\ &\approx0.0547 - 0.0446 + 0.0534 - 0.0405\\ &\approx0.0230 \end{align*} ≈0.3×(0.1823)+0.2×(−0.2231)+0.4×(0.1335)+0.1×(−0.4055)≈0.0547−0.0446+0.0534−0.0405≈0.0230 - 结果说明:
通过原始公式计算得到的KL散度 D K L ( P ∣ ∣ Q ) ≈ 0.0230 D_{KL}(P||Q)\approx0.0230 DKL(P∣∣Q)≈0.0230 ,与之前使用交叉熵和熵相减方法计算出的结果(之前计算为 0.0229 0.0229 0.0229 ,存在微小差异是因为计算过程中保留小数位数导致)相近。该值反映了在多分类的水果分类任务中,模型预测分布 Q Q Q 与真实分布 P P P 的差异程度。KL散度越小,模型预测分布与真实分布越接近,模型性能越好。此例中模型虽有一定接近程度,但仍可优化以进一步减小KL散度,提升模型性能。
- 定义概率分布:
四、最小化 KL 散度等价于最小化交叉熵
已知KL散度的计算公式为 D K L ( P ∣ ∣ Q ) = H ( P , Q ) − H ( P ) D_{KL}(P||Q)=H(P, Q)-H(P) DKL(P∣∣Q)=H(P,Q)−H(P),其中 H ( P ) H(P) H(P) 是分布 P P P 的熵, H ( P , Q ) H(P, Q) H(P,Q) 是分布 P P P 和 Q Q Q 的交叉熵 。
因为 H ( P ) = − ∑ i P ( x i ) log P ( x i ) H(P)=-\sum_{i}P(x_i)\log P(x_i) H(P)=−i∑P(xi)logP(xi),这里 P ( x i ) P(x_i) P(xi) 是分布 P P P 中事件 x i x_i xi 发生的概率,且对于给定的分布 P P P,其熵 H ( P ) H(P) H(P) 是一个固定值(因为分布 P P P 确定后, P ( x i ) P(x_i) P(xi) 就确定了, H ( P ) H(P) H(P) 的计算结果也就确定了)。所以最小化 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q) 就等价于最小化 H ( P , Q ) − H ( P ) H(P, Q)-H(P) H(P,Q)−H(P) 。由于 H ( P ) H(P) H(P) 为常数,设 C = H ( P ) C = H(P) C=H(P),那么最小化 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q) 可表示为:
min Q D K L ( P ∣ ∣ Q ) = min Q ( H ( P , Q ) − C ) \min_{Q} D_{KL}(P||Q)=\min_{Q}(H(P, Q)-C) QminDKL(P∣∣Q)=Qmin(H(P,Q)−C)
又因为常数 C C C 不影响求最小值的过程(对于函数 f ( Q ) = H ( P , Q ) − C f(Q)=H(P, Q)-C f(Q)=H(P,Q)−C, min Q f ( Q ) \min_{Q} f(Q) minQf(Q) 与 min Q ( H ( P , Q ) ) \min_{Q}(H(P, Q)) minQ(H(P,Q)) 的解是相同的),所以:
min Q D K L ( P ∣ ∣ Q ) = min Q H ( P , Q ) \min_{Q} D_{KL}(P||Q)=\min_{Q} H(P, Q) QminDKL(P∣∣Q)=QminH(P,Q)
这就说明了最小化 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q) 等价于最小化交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 。用数学语言完整表述为:
已知 D K L ( P ∣ ∣ Q ) = H ( P , Q ) − H ( P ) D_{KL}(P||Q)=H(P, Q)-H(P) DKL(P∣∣Q)=H(P,Q)−H(P)其中 H ( P ) = − ∑ i P ( x i ) log P ( x i ) H(P)=-\sum_{i}P(x_i)\log P(x_i) H(P)=−i∑P(xi)logP(xi) 为定值,那么 min Q D K L ( P ∣ ∣ Q ) = min Q ( H ( P , Q ) − H ( P ) ) = min Q H ( P , Q ) \min_{Q} D_{KL}(P||Q)=\min_{Q}(H(P, Q)-H(P))=\min_{Q} H(P, Q) QminDKL(P∣∣Q)=Qmin(H(P,Q)−H(P))=QminH(P,Q)
五、实际应用
(一)机器学习领域
在机器学习中,模型训练的核心目标之一是使模型的预测分布 Q Q Q 尽可能逼近真实数据分布 P P P。通过最小化KL散度,例如在变分自编码器(VAE)等模型中,能够有效降低模型预测的不确定性,从而提高模型的准确性和可靠性。由于交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 大于等于 H ( P ) H(P) H(P),在训练过程中,模型不断调整参数,使得预测分布 Q Q Q 逐渐接近真实分布 P P P,KL散度随之减小,模型对数据的拟合能力和预测能力不断增强,同时也意味着模型预测所引入的额外不确定性在不断减少。
(二)信号处理领域
在信号处理领域,信号在传输过程中可能会受到噪声干扰等因素的影响,导致接收端接收到的信号特征分布 Q Q Q 偏离真实发送信号的分布 P P P。通过计算KL散度,可以精确衡量这种偏离所导致的额外不确定性增加程度,进而准确评估信号的失真程度。基于此,我们能够为信号的恢复和优化提供关键依据,采取相应的处理措施来减少信号失真,提高信号质量。因为交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 大于 H ( P ) H(P) H(P),所以KL散度能够准确反映出由于信号特征分布的改变所带来的不确定性增加,帮助我们更好地理解信号的变化情况。
从不确定性减少的视角深入理解KL散度,为我们提供了一种直观且强大的方式来衡量不同概率分布之间的差异,以及评估基于近似分布所做决策或预测的质量。其在信息论、机器学习、信号处理等众多领域的广泛应用,充分彰显了其在现代科学技术中的重要地位和价值。而明确熵与交叉熵的大小关系,更是深入理解KL散度及其应用的关键所在。