假设周末你要请朋友来家里吃饭,凉菜(拍黄瓜或凉拌木耳)和热菜(红烧肉或清蒸鱼)都还没定,你握着菜单站在厨房里发愁——这种“两道菜一起想”的纠结程度,就是信息论里的联合熵。而当你先拍板了凉菜,热菜的选择范围往往会瞬间缩小(拍黄瓜清爽,配红烧肉正合适),这种“定完一道后另一道还剩多少纠结”,就是条件熵。 信息论用这两个概念精确量化“多重选择的不确定性”,并揭示了一条迷人的规律:整桌菜的纠结 = 先定凉菜的纠结 + 凉菜定了之后热菜的纠结,这就是链式法则。更妙的是,定了凉菜之后热菜的纠结只会减少或不变——信息不会让事情变得更混乱。这套思想,正是语音识别、数据压缩、推荐系统背后最朴素的数学骨架。

岗位关联

对 AI 从业者而言,联合熵与条件熵是理解特征冗余、信息增益与模型不确定性的第一块基石,几乎所有“如何从数据中提取有用信息”的问题都从这里出发。

目录
  1. 可视化演示
  2. 联合熵定义
  3. 条件熵定义
  4. 链式法则
  5. 信息不等式
  6. 互信息与维恩图
  7. 联合熵计算
  8. 工程应用
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

联合熵定义

设你周末要请朋友来家吃饭,要同时定两道菜:凉菜 X(拍黄瓜或凉拌木耳)和热菜 Y(红烧肉或清蒸鱼)。如果两道菜都没想好,你的“选择纠结”有多大?信息论用一个词来刻画这种双重选择的整体困惑——联合熵 H(X,Y)。它不关心你具体选什么,只关心“你有多不确定”。

联合熵的底层是一张“搭配概率表”:p(x,y) 表示你最终会选择 X=x 且 Y=y 这一组合的可能性。比如 P(拍黄瓜,红烧肉)=0.4,意味着十次里有四次你会做出这个搭配。表格里的数字越集中,选择越笃定;越分散,选择越纠结。信息论用负对数把“惊讶度”变成可度量的比特数,再按概率加权平均,就得到了联合熵的统一公式:

回到厨房场景:单独定一道二选一的菜只需要 1 bit(一个“是/否”问题),而两道菜一起考虑共有 4 种组合,理想情况下需要 2 bit——但如果凉菜和热菜之间存在“口味搭配”的规律,实际需要的比特数就会少于 2。这正是下一节要展开的故事。

H(X,Y)=−∑x∈X∑y∈Yp(x,y)log⁡2p(x,y)\displaystyle H(X,Y)=-\sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}p(x,y)\log_2 p(x,y)
  1. 双重求和遍历凉菜的所有选择 x 与热菜的所有选择 y,共 2×2=4 种组合,每一种都要算一遍
    ∑x∈X∑y∈Y\displaystyle \sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}
  2. 惊讶度量log₂ p(x,y) 衡量“这一搭配有多出乎意料”,概率越小负值越大,取负号后变成正的“信息量”
    −log⁡2p(x,y)\displaystyle -\log_2 p(x,y)
  3. 概率加权每个组合的惊讶度乘上其发生概率 p(x,y),再全部累加,得到整个系统的平均不确定性
    −p(x,y)log⁡2p(x,y)\displaystyle -p(x,y)\log_2 p(x,y)

条件熵定义

现在换个策略:你先决定凉菜——就选清爽的拍黄瓜。这时热菜的选择会怎样?你下意识地排除了同样清淡的清蒸鱼,更倾向于浓郁的红烧肉。也就是说,给定凉菜之后,热菜的不确定性变小了。信息论把这种“已知一个变量后,另一个变量剩余的不确定性”称为条件熵 H(Y|X)。

数学上,每一个具体的凉菜选择 x 都会对应一个条件分布 p(y|x),比如选拍黄瓜时,p(红烧肉|拍黄瓜)=0.8。每个条件分布都有自己的熵 H(Y|X=x),但因为有的凉菜常点、有的不常点,不能简单平均,而要按凉菜的概率 p(x) 加权:

