脱口秀演员在台上一个包袱接一个包袱,观众真正在意的是:平均每一句话,能给我带来多少“没想到”?这个“每句话的平均没想到”,在信息论里就叫熵率。单独一个包袱再炸,决定不了整场演出的信息密度;只有把一整晚的话按时间摊开,看看平均每句的新鲜度,才能回答“这位演员的信息源到底有多猛”。熵率正是回答这类问题的家伙:它把随机过程(比如源源不断的台词、文本、网络包)的不确定性,除以符号个数,再取极限,得到“每个符号平均承载多少比特信息”。理解熵率,你会更懂为什么文件能压缩、LLM 的困惑度为什么是 70 而不是 7,以及一个语言模型的“信息输出”到底有多稳定。

岗位关联

对 AI 从业者而言,熵率是刻在数据上的“信息血压计”:它告诉你压缩的天花板、模型的疑惑度,以及系统什么时候已经偏离了正常模式。

目录
  1. 可视化演示
  2. 熵率定义
  3. 极限存在定理
  4. 马尔可夫熵率
  5. 平稳过程熵率
  6. 压缩极限应用
  7. 语言模型困惑度
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

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

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

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

熵率定义

单看一个包袱的“没想到”程度,就像只看演员全场最炸的那一声,完全反映不了整场演出的信息量。真正有意义的是把演出当成一条时间线——第一句、第二句、第三句……源源不断——然后问:平均每一句带来了多少新信息?

把这场演出翻译成数学语言,就是随机过程:一串按时间排列的随机变量 \(X_1, X_2, \ldots, X_n\)。先看前 n 句话联合起来的总意外量,也就是联合熵 \(H(X_1,\ldots,X_n)\);把它除以 n,得到平均每句话的意外量;再把演出无限延长,让平均值稳定下来。这个极限就是熵率,单位是“比特/符号”。

把这个数字报给“观众委员会”,他们就知道:如果某晚的熵率明显偏低,说明演员在吃老本;如果一路走高,说明这场演出句句炸场。熵率正是这样一把尺子,度量一个信息源持续输出的平均新鲜度。

Hˉ(X)=lim⁡n→∞1nH(X1,X2,…,Xn)\displaystyle \bar{H}(\mathbf{X}) = \lim_{n \to \infty} \frac{1}{n} H(X_1, X_2, \ldots, X_n)
这个公式告诉我们:熵率不是某句话的熵,而是整场演出按时间平均后,每个符号稳定携带的新鲜感。
  1. 随机过程这是时间上依次出现的符号,比如脱口秀的第 1 句到第 n 句,组成一整场演出。
    X1,X2,…,XnX_1, X_2, \ldots, X_n
  2. 联合熵把前 n 句话当作一个整体,计算它们的联合不确定性,相当于“整段演出总共带来多少意外”。
    H(X1,X2,…,Xn)H(X_1, X_2, \ldots, X_n)
  3. 除以 n把总意外量平均到每一句话上,得到每句话的平均意外。
    1nH(X1,X2,…,Xn)\frac{1}{n} H(X_1, X_2, \ldots, X_n)
  4. 极限让演出长度无限增长,消除开头几句话造成的波动,得到稳定的平均值。
    lim⁡n→∞1nH(X1,…,Xn)\lim_{n \to \infty} \frac{1}{n} H(X_1, \ldots, X_n)

极限存在定理

剧场里有个老观众,从第一句话开始做笔记。他会发现,随着笔记越来越厚,自己对演员下一句的预判也越准——这就是“条件熵递减”的生活直觉。

数学上,已知过去的条件下,下一句的意外程度写作条件熵 \(H(X_n \mid X_1,\ldots,X_{n-1})\)。信息论有一条链式法则,把总联合熵拆成一串条件熵之和:\(H(X_1,\ldots,X_n)=\sum_{i=1}^{n}H(X_i\mid X_1^{i-1})\)。因为条件越多熵越少,这一串条件熵单调不增;又因为熵永远非负,所以极限必然存在。

老观众的“预判力”会无限接近一个天花板——这个天花板就是熵率。天花板高,说明演员的创造力稳定输出,历史笔记也无法完全预测他;天花板低,则说明套路已被摸透,继续追更的新鲜感所剩无几。

