想象你和朋友合租一套两居室。每天回家,你只关心自己的房间乱不乱,那是“单间悬念”;但朋友来做客,看到的却是整个家——厨房油渍、客厅瓜子壳、两间卧室……真正的“家乱不乱”,必须把所有空间合在一起看。信息论里,衡量单看一个随机变量的不确定性,叫熵(Entropy);把两个随机变量 X、Y 放在一起看总不确定性,就叫联合熵(Joint Entropy)。它回答一个朴素问题:两个信封一起打开之前,你心里的“总悬念”到底有多大?这篇文章用“合租两间房”的生活故事,把联合熵的定义、性质、与条件熵和互信息的链式关系讲透,最后用 Python 动手算一遍。

岗位关联

联合熵是信息论的基石:搞懂它,你就能量化“多个变量组成的系统总信息量”,为条件熵、互信息乃至整个信息论大厦打下地基,也是做特征工程、传感器融合等 AI 实战的基本功。

目录
  1. 可视化演示
  2. 联合熵定义
  3. 基本性质
  4. 与单熵关系
  5. 条件熵
  6. 互信息
  7. 链式法则
  8. 计算应用
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

动态演示联合熵的核心机制,通过基础/核心/应用/扩展四种模式展示关键概念与交互流程。

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

联合熵:联合熵的 联合熵的定义与公式 联合熵与单个熵的关系 核心机制可视化 联合熵整体架构与关键组件

联合熵定义

假设 X 表示室友小明的房间状态(0=整洁、1=一般、2=凌乱),Y 表示小红房间的状态。单看 X,有三种可能、每种可能各有概率,这是 H(X);单看 Y 同理。但“整个家”的状态是 (X,Y) 的九种组合:小明整洁且小红凌乱、小明凌乱且小红整洁……每一种组合都有一个联合概率 p(x,y)。这些概率堆在一起,就构成一张 3×3 的联合分布表。联合熵的定义式,就是把这张表里每一项的概率取对数、加负号、再按概率加权求和:

回到合租屋:H(X,Y) 就是你对“整个家”状态的悬念总量。如果九种组合每一种都可能,你不知道该往哪间房看,悬念就大;如果某种组合(比如小明乱且小红也乱)几乎必然出现,悬念就小。联合熵把两间房的分布揉成一张表,算成一个数字——这正是“整个家”的混乱指数。

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)
联合熵就是把“两个变量所有可能组合”的惊讶程度,按概率加权平均成一个数字。底数为 2 时单位是 bit,用自然对数时单位是 nat。
  1. 联合概率 p(x,y)表示 X 取 x 且 Y 取 y 同时发生的概率,它是整个计算的基础数据。
    p(x,y)=P(X=x,  Y=y)p(x,y) = P(X=x,\; Y=y)
  2. 双重累加外层对 X 的所有取值、内层对 Y 的所有取值逐一扫描,把每种组合都覆盖到。
    ∑x∈X∑y∈Y\sum_{x \in \mathcal{X}} \sum_{y \in \mathcal{Y}}
  3. 对数项对每个联合概率取以 2 为底的对数,概率越小,“惊讶度”越大,信息量越大;反之概率接近 1 时信息量趋近 0。
    log⁡2p(x,y)\log_2 p(x,y)
  4. 负号与整体结构因为概率小于 1 时对数是负数,加负号后每项变成非负,最终得到平均信息量。
    H(X,Y)=−E[log⁡2p(X,Y)]H(X,Y) = -\mathbb{E}\big[\log_2 p(X,Y)\big]

基本性质

任何一把尺子都有刻度规则。联合熵这把“悬念尺”也有三条基本刻度。第一条,联合熵永远不小于零:你不会对屋里状态产生“负的悬念”,最坏也就是完全确定,比如提前知道室友今天都没回来,屋里必是一尘不染,悬念为零。第二条,对称性:先想小明房间还是先想小红房间,整个家的总悬念一模一样,H(X,Y) 和 H(Y,X) 只是累加顺序不同。第三条,有上界:悬念再大也有天花板,当所有组合等可能时你不知道该偏向哪个状态,悬念最大;组合数越多天花板越高。写成公式:

所以这把尺子的刻度范围清楚了:下界 0 表示“全屋状态完全确定”,上界表示“每个角落都可能乱”的极限。合租屋里,不管两人怎么折腾,整个家的悬念都在这条区间里波动,不会越界。

0≤H(X,Y)≤log⁡2(∣X∣⋅∣Y∣)\displaystyle 0 \le H(X,Y) \le \log_2 \big(|\mathcal{X}| \cdot |\mathcal{Y}|\big)
下界 0 对应“完全确定”,上界 log₂(|X|·|Y|) 对应“均匀分布时悬念最大”。
  1. 下界为零每一项 -p·log₂p 在 p 属于 (0,1] 时都非负,只有某个概率为 1、其余全为 0 时每项取到 0。
    H(X,Y)≥0H(X,Y) \ge 0
  2. 上界来源熵是定义在概率分布上的凹函数,均匀分布时达到最大,此时每个组合等概率。
    p(x,y)=1∣X∣⋅∣Y∣p(x,y) = \frac{1}{|\mathcal{X}| \cdot |\mathcal{Y}|}
  3. 代入上界把等概率值代入定义式,双重求和退化为常数乘以组合数,恰好得到组合数的对数。
    log⁡2(∣X∣⋅∣Y∣)\log_2 \big(|\mathcal{X}| \cdot |\mathcal{Y}|\big)

与单熵关系

整间屋子的混乱程度,可能比自己房间的混乱程度还小吗?你把自己的房间整理得干干净净,但客厅还有室友的臭袜子,整个家依然可能很乱。联合熵不小于任何一个单变量熵,这是联合熵最重要的“体检指标”。直觉上,往系统里多塞一个变量,总不确定性只增不减。严格证明可以借助条件熵:H(X,Y) = H(X) + H(Y|X),而 H(Y|X) ≥ 0,于是立刻得到:

那什么时候联合熵刚好等于两个熵之和?答案是两间房互不影响、各自独立的时候——小明房间爱乱不乱,小红房间自己去折腾,两人状态互不相关。此时联合密度可以拆成两个边际密度的乘积,对数也拆成两项,整个家的悬念恰好等于两间房各自悬念的简单相加:

合租的真相于是浮出水面:只要室友影响你(不独立),整个家的混乱度就小于两间房单独混乱之和,因为一部分混乱是“共享”的;如果你们井水不犯河水,总混乱就是两间房的简单加总。

H(X,Y)≥H(X)≥0\displaystyle H(X,Y) \ge H(X) \ge 0
已知一个变量的信息只会让另一个变量的剩余不确定性减少,但它不会“抵消”总的不确定性;总悬念只会因新增变量而变多或持平。
  1. 拆解差值把联合熵写成单熵加条件熵,则 H(X,Y) − H(X) = H(Y|X)。
    H(X,Y)−H(X)=H(Y∣X)H(X,Y) - H(X) = H(Y|X)
  2. 条件熵非负条件熵本质上是熵,继承了熵的非负性,所以差值不小于零。
    H(Y∣X)≥0H(Y|X) \ge 0
  3. 得到结论非负差值意味着联合熵永远不矮于单熵这一“身高线”。
    H(X,Y)≥H(X)H(X,Y) \ge H(X)