条件熵回答的问题非常实用:如果我先定了凉菜,热菜还需要多少个“是/否”问题才能定下来?它永远是“已知信息后的剩余纠结”,而非“某个具体 x 下的纠结”——这也是初学者最容易踩的坑。

H(Y∣X)=∑x∈Xp(x)[−∑y∈Yp(y∣x)log⁡2p(y∣x)]\displaystyle H(Y|X)=\sum_{x\in\mathcal{X}}p(x)\left[-\sum_{y\in\mathcal{Y}}p(y|x)\log_2 p(y|x)\right]
  1. 外层加权对每个凉菜选择 x,用它的出现概率 p(x) 作为权重,出现越频繁的凉菜,它对热菜判断的影响越大
    ∑x∈Xp(x)[⋅]\displaystyle \sum_{x\in\mathcal{X}}p(x)\left[\cdot\right]
  2. 条件分布给定凉菜 x 后,热菜的条件概率 p(y|x),它描述“已知 x 时 y 的分布”
    p(y∣x)\displaystyle p(y|x)
  3. 内部熵计算对每个凉菜 x,把条件分布的惊讶度加权求和,得到 H(Y|X=x),再被外层权重汇总
    −∑y∈Yp(y∣x)log⁡2p(y∣x)\displaystyle -\sum_{y\in\mathcal{Y}}p(y|x)\log_2 p(y|x)

链式法则

把前两节的厨房智慧连起来:整桌菜的总纠结,等于“先定凉菜的纠结”加上“凉菜定了之后热菜的纠结”。这就是信息论中最优美的公式之一——链式法则:

为什么成立?关键在于联合概率 p(x,y) 可以拆成“先选凉菜再选热菜”两步:p(x,y)=p(x)·p(y|x)。将这一步代入联合熵的求和式,对数运算把乘积变成加法,整个式子便自然地裂成两项:

链式法则还可以一路延伸:如果有凉菜、热菜、甜汤三道菜,总纠结 = 凉菜的纠结 + 凉菜定后热菜的纠结 + 两道定后甜汤的纠结,推广到 n 个变量就是 H(X₁,…,Xₙ)=Σ H(Xᵢ|X₁,…,Xᵢ₋₁)。这也揭示了联合熵的本质——多重不确定性是可以“分步消化”的。

H(X,Y)=H(X)+H(Y∣X)\displaystyle H(X,Y)=H(X)+H(Y|X)
H(X,Y)=−∑x,yp(x)p(y∣x)[log⁡2p(x)+log⁡2p(y∣x)]\displaystyle H(X,Y)=-\sum_{x,y}p(x)p(y|x)\left[\log_2 p(x)+\log_2 p(y|x)\right]
  1. 概率分解把 p(x,y) 替换为 p(x)·p(y|x),对应“先定凉菜、再定热菜”的决策顺序
    p(x,y)=p(x) p(y∣x)\displaystyle p(x,y)=p(x)\,p(y|x)
  2. 对数展开两数乘积的对数等于各自对数之和,原来的联合熵被拆成“凉菜项 + 热菜项”
    log⁡2[p(x)p(y∣x)]=log⁡2p(x)+log⁡2p(y∣x)\displaystyle \log_2[p(x)p(y|x)]=\log_2 p(x)+\log_2 p(y|x)
  3. 逐项化简第一项对 y 求和后恰好是 H(X),第二项恰好是 H(Y|X),于是得到 H(X,Y)=H(X)+H(Y|X)
    −∑x,yp(x)p(y∣x)log⁡2p(y∣x)=H(Y∣X)\displaystyle -\sum_{x,y}p(x)p(y|x)\log_2 p(y|x)=H(Y|X)

信息不等式

先定凉菜这件事,会让热菜的纠结变少、变多还是不变?直觉告诉你至少不会变多——没有人会因为“已经知道凉菜”反而觉得热菜更难选。信息论把这个直觉写成严格的不等式H(Y|X) ≤ H(Y),称为信息不等式。