lim⁡n→∞H(Xn∣X1,X2,…,Xn−1)=lim⁡n→∞1nH(X1,…,Xn)=Hˉ(X)\displaystyle \lim_{n \to \infty} H(X_n \mid X_1, X_2, \ldots, X_{n-1}) = \lim_{n \to \infty} \frac{1}{n} H(X_1, \ldots, X_n) = \bar{H}(\mathbf{X})
这里 \(X_1^{n-1}\) 是“从第 1 句到第 n-1 句”的简写。左边是预测视角,右边是平均视角,两者收敛到同一个熵率。
  1. 条件熵已知前 n-1 句话之后,预测第 n 句话还剩多少意外。
    H(Xn∣X1n−1)H(X_n \mid X_1^{n-1})
  2. 单调递减知道的过去越多,下一句的相对意外只会越来越少或持平,绝不会反弹。
    H(Xn∣X1n−1)≤H(Xn−1∣X1n−2)H(X_n \mid X_1^{n-1}) \le H(X_{n-1} \mid X_1^{n-2})
  3. 有下界熵是非负的,所以这个递减序列不会无限坠落。
    H(Xn∣X1n−1)≥0H(X_n \mid X_1^{n-1}) \ge 0
  4. 平均等价递减的条件熵取平均后,与联合熵除以 n 的极限殊途同归。
    lim⁡n→∞1nH(X1n)=Hˉ\lim_{n \to \infty} \frac{1}{n} H(X_1^n) = \bar{H}

马尔可夫熵率

并不是所有演员都依赖整场笔记。很多演员的包袱结构是“上一句决定下一句”——只要知道刚说的那句,就能大致判断接下来的路数。这就是马尔可夫链的说话方式。

马尔可夫链把随机过程的状态看成演员的“段子抽屉”:当前在抽屉 i,下一句跳去抽屉 j 的概率写在状态转移矩阵 \(P_{ij}\) 里。要算整场演出的熵率,不能只盯着一个抽屉,还要知道演员长期停留在各个抽屉的比例——平稳分布 \(\mu_i\)。平稳分布告诉我们在无限长的演出里,各款段子被翻牌的概率是多少。

所以马尔可夫链的熵率,就是“把每个抽屉打开一看,各自装满惊喜,再按翻牌比例加权平均”。抽屉开得越勤,它的口味对整场演出影响就越大。

Hˉ=∑iμi(−∑jPijlog⁡Pij)=∑iμi H(Xn+1∣Xn=i)\displaystyle \bar{H} = \sum_{i} \mu_i \left( - \sum_{j} P_{ij} \log P_{ij} \right) = \sum_{i} \mu_i \, H(X_{n+1} \mid X_n = i)
马尔可夫链的熵率 = 每个状态的转移熵,按平稳分布加权平均。它把“逐句条件熵”的极限化解成一组线性代数的静态计算。
  1. 转移概率状态 i 跳到状态 j 的概率,就像“从讲 A 段子转到讲 B 段子”的衔接频率。
    Pij=Pr⁡(Xn+1=j∣Xn=i)P_{ij} = \Pr(X_{n+1}=j \mid X_n=i)
  2. 状态行熵站在状态 i 这个抽屉前,下一句话带来的平均意外。
    H(Xn+1∣Xn=i)=−∑jPijlog⁡PijH(X_{n+1} \mid X_n = i) = -\sum_j P_{ij} \log P_{ij}
  3. 平稳分布演出进行到无穷久之后,演员处于状态 i 的时间占比。
    μi=Pr⁡(Xn=i),n→∞\mu_i = \Pr(X_n = i), \quad n \to \infty
  4. 加权平均把每个抽屉的意外度按使用时长比例加权,就是全局熵率。
    Hˉ=∑iμi H(Xn+1∣Xn=i)\bar{H} = \sum_i \mu_i \, H(X_{n+1} \mid X_n = i)

平稳过程熵率

演出进行到后半场,演员的风格完全稳定:段子的分布不再随时间改变,这就是平稳过程。观众会发现,第 100 句和第 1000 句的“台词口味”没有本质差别。

平稳过程有一个重要性质:熵率不需要再算“长期平均”,可以直接取条件熵的极限。因为过去的信息会逐步暴露,条件熵 \(H(X_n\mid X_{n-1},\ldots,X_1)\) 单调下降趋于同一极限;历史再长,也不会让预测力突变。也就是说,平稳过程中“每符号平均信息量”和“基于无限历史的单步新信息量”是同一个数。