p(x,y)=p(x)p(y)  ⟹  H(X,Y)=H(X)+H(Y)\displaystyle p(x,y) = p(x)p(y) \;\Longrightarrow\; H(X,Y) = H(X) + H(Y)
  1. 独立性条件联合概率等于两个边际概率相乘,说明两变量互不影响。
    p(x,y)=p(x)p(y)p(x,y) = p(x)p(y)
  2. 对数拆开对乘积取对数变成两项相加,双重求和随之被拆开。
    log⁡2(p(x)p(y))=log⁡2p(x)+log⁡2p(y)\log_2\big(p(x)p(y)\big) = \log_2 p(x) + \log_2 p(y)
  3. 化简为边际和各自对另一个变量求和后归一化,恰好还原成两个单熵。
    H(X,Y)=H(X)+H(Y)H(X,Y) = H(X) + H(Y)

条件熵

你推开小明房间,发现他整洁得像个样板间。这个信息立刻改变了你对小红房间的猜测:一个如此爱干净的人,大概率不会允许客厅乱。于是“已知小明状态后,小红房间还剩多少悬念”——这个剩余悬念就是条件熵。条件概率 p(y|x) 表示已知 X=x 的条件下 Y=y 的可能性,条件熵 H(Y|X) 把这些条件概率的“惊讶度”按联合概率加权平均:

条件熵给了“先看哪间房”一个顺序指导:先搞定一间房的悬念,剩下的悬念就是条件熵。它天然刻画了“边际收益”——已经知道一部分信息后,还剩多少信息需要获取。如果小明房间一乱小红必然乱,那么看完小明房间后,小红房间几乎没悬念,条件熵趋近于零。

H(Y∣X)=−∑x∈X∑y∈Yp(x,y)log⁡2p(y∣x)\displaystyle H(Y|X) = -\sum_{x \in \mathcal{X}} \sum_{y \in \mathcal{Y}} p(x,y) \log_2 p(y|x)
条件熵是“先解锁一间房之后,剩下那间房还藏着多少惊讶”。
  1. 条件概率p(y|x) 表示在 X=x 已经发生的条件下 Y=y 的概率,它是已知小明房间状态后对小红房间的预测依据。
    p(y∣x)=p(x,y)p(x)p(y|x) = \frac{p(x,y)}{p(x)}
  2. 联合概率加权每个条件对总体的贡献要乘上它实际发生的权重 p(x,y),这样才不是“凭空猜测”,而是按真实频率平均。
    p(x,y)log⁡2p(y∣x)p(x,y) \log_2 p(y|x)
  3. 负号与累加条件概率小于 1 时对数为负,加负号翻转成非负信息量,再对全部组合累加。
    H(Y∣X)=−∑x,yp(x,y)log⁡2p(y∣x)H(Y|X) = -\sum_{x,y} p(x,y) \log_2 p(y|x)

互信息

合租三个月后你发现规律:小明房间一乱,小红房间十有八九也乱。两人共享的不只是客厅,还有“卫生习惯”这套信息。互信息衡量的正是两个变量之间“共享的信息量”。它的定义简洁而优雅:X 的悬念加 Y 的悬念,减去两人一起时的总悬念。多减掉的这部分,就是两个变量重复计算的信息:

互信息是合租的“默契指数”:它告诉你,知道了小明的房间状态,能省下多少猜测小红房间的力气。若两人毫无关联,默契指数为 0;若小明一乱小红必乱,默契指数达到最大。特征选择、数据降维里,这个指数就是挑选“有用变量”的核心工具——与标签互信息越高,特征越值得留下。

I(X;Y)=H(X)+H(Y)−H(X,Y)\displaystyle I(X;Y) = H(X) + H(Y) - H(X,Y)
互信息 = 单看 X 的悬念 + 单看 Y 的悬念 − 一起看的悬念,减掉的是“被共享、被冗余”的那部分。
  1. 代入链式法则把 H(X,Y) 用条件熵展开,联合熵被替换为 H(X)+H(Y|X)。
    I(X;Y)=H(X)+H(Y)−[H(X)+H(Y∣X)]I(X;Y) = H(X) + H(Y) - \big[H(X) + H(Y|X)\big]
  2. 化简消元H(X) 被抵消,留下 H(Y) − H(Y|X),即“Y 的原悬念减去已知 X 后剩下的悬念”。
    I(X;Y)=H(Y)−H(Y∣X)I(X;Y) = H(Y) - H(Y|X)
  3. 对称非负同样可写成 H(X) − H(X|Y),且由信息论基本不等式保证 I ≥ 0。
    I(X;Y)=H(X)−H(X∣Y)≥0I(X;Y) = H(X) - H(X|Y) \ge 0