为什么数学上必然成立?看两者的差值:H(Y)−H(Y|X)。这个差值恰好等于互信息 I(X;Y),也就是凉菜透露给热菜的“搭配情报量”。而信息论早已证明,联合分布与独立分布之间的“偏离程度”(KL 散度)永远非负:

唯一取等号的场景,是凉菜和热菜完全无关(独立):p(x,y)=p(x)p(y),不管凉菜定成什么,热菜的纠结都一寸不减。除此之外,任何一点“搭配默契”都能帮你减少热菜的决策负担——这就是“信息永不增加混乱”的数学化表述。

I(X;Y)=H(Y)−H(Y∣X)=∑x,yp(x,y)log⁡2p(x,y)p(x)p(y)≥0\displaystyle I(X;Y)=H(Y)-H(Y|X)=\sum_{x,y}p(x,y)\log_2\frac{p(x,y)}{p(x)p(y)}\ge 0
  1. 差值即互信息边际熵 H(Y) 减去条件熵 H(Y|X),正好是 X 与 Y 之间共享的信息量
    H(Y)−H(Y∣X)=I(X;Y)\displaystyle H(Y)-H(Y|X)=I(X;Y)
  2. KL 散度展开分子 p(x,y) 是真实联合分布,分母 p(x)p(y) 是“假装独立”的分布,比值偏离 1 越多,说明两者越相关
    p(x,y)p(x)p(y)\displaystyle \frac{p(x,y)}{p(x)p(y)}
  3. 非负性保证吉布斯不等式保证该加权对数之和永远 ≥ 0,故 I≥0,即 H(Y|X)≤H(Y) 恒成立
    ∑x,yp(x,y)log⁡2p(x,y)p(x)p(y)≥0\displaystyle \sum_{x,y}p(x,y)\log_2\frac{p(x,y)}{p(x)p(y)}\ge 0

互信息与维恩图

凉菜和热菜之间有一种“口味默契”:拍了黄瓜就倾向红烧肉,拌了木耳就倾向清蒸鱼。这种双向的“搭配情报量”就是互信息 I(X;Y)。它可以写成三种等价的眺望角度:

把三个熵画成维恩图,一切关系一目了然:左边的圆是 H(X)(凉菜的全部不确定性),右边的圆是 H(Y)(热菜的全部不确定性),两圆并集的面积是 H(X,Y)(联合熵);交集部分就是互信息 I(X;Y);左圆排除重叠后的月牙是 H(X|Y),右圆排除重叠后的月牙是 H(Y|X)。

这个“信息圆”视角极有价值:任何两组数据之间的关系,无非是“各自独有 + 共享交集”的叠加。机器学习的特征筛选、语音识别中声学与语言的融合,本质上都在估测这些圆的重叠面积。

I(X;Y)=H(X)+H(Y)−H(X,Y)=H(X)−H(X∣Y)=H(Y)−H(Y∣X)\displaystyle I(X;Y)=H(X)+H(Y)-H(X,Y)=H(X)-H(X|Y)=H(Y)-H(Y|X)
  1. 并集公式两个圆的面积之和减去重叠部分,正是并集面积——联合熵 = 双方熵之和 − 互信息
    H(X,Y)=H(X)+H(Y)−I(X;Y)\displaystyle H(X,Y)=H(X)+H(Y)-I(X;Y)
  2. 月牙消减从 H(X) 中挖掉重叠部分,剩下的是“即便知道热菜也猜不出的凉菜信息”
    H(X∣Y)=H(X)−I(X;Y)\displaystyle H(X|Y)=H(X)-I(X;Y)
  3. 对称之美互信息关心的是“共享”而非“谁给谁”,所以 I(X;Y)=I(Y;X),厨房里说就是“凉菜了解热菜的程度 = 热菜了解凉菜的程度”
    I(X;Y)=I(Y;X)\displaystyle I(X;Y)=I(Y;X)