平稳过程像一位“风格定型”的演员:老观众只要听一阵子,就能把他的下一句锁定在某个稳定的意外值。这个稳定值既说明了演员的可预测程度,也决定了我们对他后续表演还能抱有多大期待。

Hˉ(X)=lim⁡n→∞H(Xn∣Xn−1,Xn−2,…,X1)\displaystyle \bar{H}(\mathbf{X}) = \lim_{n \to \infty} H(X_n \mid X_{n-1}, X_{n-2}, \ldots, X_1)
记忆再长的平稳过程,熵率也只需要看条件熵的极限;这比逐项计算联合熵再取平均要省力得多。
  1. 平稳性任意一段符号的联合分布,平移任意 k 步之后保持不变。
    Pr⁡(X1,…,Xn)=Pr⁡(X1+k,…,Xn+k)\Pr(X_1,\ldots,X_n) = \Pr(X_{1+k},\ldots,X_{n+k})
  2. 条件熵序列令 \(H_n\) 表示已知整段过去后预测第 n 句的意外。
    Hn=H(Xn∣Xn−1,…,X1)H_n = H(X_n \mid X_{n-1},\ldots,X_1)
  3. 单调收敛这个序列单调不增且非负,因此极限一定存在。
    H1≥H2≥⋯≥0H_1 \ge H_2 \ge \cdots \ge 0
  4. 等价于熵率条件熵的极限与联合熵平均的极限一致,是平稳过程的“嫡系”熵率。
    Hˉ=lim⁡n→∞Hn\bar{H} = \lim_{n \to \infty} H_n

压缩极限应用

如果把整场演出录下来存成文件,我们总希望能压到最小。熵率说:别白费劲了,平均每个符号低于这个比特数,你就再也无损压不动了。

把可能出现的 n 长文本集合记为 \(\mathcal{C}_n\),无损编码要区分这些文本,至少需要 \(\log_2 |\mathcal{C}_n|\) 比特;摊到 n 个符号上,每符号平均需要的比特数在 n 无穷大时恰好收敛到熵率。这就是无损压缩的理论下界。

Lempel-Ziv 这类“通用压缩”算法不预先知道概率分布,只用滑动窗口和字典匹配就能渐近逼近熵率,gzip、zstd 都是这个家族的代表。压缩器就像一个自动记录“演员套路”的场记员:套路越固定,场记越省纸,而熵率恰好告诉你这个“省纸上限”是多少。

lim⁡n→∞1nlog⁡2∣Cn∣=Hˉ(X)\displaystyle \lim_{n \to \infty} \frac{1}{n} \log_2 |\mathcal{C}_n| = \bar{H}(\mathbf{X})
换句话说,熵率就是“平均每个符号至少要花几个比特才能无损描述”。
  1. 编码集合所有概率大于 0 的长度为 n 的符号序列,构成可能文本的清单。
    Cn={x1n:Pr⁡(x1n)>0}\mathcal{C}_n = \{ x_1^n : \Pr(x_1^n) > 0 \}
  2. 对数总个数要区分这些文本,二进制编码至少需要这么多比特。
    log⁡2∣Cn∣\log_2 |\mathcal{C}_n|
  3. 每符号比特把总比特数分摊到 n 个符号上,得到平均码长。
    1nlog⁡2∣Cn∣\frac{1}{n} \log_2 |\mathcal{C}_n|
  4. 极限关系n 趋于无穷时,这个平均码长收敛到熵率,构成压缩不可能三角的底边。
    1nlog⁡2∣Cn∣→Hˉ\frac{1}{n}\log_2|\mathcal{C}_n| \to \bar{H}

语言模型困惑度

要让机器预测演员的下一句话,就得给机器的“脑内剧本”打分。机器预测得越准,平均每次“猜错”的意外就越小——这个平均意外的指数化度量,就是困惑度。

给定语言模型 \(P(w_i\mid w_1^{i-1})\),可以把语言看成随机过程,用真实文本计算它的平均对数概率,也就是交叉熵估计。把交叉熵取 2 的幂,就得到困惑度:

困惑度与熵率是一枚硬币的两面:模型越了解语言的统计规律,熵率越低,PPL 也越小。给两个语言模型打分时,PPL 低的那个通常更懂语言的“接话套路”,这比只看损失函数曲线直观得多。