链式法则

两间房的故事搞清楚后,想象一个四室一厅的合租屋:小明、小红、小刚、小美,整个家的悬念怎么算?答案是:一间一间地推门进去看,每推开一扇门解除一部分悬念,剩下的悬念继续累积。这就是链式法则。二维形式 H(X,Y) = H(X) + H(Y|X) 可以不断“套娃”:三变量时 H(X,Y,Z) = H(X) + H(Y|X) + H(Z|X,Y)。推广到 n 个变量:

合租屋越来越大,联合熵却不怕——链式法则告诉你,从第一间房开始,每间房只要算“在已知前面所有房间状态后剩下的悬念”,逐项相加即可。这不仅在理论上把多维联合熵化归为一个个条件熵,在实践中也让复杂系统的信息量估算变得可操作。

H(X1,X2,…,Xn)=∑i=1nH(Xi ∣ X1,X2,…,Xi−1)\displaystyle H(X_1, X_2, \ldots, X_n) = \sum_{i=1}^{n} H\big(X_i \,\big|\, X_1, X_2, \ldots, X_{i-1}\big)
链式法则把“多变量总悬念”拆成“一个接一个的条件悬念”之和,是计算多维联合熵的通用套路。
  1. 索引约定X₁ 到 X_{i-1} 表示“排在 X_i 前面的所有变量”,当 i=1 时条件集为空即 H(X₁)。
    H(Xi∣X1,…,Xi−1)H(X_i | X_1, \ldots, X_{i-1})
  2. 逐项展开从第一个变量开始,每项都是“已知前面所有变量后,当前变量还剩多少悬念”。
    H(X,Y,Z)=H(X)+H(Y∣X)+H(Z∣X,Y)H(X,Y,Z) = H(X) + H(Y|X) + H(Z|X,Y)
  3. 求和压缩累加符号把一长串条件熵收拢成一个紧凑公式,n 项相加就是总联合熵。
    ∑i=1nH(Xi∣X1,…,Xi−1)\sum_{i=1}^{n} H(X_i | X_1, \ldots, X_{i-1})

计算应用

理论讲完,拿真实数据算一遍。假设你观察了 100 天小明和小红的房间状态,得到联合频率如下(近似当概率):行表示小明 X 的状态,列表示小红 Y 的状态,数值是 100 天中该组合出现的天数除以 100。

| p(x,y) | Y=0 | Y=1 | Y=2 |

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

| X=0 | 0.18 | 0.12 | 0.02 |

| X=1 | 0.12 | 0.22 | 0.08 |

| X=2 | 0.02 | 0.08 | 0.16 |

把九项代入联合熵公式,逐项计算 −p·log₂p 再累加,得到 H(X,Y) ≈ 2.89 bit。同时可以算出 H(X) ≈ 1.56 bit,H(Y) ≈ 1.56 bit(边际分布恰好对称)。用链式法则验证:H(Y|X) = H(X,Y) − H(X) ≈ 2.89 − 1.56 = 1.33 bit,于是 H(X)+H(Y|X) ≈ 2.89 bit,与联合熵完全吻合。互信息 I(X;Y) = 1.56 + 1.56 − 2.89 ≈ 0.22 bit,说明两人的卫生习惯确实存在一定“默契”,但共享信息不算多:

合租屋的故事至此闭环:用联合熵衡量整个家,用条件熵指导逐间解锁,用互信息衡量默契。现实中这套工具正是 AI 系统衡量多传感器数据总量、评估特征冗余的基本功——理解了这张表,你就理解了信息论从“单个变量”走向“变量系统”的关键一步。

H(X,Y)=−∑i=13∑j=13pijlog⁡2pij≈2.89 bit\displaystyle H(X,Y) = -\sum_{i=1}^{3}\sum_{j=1}^{3} p_{ij} \log_2 p_{ij} \approx 2.89\ \text{bit}
这张 3×3 表就是“合租屋悬念”的完整账本:每格概率贡献一小块信息量,加起来就是联合熵。
  1. 读表取概率p₁₁ = 0.18 表示第 1 行第 1 列对应“小明整洁且小红整洁”的概率。
    p11=0.18p_{11} = 0.18
  2. 逐项算信息量对每个 p_{ij} 计算 −p_{ij}·log₂p_{ij},概率 0.18 贡献约 0.45 bit。
    −0.18×log⁡20.18≈0.45-0.18 \times \log_2 0.18 \approx 0.45
  3. 九项求和把 9 个贡献值累加,得到 2.89 bit,这是整个家状态的总悬念。
    ∑i=13∑j=13pijlog⁡2pij≈−2.89\sum_{i=1}^{3}\sum_{j=1}^{3} p_{ij} \log_2 p_{ij} \approx -2.89

AI 应用场景

多传感器数据融合评估

阶段:数据预处理 / 感知融合

解决的问题:智能家居同时部署了温度、湿度、人体移动、光照等多个传感器。每个传感器单独计算 H(Xᵢ),只能描述“单间房的乱”;要评估整个感知系统的总不确定性,必须把所有传感器读数的联合熵算出来,判断系统还有多少未知状态未被覆盖。传统做法只看单个传感器的方差或熵,会严重低估系统整体的信息量。

具体案例:某智能安防系统融合 8 路传感器读数,单路熵都不高,但联合熵居高不下,说明传感器之间独立性较强、数据互补性大。算法团队据此决定引入多路关联分析模型,把漏报率降低了 18%。

特征工程中的互信息筛选

阶段:特征工程 / 特征选择

解决的问题:几百个候选特征里挑出“和标签最相关”的那几个,如果只看单个特征的分布,完全不知道它与标签的关系;用互信息(联合熵的衍生指标)计算特征与标签之间的共享信息量,就能直接量化“这个特征对预测贡献了多少信息”。相比皮尔逊相关系数,互信息还能捕捉非线性关系,是更通用的筛选工具。

具体案例:某电商点击率预测任务中,工程师用互信息对 120 个候选特征排序,淘汰互信息低于 0.01 的 40 个特征后,模型 AUC 提升 2%,训练时间缩短 25%。

图像编码的压缩极限估计

阶段:数据压缩 / 编码

解决的问题:图像里相邻像素并不是独立的,直接按单像素熵设计编码器会浪费大量码率;只有算出相邻像素的联合熵,才知道压缩的理论下限。传统编码器主要靠经验调参,缺乏对“相邻像素共享多少信息”的量化认知。

具体案例:某视频编码团队在一张 512×512 灰度图上测得相邻像素联合熵约 6.2 bit/像素,而单像素熵约 7.1 bit,两者之差(约 0.9 bit)正是可利用的相关性冗余,据此调整预测编码器的搜索范围,在同等画质下码率降低约 10%。

Python 演示