联合熵计算

理论再美,也得落到数字上。让我们用一张具体的“家宴搭配概率表”来实战——表中概率代表你长期以来做出每种搭配的频率:

| P(X,Y) | 热菜=红烧肉 | 热菜=清蒸鱼 |

|--------|------------|------------|

| 凉菜=拍黄瓜 | 0.40 | 0.10 |

| 凉菜=凉拌木耳 | 0.10 | 0.40 |

这张表的概率“对角占优”,说明你的口味有明确搭配规律。先算联合熵:四个概率中 0.4 出现两次、0.1 出现两次,合并同类项后:

接着做边缘化:把每行概率相加,得 P(拍黄瓜)=0.5、P(凉拌木耳)=0.5,凉菜本身是二选一,所以 H(X)=1 bit。由链式法则立得条件熵 H(Y|X)=H(X,Y)−H(X)=1.72−1=0.72 bit,再由信息不等式得互信息 I(X;Y)=H(Y)−H(Y|X)=1−0.72=0.28 bit。一条完整的计算链,把前面所有概念串在了一起。

H(X,Y)=−2(0.4log⁡20.4)−2(0.1log⁡20.1)=1.72 bit\displaystyle H(X,Y)=-2(0.4\log_2 0.4)-2(0.1\log_2 0.1)=1.72\ \text{bit}
  1. 合并同类项四个概率呈两两对称,把 −0.4log₂0.4 和 −0.1log₂0.1 各乘 2,减少重复计算
    −2(0.4log⁡20.4)−2(0.1log⁡20.1)\displaystyle -2(0.4\log_2 0.4)-2(0.1\log_2 0.1)
  2. 代入对数值log₂0.4≈−1.322,log₂0.1≈−3.322,两项分别为 1.0576 和 0.6644
    0.4log⁡20.4≈−0.5288,0.1log⁡20.1≈−0.3322\displaystyle 0.4\log_2 0.4\approx -0.5288,\quad 0.1\log_2 0.1\approx -0.3322
  3. 求和得结果2×0.5288+2×0.3322=1.722,约 1.72 bit,比完全随机的 2 bit 少了 0.28 bit——这就是“口味规律”省下的信息量
    1.0576+0.6644=1.722\displaystyle 1.0576+0.6644=1.722

工程应用

备家宴的“先定一道再定另一道”的智慧,在信息工程中无处不在。最经典的场景是通信系统:发送端要传消息 X,经过嘈杂的信道后,接收端收到的是被噪声污染的信号 Y。信道每秒能传多少信息?答案是输入输出互信息的最大值——信道容量 C=max I(X;Y),公式背后正是“X 能透露给 Y 的最大情报量”:

另一大应用是数据压缩。联合熵 H(X,Y) 给出了同时编码两个变量的理论下限:如果两个文件高度相关(互信息大),联合编码就能大幅省比特,这正是 ZIP、视频压缩的深层原理。在特征选择中,工程师用“条件熵下降量”(信息增益)来评估一个特征对标签的预测价值:条件熵降得越多,特征越有用——本质上仍是“先知道凉菜后,热菜纠结减少多少”这个朴素逻辑。

C=max⁡p(x)I(X;Y)=H(Y)−H(Y∣X)\displaystyle C=\max_{p(x)} I(X;Y)=H(Y)-H(Y|X)
  1. 最大化入口发送方可以设计 X 的概率分布,让共享情报量达到上限
    max⁡p(x)I(X;Y)\displaystyle \max_{p(x)}I(X;Y)
  2. 容量视角信道容量等于“接收端信息的不确定性”减去“噪声造成的不确定性”,噪声越大 H(Y|X) 越大,容量越小
    H(Y)−H(Y∣X)\displaystyle H(Y)-H(Y|X)
  3. 工程含义只要码率低于信道容量 C,就可以找到编码方案让误码率任意小——这是香农第一定理的基石
    R<C\displaystyle R < C

AI 应用场景