Perplexity=2Hˉ≈exp⁡(−1n∑i=1nlog⁡2P(wi∣w1i−1))\displaystyle \mathrm{Perplexity} = 2^{\bar{H}} \approx \exp\left( -\frac{1}{n} \sum_{i=1}^{n} \log_2 P(w_i \mid w_1^{i-1}) \right)
困惑度可以直译为“模型平均在多少个候选词之间犹豫”。PPL 越接近 1,说明模型越能锁定下一个词;PPL 接近词表大小,说明模型基本在瞎猜。
  1. 下一个词概率模型在已知前 i-1 个词的条件下,给第 i 个词分配的概率。
    P(wi∣w1i−1)P(w_i \mid w_1^{i-1})
  2. 对数平均对所有真实词的概率取对数再求平均,得到经验交叉熵。
    −1n∑i=1nlog⁡2P(wi∣w1i−1)-\frac{1}{n}\sum_{i=1}^n \log_2 P(w_i \mid w_1^{i-1})
  3. 指数映射把交叉熵从“比特”换回“犹豫的候选数”。
    2[交叉熵]2^{[\text{交叉熵}]}
  4. 与熵率一致当模型接近真实语言分布时,PPL 就逼近 2 的熵率次方。
    PPL=2HˉPPL = 2^{\bar{H}}

AI 应用场景

文本压缩与传输优化

阶段:数据预处理与存储优化

解决的问题:传统压缩工具(gzip)不知道理想压缩比,工程师无法判断文件是否还有压缩空间。用熵率估算语料的理论下限后,就能量化“压缩器离天花板还有多远”,并决定是否值得换用更重的算法或做分词预处理。

具体案例:一个在线小说平台存储海量章节,先用字符级 n-gram 估算语料熵率约 1.8 bit/字符,而 gzip 实测 2.1 bit/字符,说明还有约 14% 的优化空间;改用更强的 PPM/LZMA 后达到 1.9 bit/字符,节省了可观的存储成本。

大语言模型困惑度评估

阶段:模型训练与评估

解决的问题:训练大语言模型时,损失函数本身就是交叉熵,而困惑度 PPL = 2^熵率 提供了更直观的语义:模型平均在多少个候选词之间犹豫。传统只看 loss 曲线不够直观,PPL 让工程师能对齐“模型预测力”和“人工观感”。

具体案例:训练一个中文 GPT,验证集 PPL 从 120 降到 45,表示平均候选数从 120 个降到 45 个;配合人类评测发现,PPL 越低,生成文本的衔接越自然、重复率越低。

时序异常检测

阶段:在线监控与异常判定

解决的问题:传统阈值规则难以适应复杂流量波动。先估计正常时序的熵率作为基线,再实时观测条件熵是否显著偏离基线,偏离即告警,无需人工设计大量规则。

具体案例:安全团队对服务器请求序列做熵率基线,正常时段约 0.8 bit/符号;某次攻击使请求熵率飙升至 2.3 bit/符号,系统在几分钟内触发告警,早于传统的速率阈值方案。

Python 演示