python83 行
"""联合熵、条件熵、互信息的完整计算演示"""import mathfrom itertools import product  def joint_entropy(P):    """联合熵 H(X,Y)。P[i][j] = P(X=i, Y=j)"""    h = 0.0    for i, j in product(range(len(P)), range(len(P[0]))):        p = P[i][j]        if p > 1e-12:            h -= p * math.log2(p)    return h  def marginal_entropy(P, axis=0):    """边际熵。axis=0 得 H(X),axis=1 得 H(Y)"""    n_row, n_col = len(P), len(P[0])    h = 0.0    for a in range(n_row if axis == 0 else n_col):        if axis == 0:            px = sum(P[a][b] for b in range(n_col))        else:            px = sum(P[b][a] for b in range(n_row))        if px > 1e-12:            h -= px * math.log2(px)    return h  def conditional_entropy(P, given=0):    """条件熵。given=0 得 H(Y|X),given=1 得 H(X|Y)"""    n_row, n_col = len(P), len(P[0])    h = 0.0    for i, j in product(range(n_row), range(n_col)):        p = P[i][j]        if p <= 1e-12:            continue        if given == 0:            px = sum(P[i][b] for b in range(n_col))            cond = p / px if px > 1e-12 else 0.0        else:            py = sum(P[a][j] for a in range(n_row))            cond = p / py if py > 1e-12 else 0.0        if cond > 1e-12:            h -= p * math.log2(cond)    return h  def mutual_information(P):    """互信息 I(X;Y) = H(X) + H(Y) - H(X,Y)"""    hx = marginal_entropy(P, 0)    hy = marginal_entropy(P, 1)    hxy = joint_entropy(P)    return hx + hy - hxy  def main():    # 合租屋例子的联合分布表:行=小明X,列=小红Y,0=整洁 1=一般 2=凌乱    P = [        [0.18, 0.12, 0.02],        [0.12, 0.22, 0.08],        [0.02, 0.08, 0.16],    ]    hx = marginal_entropy(P, 0)    hy = marginal_entropy(P, 1)    hxy = joint_entropy(P)    hy_given_x = conditional_entropy(P, 0)    ixy = mutual_information(P)     print(f"H(X)   = {hx:.4f} bit")    print(f"H(Y)   = {hy:.4f} bit")    print(f"H(X,Y) = {hxy:.4f} bit")    print(f"H(Y|X) = {hy_given_x:.4f} bit")    print(f"I(X;Y) = {ixy:.4f} bit")     # 验证链式法则:H(X)+H(Y|X) 应等于 H(X,Y)    lhs = hx + hy_given_x    print(f"H(X)+H(Y|X) = {lhs:.4f} bit (应与 H(X,Y) 一致)")    print(f"一致? {abs(lhs - hxy) < 1e-9}")  if __name__ == "__main__":    main()
目的:输入一张联合概率分布表,自动算出联合熵、边际熵、条件熵和互信息,并验证链式法则。
  1. if p > 1e-12:跳过概率几乎为 0 的项,避免对 0 取对数导致报错。
  2. h -= p * math.log2(p)熵的核心累加:每一项概率乘以其对数信息量,加负号后累加。
  3. px = sum(P[a][b] for b in range(n_col))对列求和得到边际概率 P(X=a),这是从联合分布“挤出”单变量分布的关键。
  4. cond = p / px if px > 1e-12 else 0.0用联合概率除以边际概率得到条件概率 p(y|x)。
  5. return hx + hy - hxy互信息的“和减联合”表达式,一行代码体现 I = H(X)+H(Y)−H(X,Y)。
  6. print(f"H(X,Y) = {hxy:.4f} bit")以 4 位小数输出结果,方便核对正文中的 2.89 bit。
  7. lhs = hx + hy_given_x用链式法则手工拼出联合熵,与直接计算对比验证正确性。

常见误区

误区我看见 H(X,Y) 就以为是 H(X)+H(Y),毕竟都叫“联合”了,加起来总没错吧?

正解只有 X 与 Y 独立时才成立。合租屋里,两人互不影响时总混乱才等于各自相加;只要生活习惯互相影响,联合熵一定小于两者之和,因为部分信息被共享了。正确的通用关系是链式法则 H(X,Y)=H(X)+H(Y|X),而 H(Y|X) 通常不为零。