语音识别中的声学-语言联合建模

阶段:特征融合与模型设计

解决的问题:传统语音识别把声学特征和语言模型分开建模,忽略了“声学特征与文本之间存在共享的互信息”这一事实,造成信息冗余和识别歧义。利用联合熵分解,工程师将声学特征 X 与语言模型状态 Y 的联合分布建模,通过最大化互信息来指导解码路径选择,让识别准确率显著提升。

具体案例:在嘈杂的会议室场景中,声学特征“音量突变”与语言模型“常见口语词”之间有很强的条件依赖。工程师计算 H(文本|声学) 作为解码分支的惩罚项,优先搜索条件熵最小的路径,最终将中文会议转写的词错误率降低约 12%。

推荐系统的特征筛选

阶段:特征工程

解决的问题:推荐系统通常面对上千个用户特征,若全部送入模型,既增加计算开销又引入噪声。通过条件熵评估每个特征 X 对点击标签 Y 的“信息增益” I(X;Y)=H(Y)−H(Y|X),可以精准剔除与标签条件熵几乎不下降的冗余特征。

具体案例:某电商平台对用户历史行为提取了 800 余个特征,逐一计算各自对“是否购买”的互信息后发现,“最近 7 天浏览类别数”的互信息最高,而“注册时填写的星座”几乎为零。筛掉低信息特征后,模型体积缩小 40%,AUC 反而提升了 1.8 个百分点。

数据库查询优化中的列关联估计

阶段:成本估计与执行计划生成

解决的问题:数据库优化器需要估计多个查询列之间的关联程度,传统方法用“独立假设”估算行数,误差巨大。利用联合熵与条件熵可以量化列间依赖:两个列的联合熵远小于各自熵之和,说明它们高度相关,优化器便可选择联合索引或调整连接顺序。

具体案例:某金融数据库的“用户城市”与“用户省份”两列互信息极高,优化器识别出这一模式后,将等值连接代价估算误差从 60% 降到 15%,查询响应时间平均缩短 3 倍。

Python 演示

python55 行
import math  def entropy(probabilities):    """计算离散概率分布的熵,单位比特。"""    return -sum(p * math.log2(p) for p in probabilities if p > 0)  # 家宴搭配概率表:X=凉菜(0拍黄瓜/1凉拌木耳),Y=热菜(0红烧肉/1清蒸鱼)joint = {(0, 0): 0.40, (0, 1): 0.10,         (1, 0): 0.10, (1, 1): 0.40} # 边缘化:按行求和得到 P(X)px = {0: joint[(0, 0)] + joint[(0, 1)],      1: joint[(1, 0)] + joint[(1, 1)]} # 边缘化:按列求和得到 P(Y)py = {0: joint[(0, 0)] + joint[(1, 0)],      1: joint[(0, 1)] + joint[(1, 1)]} # 联合熵 H(X, Y)h_xy = entropy(joint.values()) # 边际熵 H(X) 与 H(Y)h_x = entropy(px.values())h_y = entropy(py.values()) # 链式法则:条件熵 = 联合熵 - 边际熵h_y_given_x = h_xy - h_x # 互信息:边际熵 - 条件熵mi = h_y - h_y_given_x print(f"联合熵 H(X,Y)   = {h_xy:.4f} bit")print(f"边际熵 H(X)     = {h_x:.4f} bit")print(f"边际熵 H(Y)     = {h_y:.4f} bit")print(f"条件熵 H(Y|X)   = {h_y_given_x:.4f} bit")print(f"互信息 I(X;Y)   = {mi:.4f} bit") # 验证链式法则:H(X,Y) = H(X) + H(Y|X)assert abs(h_xy - (h_x + h_y_given_x)) < 1e-12, "链式法则不成立!" # 验证信息不等式:H(Y|X) <= H(Y)assert h_y_given_x <= h_y + 1e-12, "信息不等式不成立!" print("链式法则 H(X,Y)=H(X)+H(Y|X) 验证通过 ✓")print("信息不等式 H(Y|X)<=H(Y) 验证通过 ✓") # 额外验证:X 与 Y 完全独立时,条件熵等于边际熵joint_indep = {(0, 0): 0.25, (0, 1): 0.25,               (1, 0): 0.25, (1, 1): 0.25}h_xy_indep = entropy(joint_indep.values())h_x_indep = entropy([0.5, 0.5])h_y_given_x_indep = h_xy_indep - h_x_indepprint(f"独立情形 H(Y|X) = {h_y_given_x_indep:.4f} bit,与 H(Y)={entropy([0.5, 0.5]):.4f} bit 相等 ✓")
目的:以家宴菜单为场景,用纯 Python 实现联合熵、边际熵、条件熵与互信息的完整计算,并自动验证链式法则与信息不等式。
  1. def entropy(probabilities):定义熵函数,输入概率列表,输出比特数
  2. return -sum(p * math.log2(p) for p in probabilities if p > 0)核心公式:负概率乘对数再求和,跳过零概率避免报错
  3. joint = {(0, 0): 0.40, ...}用字典存储二维联合分布,键是 (X, Y) 组合,值是概率
  4. px = {0: joint[(0, 0)] + joint[(0, 1)], ...}边缘化操作:固定 X 的取值,把对应 Y 的概率全部加起来
  5. h_xy = entropy(joint.values())直接把联合分布的全部概率值传入熵函数,得到联合熵
  6. h_y_given_x = h_xy - h_x链式法则的逆用:联合熵减去边际熵,优雅地算出条件熵,避免繁杂的条件概率求和
  7. assert abs(h_xy - (h_x + h_y_given_x)) < 1e-12用断言验证链式法则,误差容限 1e-12 保证浮点安全
  8. assert h_y_given_x <= h_y + 1e-12验证信息不等式,加上微小容差应对浮点误差