python61 行
# -*- coding: utf-8 -*-"""熵率计算:从马尔可夫链到文本 n-gram 的经验熵率"""import math  def stationary_dist(trans, tol=1e-12):    """迭代求平稳分布: pi = pi * P"""    n = len(trans)    pi = [1.0 / n] * n    for _ in range(10000):        nxt = [sum(pi[i] * trans[i][j] for i in range(n)) for j in range(n)]        diff = max(abs(nxt[i] - pi[i]) for i in range(n))        pi = nxt        if diff < tol:            break    return pi  def markov_entropy_rate(trans):    """按公式 sum_i pi_i * H(P_i行) 计算马尔可夫链熵率"""    pi = stationary_dist(trans)    rate = 0.0    for i in range(len(trans)):        for j in range(len(trans)):            p = trans[i][j]            if p > 0:                rate -= pi[i] * p * math.log2(p)    return rate  def empirical_entropy_rate(text, order=1):    """用 k 阶马尔可夫近似估算文本熵率, 条件熵按出现次数加权"""    table = {}    for i in range(len(text) - order):        ctx = text[i:i + order]        nxt = text[i + order]        if ctx not in table:            table[ctx] = {}        table[ctx][nxt] = table[ctx].get(nxt, 0) + 1     total_h = 0.0    total_n = 0    for ctx, children in table.items():        s = sum(children.values())        for cnt in children.values():            p = cnt / s            total_h -= p * math.log2(p)        total_n += s    return total_h / total_n  if __name__ == "__main__":    P = [        [0.9, 0.1],        [0.3, 0.7],    ]    print("两状态马尔可夫链熵率 = %.4f bit/符号" % markov_entropy_rate(P))     s = "奇变偶不变, 符号看象限. 奇变偶不变, 符号看象限. 奇变偶不变, 符号看象限."    for k in (1, 2, 3):        print("k=%d 阶文本经验熵率 = %.4f bit/字符" % (k, empirical_entropy_rate(s, k)))
目的:先演示马尔可夫链熵率的理论计算,再用字符级 n-gram 从文本中估计经验熵率,直观看到“记忆长度越长的模型,熵率越低”这一规律。
  1. def stationary_dist(trans, tol=1e-12):定义平稳分布迭代求解器,是马尔可夫熵率计算的前置步骤
  2. nxt = [sum(pi[i] * trans[i][j] for i in range(n)) for j in range(n)]一次矩阵-向量乘法,相当于让分布沿转移矩阵演化一步
  3. rate -= pi[i] * p * math.log2(p)对应公式中 \(\sum_i \mu_i \sum_j -P_{ij}\log P_{ij}\) 的累加
  4. table[ctx][nxt] = table[ctx].get(nxt, 0) + 1统计每个上下文后接字符的出现频次,构建文本的 n-gram 转移表
  5. total_h -= p * math.log2(p)计算某个上下文下的条件熵,按出现次数累计
  6. return total_h / total_n用总出现次数归一化,得到经验条件熵,即文本的近似熵率

常见误区

误区“我在算平稳过程的熵率时,直接用 H(X_n) 就行,反正平稳过程中每个符号的分布都一样。”

正解平稳只说明每个位置的边际分布相同,不代表符号之间独立。若符号存在依赖,H(X_n) 会高估真实熵率;正确做法是用条件熵极限或联合熵除以 n。就像脱口秀演员虽然每句话都“平稳”地讲,但总能接住前一句,单看每句的无条件意外远大于追剧时的实际新鲜感。

为何常见:很多教材先讲离散无记忆信源,它的熵率恰好等于 H(X),这种先入为主的直觉被错误推广到了所有随机过程。

误区“只要算法足够好,文件就能越压越小,没有下限。”

正解熵率给出无损压缩的理论下界。如果语料熵率为 2 bit/字符,那么任何无损压缩平均至少需要 2 bit/字符;再聪明的算法也不能突破,除非允许有损或依赖外部共享知识。

为何常见:网上流传的“神奇压缩”多基于高度冗余的模拟数据或把共享词典藏在外部,让人误以为压缩没有极限。

误区“既然链只依赖当前状态,那挑一个典型状态的转移熵就是熵率。”

正解必须按平稳分布对所有状态加权平均。高频状态贡献更大;只挑一个状态算,就好比只听演员最拿手那个段子抽屉,却忽略他平时常在几个抽屉间来回换。

为何常见:课堂练习常用对称链,各状态出现比例相同,加权与单态一致,掩盖了加权这一步的重要性。

误区“验证集 PPL 下降,模型就一定变聪明了。”

正解PPL 只是熵率的指数映射,衡量的主要是预测能力;如果训练集和验证集分布泄漏,或测试数据被模型见过,PPL 会虚低。还需要结合生成质量、覆盖度、tokenizer 差异综合判断。

为何常见:模型指标单一化是常见偷懒,排行榜上 PPL 最低的模型不一定在真实产品里表现最好。

面试题

Q1. 一个离散无记忆信源每次产生 1 个符号,单符号熵为 2 比特,则这个信源的熵率是多少?

单选题 · easy

  • A.每符号平均1比特
  • B.每符号平均2比特← 正确答案
  • C.每符号平均4比特
  • D.每符号不可确定

答案:B。无记忆信源的符号相互独立,联合熵 = n × H(X),除以 n 后取极限就是 H(X) = 2 比特/符号。这就像每句话都独立爆梗的演员,平均每句的新鲜感就等于单句的新鲜感。

Q2. 计算一个马尔可夫链的熵率,必须知道下列哪一组信息?

单选题 · easy

  • A.转移矩阵与平稳分布← 正确答案
  • B.初始分布与状态个数
  • C.联合熵与样本条数
  • D.自信息与消息总数