为何常见:单变量熵“取值越多熵越大”的直觉被简单搬到了双变量上,忽略了联合分布中变量之间的相关性会“压缩”总量。

误区我同时知道 X 和 Y 的信息,掌握的信息多了,不确定性应该变小,所以 H(X,Y) 应该小于 H(X) 吧?

正解掌握的信息确实变多了,但联合熵衡量的是“打开两个信封之前”的总悬念,而不是打开之后。变量多了一个,状态组合从 |X| 膨胀到 |X|·|Y|,总悬念只增不减:H(X,Y) ≥ H(X) 恒成立。会变小的是条件熵 H(X|Y)——那是已知 Y 之后剩下的悬念。

为何常见:混淆了“拿到信息后的剩余不确定性”(条件熵)和“一起看两个变量的总不确定性”(联合熵),一个关注过程,一个关注总量。

误区联合熵是零,说明 X 和 Y 都没悬念了,两个变量都确定。

正解联合熵为零说明 (X,Y) 联合状态只有一个可能值,比如 (X=1, Y=2) 必然发生,此时 X 和 Y 各自当然也确定。反过来,如果 H(X)=0 而 Y 还有变化,联合熵就等于 H(Y),并不会变成零。真正要注意的是:联合熵为零是“联合层面无悬念”,比“各自无悬念”更强。

为何常见:只记住了“熵为零≈确定”的口诀,没有把“联合”的含义落实到联合分布上,忽略了联合确定和边际确定之间的区别。

误区既然都叫条件熵,把 X 和 Y 换一下应该不影响结果吧?

正解条件熵不对称。知道小明的房间后,小红房间还剩多少悬念,和知道小红的房间后小明房间还剩多少悬念,通常并不相同。两者仅当 X、Y 的分布对称时才相等。它们通过互信息联系:H(Y|X) = H(Y) − I(X;Y),H(X|Y) = H(X) − I(X;Y)。

为何常见:联合熵的对称性让初学者误以为整个熵家族都对称,忽略了条件熵依赖“以谁为条件”这个方向性。

面试题

Q1. 联合熵 H(X,Y) 与单个熵 H(X) 的大小关系是?

单选题 · easy

  • A.H(X,Y) < H(X) 恒成立
  • B.H(X,Y) = H(X) 恒成立
  • C.H(X,Y) ≥ H(X) 恒成立← 正确答案
  • D.两者之间没有任何确定关系

答案:C。联合熵等于单熵加条件熵,即 H(X,Y)=H(X)+H(Y|X),而 H(Y|X) ≥ 0,所以联合熵永远不会小于单个熵。选项 A 方向反了;B 只有在 Y 完全由 X 决定时才成立;D 错误,因为有明确的不等式关系。

Q2. 当随机变量 X 和 Y 相互独立时,联合熵满足?

单选题 · easy

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

答案:A。独立时联合概率等于边际概率乘积,对数拆成两项,双重求和分解后恰好得到两个熵相加。B 把加法换成乘法毫无依据;C 是条件熵不是联合熵;D 中互信息在独立时为零,不是联合熵。

Q3. 下列属于联合熵性质的有?

多选题 · mid

  • A.非负性:H(X,Y) ≥ 0← 正确答案
  • B.对称性:H(X,Y) = H(Y,X)← 正确答案
  • C.上界:H(X,Y) ≤ log₂(|X|·|Y|)← 正确答案
  • D.联合熵总等于两个边际熵之和

答案:ABC。A 正确,熵本质是平均信息量,不可能为负;B 正确,双重求和的顺序可以交换;C 正确,均匀分布时达到最大值 log₂(|X|·|Y|);D 错误,只有当 X、Y 独立时才等于两熵之和,一般情况用链式法则。

Q4. 链式法则的正确表达式是?

单选题 · mid

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

答案:D。链式法则有两种等价写法:先看 X 再看 Y 得 H(X)+H(Y|X),先看 Y 再看 X 得 H(Y)+H(X|Y)。A 只在独立时成立;D 才是正确答案,因为 B 和 C 都是链式法则的合法形式。