常见误区

误区“联合熵 H(X,Y) 不就是 H(X) 加 H(Y) 吗?我把两道菜的不确定性加起来就完了。”

正解这个等式仅在凉菜热菜完全独立时才成立。只要存在口味搭配(互信息 I>0),联合熵就会小于两者之和,因为重叠的“搭配信息”被重复计算了。正确关系是 H(X,Y)=H(X)+H(Y)−I(X;Y),重叠部分必须扣除一次。就像两片圆交叠时,算并集面积不能简单把两个面积相加。

为何常见:初学者习惯了“总量 = 各部分之和”的加法直觉,忽略了信息之间可能重叠共享,这是最普遍的第一直觉误区。

误区“H(Y|X) 就是给定凉菜=拍黄瓜时热菜的熵,一个数而已。”

正解H(Y|X) 是对所有可能的凉菜 x 求加权平均后的整体指标:先分别算出每个 x 条件下的 H(Y|X=x),再乘上 p(x) 汇总。拍黄瓜时热菜熵可能是 0.7,凉拌木耳时可能是 0.8,但 H(Y|X) 是这两者按出现概率的加权合成,不是单指哪一个。它回答的是“平均而言,提前知道凉菜能帮我减少多少纠结”。

为何常见:记号 H(Y|X) 长得像一个带条件的具体计算,容易和条件概率 p(y|x) 的“单一条件”语义混淆。

误区“万一凉菜选得不对,热菜反而更难选了呢?那 H(Y|X) 应该可能比 H(Y) 大吧?”

正解信息不等式 H(Y|X)≤H(Y) 是数学上严格保证的,无论凉菜定成什么,热菜的“平均剩余纠结”都不可能增加。注意关键词是“平均”:某个具体 x 下的熵 H(Y|X=x) 可能比 H(Y) 大,但按 p(x) 加权后整体必然不超过 H(Y)。额外的信息永远不能让你更困惑,这是信息论的一条铁律。

为何常见:人们容易用“某一个坏情形”的直觉去替代“全概率加权平均”的全局视角,混淆了局部与整体。

误区“条件熵嘛,谁在竖线左边不都一样?H(凉菜|热菜) 和 H(热菜|凉菜) 应该相等。”