答案:A。马尔可夫链熵率公式 \(\bar{H}=\sum_i \mu_i H(X_{n+1}\mid X_n=i)\) 需要转移矩阵 \(P_{ij}\) 和平稳分布 \(\mu_i\)。初始分布只影响开头几步,状态数单独不足以描述转移结构。

Q3. 关于平稳随机过程的条件熵 \(H(X_n\mid X_1^{n-1})\),下列说法正确的是(多选)?

多选题 · mid

  • A.已知越多条件熵不增← 正确答案
  • B.条件熵极限等于熵率← 正确答案
  • C.联合熵一定单调递减
  • D.条件熵一定单调递增

答案:AB。条件越多熵越小,因此条件熵单调不增且极限等于熵率。联合熵 \(H(X_1,\ldots,X_n)\) 随 n 增大而增大,C 错;条件熵是递减而非递增,D 错。这就像笔记越多越能预测下一句。

Q4. 平稳过程的熵率可以由下列哪个量直接取极限得到?

单选题 · mid

  • A.无条件熵 H(Xn)
  • B.条件熵极限值← 正确答案
  • C.初始熵的数值
  • D.转移熵的总和

答案:B。平稳过程的熵率等于 \(\lim_{n\to\infty} H(X_n\mid X_{n-1},\ldots,X_1)\),即条件熵极限。无条件熵 H(X_n) 忽略了符号间依赖,会高估熵率;初始熵与过程和极限无关。

Q5. LZ 系列压缩算法在渐近意义上逼近什么?

单选题 · mid

  • A.语言的熵率← 正确答案
  • B.词表大小的对数
  • C.均匀分布的最大熵
  • D.压缩后字节数为零

答案:A。LZ 算法不依赖预设分布,通过字典匹配渐近达到信源的熵率,即无损压缩的理论下界。词表大小只决定最大可能熵,均匀最大熵是独立同分布时的特例,都不等于真实语言的熵率。

Q6. 关于困惑度 PPL 的说法,正确的是(多选)?

多选题 · mid

  • A.PPL等于2的交叉熵← 正确答案
  • B.PPL越小模型越好← 正确答案
  • C.PPL等于平均候选数← 正确答案
  • D.PPL与熵率无关

答案:ABC。PPL 的定义就是 2 的交叉熵次方,也等价于“平均候选词数”,值越小说明模型预测越准。但 PPL 与熵率密切相关:当模型接近真实分布时,PPL 趋近 2^熵率,因此 D 错。

Q7. 一个随机过程若始终输出同一个符号(常数列),其熵率为多少?

单选题 · hard

  • A.0比特每符号← 正确答案
  • B.1比特每符号
  • C.无穷大比特
  • D.词表大小的对数

答案:A。常数列完全可预测,每个符号携带的新信息量为 0,联合熵恒为 0,除以 n 取极限仍为 0。这对应全场演员每句话都完全一样,观众毫无意外,熵率自然为零。

Q8. 困惑度 PPL=16 表示模型预测下一个词时,平均相当于在多少个候选间选择?

单选题 · easy

  • A.平均有16个候选← 正确答案
  • B.平均有2个候选
  • C.平均有4个候选
  • D.平均有64个候选

答案:A。PPL 的语义就是“平均候选词数”,因此 16 表示模型平均在 16 个词之间犹豫。PPL 越大,模型的预测越分散;PPL 越接近 1,越能锁定唯一正确的下一个词。

Q9. 关于无损压缩与熵率的关系,正确的有(多选)?

多选题 · hard

  • A.熵率是平均码长下界← 正确答案
  • B.压缩比与熵率正相关
  • C.熵率越低压缩率越高← 正确答案
  • D.压缩比精确等于熵率

答案:AC。熵率给出无损压缩平均码长的理论下界,因此熵率越低,文本越可压缩,压缩率越高。但 B 说反了(熵率低 → 压缩率高,而非正相关),D 忽略了编码器实现开销,压缩比只能逼近熵率而非精确相等。

Q10. 若条件熵单调递减收敛到 H,则每符号平均联合熵 \((1/n)H(X_1,\ldots,X_n)\) 的极限是?

单选题 · extreme

  • A.仍然等于H← 正确答案
  • B.严格大于H
  • C.严格小于H
  • D.极限不存在

答案:A。联合熵可以拆成条件熵之和,而条件熵序列收敛到 H,平均值序列作为其 Cesàro 平均也收敛到同一极限 H。这就像整晚演出的平均新鲜度最终等于老观众预测力的天花板。