Q5. 若 H(X,Y) = H(X),则下列推断正确的是?

单选题 · mid

  • A.X 与 Y 相互独立
  • B.给定 X 后 Y 完全确定,即 H(Y|X) = 0← 正确答案
  • C.X 完全由 Y 决定
  • D.H(Y) = 0

答案:B。由链式法则,H(X,Y)=H(X)+H(Y|X),所以 H(X,Y)=H(X) 等价于 H(Y|X)=0,即知道 X 后 Y 没有额外悬念。A 独立时 H(X,Y)=H(X)+H(Y)≠H(X);C 方向反了,这是“Y 由 X 决定”而非“X 由 Y 决定”;D 并不必需,Y 的边际熵可以不为零。

Q6. 已知 H(X,Y,Z) = 3 bit,H(X) = 1 bit,H(Y|X) = 1.2 bit,则 H(Z|X,Y) 为?

单选题 · hard

  • A.0.8 bit← 正确答案
  • B.1.8 bit
  • C.1.2 bit
  • D.无法确定

答案:A。按三维链式法则,H(X,Y,Z)=H(X)+H(Y|X)+H(Z|X,Y)。代入 3 = 1 + 1.2 + H(Z|X,Y),解得 H(Z|X,Y)=0.8 bit。这题考察多维链式法则的逐项分解能力,B、C 是误把其他熵值当作答案,D 错误因为条件给足了。

Q7. 条件熵 H(Y|X) = 0 的信息论含义是?

单选题 · mid

  • A.X 和 Y 完全独立
  • B.知道 X 的值后,Y 的值被完全确定← 正确答案
  • C.X 和 Y 的联合熵为零
  • D.H(X) 一定为零

答案:B。条件熵为零意味着已知 X 之后 Y 不再有任何悬念,即 Y 是 X 的确定性函数。A 独立时条件熵等于 H(Y) 而非零;C 错误,联合熵等于 H(X),通常不为零;D 错误,X 本身可以很有悬念。

Q8. 关于“联合熵不小于单个熵”这一结论,正确的理解有?

多选题 · mid

  • A.引入新变量不会减少系统的总不确定性← 正确答案
  • B.联合分布刻画了更多可能的状态组合← 正确答案
  • C.该结论源于条件熵的非负性← 正确答案
  • D.只有当 X 和 Y 独立时才成立

答案:ABC。A 正确,变量增多状态组合变多,总悬念不降;B 正确,联合状态空间是两变量状态的笛卡尔积,组合数更多;C 正确,H(X,Y)=H(X)+H(Y|X) 且 H(Y|X)≥0;D 错误,该结论对所有情况成立,与是否独立无关。

Q9. 一个 8×8 联合分布(X 和 Y 各有 8 种取值),联合熵的最大可能值是多少?

单选题 · easy

  • A.3 bit
  • B.6 bit← 正确答案
  • C.8 bit
  • D.64 bit

答案:B。联合状态共有 8×8=64 种组合,均匀分布时熵最大,最大值为 log₂64 = 6 bit。A 是 8 的单变量熵 log₂8=3;C 是状态数本身;D 是状态总数,忘了取对数。

Q10. 已知 H(X) = 2 bit,H(Y) = 1 bit,H(X,Y) = 2.5 bit,则互信息 I(X;Y) 为?

单选题 · hard

  • A.0.5 bit← 正确答案
  • B.1.5 bit
  • C.2 bit
  • D.3.5 bit

答案:A。互信息定义 I(X;Y)=H(X)+H(Y)−H(X,Y)=2+1−2.5=0.5 bit。它表示 X 和 Y 共享的信息量。B 把条件熵当成了互信息;C 把 H(Y) 当成了答案;D 把三个值直接相加,完全偏离定义。