正解条件熵一般不对称。H(Y|X)=H(X,Y)−H(X) 度量“已知凉菜后热菜还剩多少不确定性”,而 H(X|Y)=H(X,Y)−H(Y) 度量“已知热菜后凉菜还剩多少不确定性”。两者只有在 H(X)=H(Y) 时才相等。这和互信息 I(X;Y) 的对称性形成鲜明对比:共享的情报量是互相的,但各自的剩余不确定性不是。

为何常见:互信息的对称性让人产生错觉,以为所有“双向信息”关系都对称,忽略了条件熵里还夹带着各自的边际熵差异。

误区“互信息是正的说明正相关,是负的说明负相关。”

正解互信息永远非负,I(X;Y)≥0,它衡量的是任意形式的关联强度(线性、非线性、函数关系都可以),而不是相关方向。想要方向性要去看相关系数或条件概率的偏斜方向。就像“拍黄瓜和红烧肉搭配”和“拍黄瓜和清蒸鱼不搭”这两种信息,都能增大互信息,但方向截然相反。

为何常见:人们习惯于用“正负号表示方向”的直觉,而互信息是平方式的量纲,本质是“信息量多少”,天然丢弃了方向信息。

面试题

Q1. 联合熵 H(X,Y) 的正确含义是?

单选题 · easy

  • A.两个变量各自熵的算术平均值
  • B.两个变量联合分布的总不确定性← 正确答案
  • C.两个变量所有取值的概率之和
  • D.一个变量条件下另一变量的熵

答案:B。联合熵衡量 X 和 Y 作为整体呈现的不确定性,对应“两道菜一起定的纠结总量”。选项 A 是平均熵,C 是概率归一化(恒为 1),D 描述的是条件熵而非联合熵。之所以选 B,是因为联合熵的公式正是对联合分布 p(x,y) 取负对数加权求和。

Q2. 链式法则的正确数学表达是?

单选题 · easy

  • A.H(X,Y) = H(X) × H(Y|X)
  • B.H(X,Y) = H(X) + H(Y|X)← 正确答案
  • C.H(X,Y) = H(X) − H(Y|X)
  • D.H(X,Y) = H(X) / H(Y|X)

答案:B。链式法则 H(X,Y)=H(X)+H(Y|X) 把联合熵分解为“先定凉菜的熵”与“凉菜定后热菜的条件熵”之和。概率乘法在对数下变成加法,因此绝不可能是乘除关系。记忆要点:不确定性是逐步消解的,所以是累加而非其他运算。

Q3. 条件熵 H(Y|X) 的最小可能取值是?

单选题 · mid

  • A.等于 H(Y) 的负值
  • B.等于 H(X) 的大小
  • C.永远大于等于 1 bit
  • D.最小可以取到 0← 正确答案

答案:D。当 Y 完全由 X 决定时(比如给定凉菜就必然知道热菜),剩余不确定性为零,条件熵取最小值 0。信息不等式保证 H(Y|X)≥0 且 H(Y|X)≤H(Y),它不可能为负,更不必然大于等于 1 bit。这道题考察的是“信息可以完全消除不确定性”的极限情形。

Q4. 信息不等式 H(Y|X) ≤ H(Y) 取等号的充要条件是?

单选题 · mid

  • A.X 和 Y 完全正相关
  • B.X 和 Y 相互独立← 正确答案
  • C.H(X) 等于 H(Y)
  • D.X 和 Y 的概率分布相同

答案:B。等号成立当且仅当 I(X;Y)=0,即 X、Y 独立,凉菜信息对热菜毫无帮助。完全正相关时 H(Y|X) 会降到 0,必有严格小于。H(X)=H(Y) 只影响条件熵的对称性,与等号条件无关;分布相同也不保证独立。

Q5. 互信息的等价表达式是?

单选题 · mid

  • A.H(X) + H(Y)
  • B.H(X, Y) − H(X)
  • C.H(Y) − H(Y|X)← 正确答案
  • D.H(X) − H(Y)

