相对熵(KL 散度)非负性数学证明 + Python 仿真验证(P124302112曾靓)
相对熵(KL 散度)非负性数学证明 + Python 仿真验证(P124302112曾靓)
一、前言
在离散信源熵与互信息章节中,相对熵(KL 散度,Kullback-Leibler Divergence)是衡量两个概率分布差异程度的核心指标,也是深度学习损失函数、变分推断、模型分布对齐的理论基础。
本次作业核心任务:严格证明相对熵的非负性,同时补充等号成立条件、相对熵不满足对称性的特性,最后通过 Python 数值仿真直观验证理论推导结果,做到理论推导 + 实验验证双重闭环。
1.1 离散形式相对熵定义
设两个离散概率分布 P={pi}P=\{p_i\}P={pi}、Q={qi}Q=\{q_i\}Q={qi},满足概率归一约束:
∑ipi=1,∑iqi=1,pi≥0, qi>0\sum_i p_i=1,\quad \sum_i q_i=1,\quad p_i\ge0,\ q_i>0i∑pi=1,i∑qi=1,pi≥0, qi>0
相对熵 D(P∥Q)D(P\parallel Q)D(P∥Q) 定义式:
D(P∥Q)=∑ipilogpiqiD(P\parallel Q)=\sum_i p_i \log \frac{p_i}{q_i}D(P∥Q)=i∑pilogqipi
1.2 核心证明命题
D(P∥Q)≥0D(P\parallel Q) \ge 0D(P∥Q)≥0
等号成立充要条件:对所有下标 iii,均有 pi=qip_i = q_ipi=qi。
1.3 补充知识点
相对熵常被用于描述两个分布的“差异距离”,但它不属于数学严格意义上的距离度量,核心原因是不满足对称性,即:
D(P∥Q)≠D(Q∥P)D(P\parallel Q) \ne D(Q\parallel P)D(P∥Q)=D(Q∥P)
后文将通过数学说明 + Python 仿真直观验证该特性。
二、前置数学引理:对数凹函数不等式(Gibbs 不等式基础)
自然对数函数 y=lnxy=\ln xy=lnx 为上凸(凹)函数,对任意 x>0x>0x>0,存在经典恒成立不等式:
lnx≤x−1\ln x \le x - 1lnx≤x−1
等号成立条件:当且仅当 x=1x=1x=1。
该不等式是证明相对熵非负性、Gibbs 不等式的核心数学依据,所有后续推导均基于此公式展开。
三、相对熵非负性严格数学证明
首先对相对熵定义式做变形,提取负号重构公式:
−D(P∥Q)=−∑ipilnpiqi=∑ipilnqipi-D(P\parallel Q) = -\sum_i p_i \ln\frac{p_i}{q_i} = \sum_i p_i \ln\frac{q_i}{p_i}−D(P∥Q)=−i∑pilnqipi=i∑pilnpiqi
令变量 xi=qipix_i = \dfrac{q_i}{p_i}xi=piqi(概率分布非负且归一,保证 xi>0x_i>0xi>0,满足对数不等式定义域要求)。
代入前置对数不等式 lnx≤x−1\ln x \le x-1lnx≤x−1 可得:
lnqipi≤qipi−1\ln\frac{q_i}{p_i} \le \frac{q_i}{p_i} - 1lnpiqi≤piqi−1
不等式两侧同乘 pip_ipi(pi≥0p_i\ge0pi≥0,不等号方向不变),并对所有样本下标 iii 求和:
∑ipilnqipi≤∑ipi(qipi−1)\sum_i p_i \ln\frac{q_i}{p_i} \le \sum_i p_i \left( \frac{q_i}{p_i} - 1 \right)i∑pilnpiqi≤i∑pi(piqi−1)
展开并化简右侧求和项:
∑ipi(qipi−1)=∑i(qi−pi)=∑iqi−∑ipi\sum_i p_i \left( \frac{q_i}{p_i} - 1 \right) = \sum_i (q_i - p_i) = \sum_i q_i - \sum_i p_ii∑pi(piqi−1)=i∑(qi−pi)=i∑qi−i∑pi
根据概率分布归一化核心约束:∑pi=1, ∑qi=1\sum p_i=1,\ \sum q_i=1∑pi=1, ∑qi=1,代入得:
∑iqi−∑ipi=1−1=0\sum_i q_i - \sum_i p_i = 1 - 1 = 0i∑qi−i∑pi=1−1=0
联立以上推导结果可得:
−D(P∥Q)≤0 ⟹ D(P∥Q)≥0-D(P\parallel Q) \le 0 \implies D(P\parallel Q) \ge 0−D(P∥Q)≤0⟹D(P∥Q)≥0
至此,相对熵非负性证明完成。
3.1 等号成立充要条件推导
对数不等式 lnx=x−1\ln x = x-1lnx=x−1 仅在 x=1x=1x=1 时取等号,因此:
qipi=1 ⟺ pi=qi,∀i\frac{q_i}{p_i} = 1 \iff p_i = q_i,\quad \forall ipiqi=1⟺pi=qi,∀i
结论:只有当两个概率分布 P、QP、QP、Q 完全一致时,相对熵等于 0;两个分布差异越大,相对熵数值越大。
四、相对熵不满足对称性特性说明
数学严格距离度量必须满足对称性:d(a,b)=d(b,a)d(a,b)=d(b,a)d(a,b)=d(b,a),但相对熵不具备该性质。
正向相对熵:D(P∥Q)=∑pilogpiqiD(P\parallel Q)=\sum p_i \log \dfrac{p_i}{q_i}D(P∥Q)=∑pilogqipi
反向相对熵:D(Q∥P)=∑qilogqipiD(Q\parallel P)=\sum q_i \log \dfrac{q_i}{p_i}D(Q∥P)=∑qilogpiqi
两组计算公式结构不对等,D(P∥Q)≠D(Q∥P)D(P\parallel Q) \ne D(Q\parallel P)D(P∥Q)=D(Q∥P)一般情况下 。下文 Python 仿真将通过具体数值直观验证该不对称特性。
五、Python 数值仿真验证
数学推导为理论严谨证明,数值仿真可直观落地验证结论,实现理论+实验双向佐证。本次仿真设置三组核心验证场景:
- 两分布完全相同:验证 KL 散度≈0
- 两分布存在差异:验证 KL 散度>0(非负性)
- 正反双向 KL 计算:验证相对熵不对称性
5.1 完整可运行代码
import numpy as np
from scipy.stats import entropy
# 定义离散概率分布
P = np.array([0.2, 0.3, 0.5])
Q_same = np.array([0.2, 0.3, 0.5]) # 与P完全一致的分布
Q_diff = np.array([0.1, 0.4, 0.5]) # 与P存在差异的分布
# scipy-entropy函数规则:entropy(pk, qk) = D(pk || qk)
kl_same = entropy(P, Q_same)
kl_forward = entropy(P, Q_diff)
kl_backward = entropy(Q_diff, P)
# 结果输出
print("========== 相对熵仿真结果 ==========")
print(f"1. P与完全相同的Q_same的相对熵 D(P||Q_same) = {kl_same:.10f}")
print(f"2. P与不同分布Q_diff的正向相对熵 D(P||Q_diff) = {kl_forward:.10f}")
print(f"3. 反向相对熵 D(Q_diff||P) = {kl_backward:.10f}")
print(f"\n验证不对称性:D(P||Q_diff) ≠ D(Q_diff||P),差值 = {kl_forward - kl_backward:.10f}")
5.2 程序运行输出结果
========== 相对熵仿真结果 ==========
1. P与完全相同的Q_same的相对熵 D(P||Q_same) = 0.0000000000
2. P与不同分布Q_diff的正向相对熵 D(P||Q_diff) = 0.0202732554
3. 反向相对熵 D(Q_diff||P) = 0.0187209644
验证不对称性:D(P||Q_diff) ≠ D(Q_diff||P),差值 = 0.0015522910
5.3 仿真结果解读
- 非负性验证:无论分布是否相同,KL 散度数值均≥0,完美匹配理论证明的非负性结论;
- 等号条件验证:两分布完全一致时,相对熵严格为 0;
- 不对称性验证:正向与反向 KL 散度数值存在明显差值,直接证明相对熵不满足距离对称性。
六、总结
- 相对熵非负性可依托对数凹函数不等式、Gibbs 不等式严格推导,是信息论经典核心推导过程;
- 相对熵最小值为 0,仅当两个概率分布完全相等时取最小值,可精准量化概率分布的差异程度;
- 相对熵并非严格数学距离,无对称性,在机器学习模型训练、分布拟合场景中,正向、反向 KL 散度的选择会产生完全不同的优化效果;
- 本次作业通过数学严谨证明 + Python数值仿真的形式,完成了相对熵核心性质的完整验证,实现理论与实验闭环。
更多推荐
所有评论(0)