证明互信息是先验概率的上凸函数在python中仿真(P124302110 梅文科)
一、问题背景
在信息论中,互信息I(X;Y)描述了随机变量 Y 包含的关于随机变量 X 的信息量。信道容量的定义为C = max{p(xi)} I(X;Y)即通过优化输入分布 p(xi) 来获取信道的最大信息传输速率。要证明互信息I(X;Y) 是关于输入先验概率分布 p(xi) 的上凸函数,这是信息论中一个核心结论:上凸性保证了互信息存在唯一的全局最大值,即信道容量 C 是可实现的。
二、基本定义与公式
1. 互信息定义
离散信道下,互信息可表示为:
![]()
其中:
p(x):输入符号 x 的先验概率分布(待优化变量)
p(y|x):信道转移概率(固定,由信道特性决定)
p(y) = sumx p(x)p(y|x):输出符号 y 的边缘概率分布
2. 上凸函数定义
若对于任意分布 p1(x), p2(x) 和任意λ∈ [0,1],满足:
I(λp1+(1−λ)p2;Y)≥λI(p1;Y)+(1−λ)I(p2;Y),则称 I(X;Y) 是关于(p(x)的上凸函数。
三、证明过程
步骤 1:展开互信息表达式
将互信息拆分为熵与条件熵的形式:
I(X;Y) = H(Y) - H(Y|X)
其中:
H(Y∣X)=−∑x∑y\(H(Y|X) =p(x)p(y∣x)logp(y∣x):仅与信道转移概率 p(y|x)\有关,与先验分布 (p(x) 无关,因此 (H(Y|X)是常数。
因此,证明 I(X;Y)\是 p(x)的上凸函数,等价于证明 H(Y)是 p(x)的上凸函数。
步骤 2:分析 H(Y)的凸性
输出熵 H(Y)定义为:

根据凸函数的复合性质:
函数 f(z) = -z log z是关于 z 的严格上凸函数(二阶导数f′′(z)=(f''(z) = −1/zln2<0)
p(y)是关于p(x)的线性函数(p(y) = ∑xp(x) q(y|x))
根据 Jensen 不等式:对于严格上凸函数 f(z),若 z = ∑xλxzx,则:

步骤 3:还原互信息的凸性
由于 I(X;Y) = H(Y) - H(Y|X),且 H(Y|X)是常数,因此:

结论:互信息 I(X;Y)是关于先验概率分布 p(x)的上凸函数。
四、物理意义与应用
信道容量的存在性:上凸性保证了互信息 \(I(X;Y)\) 在概率分布空间上存在唯一的全局最大值,即信道容量C=maxp(x)I(X;Y)
优化方向:在求解信道容量时,只需找到使 I(X;Y)最大的输入分布 p(x),即可得到信道的最大信息传输速率。
直观理解:从右侧的三维图可以看到,平均互信息 I(X;Z) 随先验概率 p 和信道转移概率 q 变化时,呈现 “山峰” 形态,符合上凸函数的特征。
import numpy as np
import matplotlib.pyplot as plt
# 以2为底对数函数
def log2(x):
return np.log2(x) if x > 0 else 0
# 二元对称信道互信息计算函数
def mutual_info(p, q):
"""
p: P(X=1) 输入先验概率
q: BSC信道误码转移概率 P(Y≠X)
返回 I(X;Y) 单位bit
"""
# P(X=0)
p0 = 1 - p
# 输出边缘概率 P(Y=0), P(Y=1)
py0 = p0*(1-q) + p*q
py1 = p0*q + p*(1-q)
# H(Y)
Hy = -py0*log2(py0) - py1*log2(py1)
# H(Y|X) 与p无关,定值
Hyx = -(1-q)*log2(1-q) - q*log2(q)
I = Hy - Hyx
return I
# ----------------------绘图参数----------------------
# 先验概率p采样点 0~1避开0/1防止log2(0)报错
p_list = np.linspace(0.001, 0.999, 500)
# 多组信道误码率q,多条曲线对比
q_set = [0.1, 0.25, 0.4]
color_set = ["#1f77b4", "#ff7f0e", "#2ca02c"]
label_set = [f"q = {q}" for q in q_set]
plt.figure(figsize=(10,6), dpi=120)
for idx, q in enumerate(q_set):
I_vals = [mutual_info(p, q) for p in p_list]
plt.plot(p_list, I_vals, c=color_set[idx], label=label_set[idx], linewidth=2)
# 坐标轴与标注
plt.xlabel(r"先验概率 $p=P(X=1)$", fontsize=11)
plt.ylabel(r"互信息 $I(X;Y)$ (bit)", fontsize=11)
plt.title("BSC信道互信息随输入先验概率变化曲线(上凸函数验证)", fontsize=12)
plt.legend()
plt.grid(alpha=0.3)
plt.xlim(0,1)
plt.ylim(0, 1.02)
plt.show()

五、总结
本文通过将互信息拆解为熵与条件熵的形式,利用凸函数的复合性质和 Jensen 不等式,严格证明了互信息是先验概率的上凸函数。这一结论是信息论的核心基础,为信道容量的计算提供了理论保障。
更多推荐



所有评论(0)