答案:C。互信息 I(X;Y)=H(Y)−H(Y|X),即“知道 X 后 Y 不确定性的减少量”。选项 A 是“和”而非重叠,选项 B 是 H(Y|X),选项 D 是两个边际熵之差没有任何信息论意义。维恩图中互信息是两个熵圆的交集,最自然的度量就是“总熵 − 剩余熵”。

Q6. 已知 H(X,Y)=2.5 bit,H(X)=1.5 bit,则 H(Y|X) 等于多少?

单选题 · hard

  • A.3.5 bit
  • B.1.5 bit
  • C.1.0 bit← 正确答案
  • D.2.5 bit

答案:C。由链式法则 H(Y|X)=H(X,Y)−H(X)=2.5−1.5=1.0 bit。选项 A 把式子做成加法,选项 B 混淆了边际熵与条件熵,选项 D 忘记减去 H(X)。这道题考察链式法则的逆运算,也是工程中由联合熵和边际熵推算条件熵的标准做法。

Q7. 若 X、Y 相互独立且 H(X)=1 bit、H(Y)=2 bit,则 H(X,Y) 是?

单选题 · hard

  • A.3 bit← 正确答案
  • B.2 bit
  • C.1 bit
  • D.介于 1 和 2 bit 之间

答案:A。独立时互信息为 0,联合熵等于两个边际熵之和,即 1+2=3 bit。独立意味着没有任何共享的搭配信息,两片熵圆完全不相交,并集面积就是面积相加。选择 B 或 C 都错误地认为联合熵会取较小值,D 则忽略了独立情形下熵的严格可加性。

Q8. 以下关于条件熵的说法,正确的有?

多选题 · mid

  • A.条件熵是给定 X 后 Y 的剩余不确定性← 正确答案
  • B.条件熵一定不超过边际熵 H(Y)← 正确答案
  • C.条件熵等于联合熵减去边际熵 H(X)← 正确答案
  • D.条件熵与互信息一定相等

答案:ABC。A 是条件熵的定义;B 是信息不等式,额外信息不会增加不确定性;C 是链式法则的等价变形;D 错误,互信息 = H(Y)−H(Y|X),条件熵是“剩余量”而非“共享量”,两者一般不相等。这道题综合考察条件熵的三个关键性质。

Q9. 链式法则推广到三个变量时,哪些写法是正确的?

多选题 · mid

  • A.H(X,Y,Z)=H(X)+H(Y|X)+H(Z|X,Y)← 正确答案
  • B.H(X,Y,Z)=H(Z)+H(X,Y|Z)← 正确答案
  • C.H(X,Y,Z)=H(X)+H(Y)+H(Z)
  • D.H(X,Y,Z)=H(X)+H(Y,Z|X)← 正确答案

答案:ABD。A 是标准的三变量链式展开;B 是把 (X,Y) 看作整体、Z 先定的另一条合法链;D 同样符合链式法则。C 只在三者完全独立时成立,一般情况忽略了条件熵项。链式法则的本质是“任意顺序逐步分解”,A/B/D 都是这个思想的合法实例。

Q10. 关于联合熵与互信息的维恩图关系,下列说法正确的有?

多选题 · hard

  • A.联合熵 H(X,Y) 是两个熵圆的并集面积← 正确答案
  • B.互信息 I(X;Y) 是两个熵圆的交集面积← 正确答案
  • C.H(X|Y) 是左圆中不含交集的月牙部分← 正确答案
  • D.互信息 I(X;Y) 等于 H(X,Y) 的并集面积

答案:ABC。维恩图中 H(X) 和 H(Y) 各是一个圆,并集是联合熵,交集是互信息,左圆除去交集后的月牙正是 H(X|Y)。D 错误地把互信息等同于并集面积,实际上并集面积是联合熵。这题以图形方式综合考察四个量(H(X)、H(Y)、H(X,Y)、H(X|Y)、H(Y|X)、I(X;Y))之间的空间关系。