CSYS5030 Week 02 Uncertainty and Entropy II 讲课总结

CSYS5030 Week 02 讲课总结:Uncertainty and Entropy II

课程:CSYS5030 — Information Theory and Self-Organisation,Semester 2 2026 讲师:Associate Professor Joseph Lizier 对应模块Module 2 - Uncertainty and Entropy II 来源:Week 02 seminar 字幕 + Canvas Module 2 页面

本周继续 entropy 主题,重点是熵的编码含义从经验数据估计熵,以及两个新度量:joint entropyconditional entropy。 Tutorial 会集中做 Item 7(joint entropy)Item 8(joint entropy for empirical data)Item 10(conditional entropy)


一、课程叙事回顾

老师每周开头都会"拉远镜头"看一遍课程主线:

板块 周次 在做什么
Introduction to Information Theory W1–4 熟悉基本度量:entropy、mutual information 及其条件版本。在 tutorial 里搭建一个能计算这些量的工具箱。做的事情简单直接,但是手段而非目的——目的是建立对这些度量含义的良好直觉
Empirical Analysis W5–8 "橡胶落地" —— 真实数据分析。更复杂的工具箱;如何把度量改造到连续实值数据上;如何评估统计显著性
Information Processing in Complex Systems W9– 深入分析真实复杂系统中信息如何被存储、传递和修改,随着大规模系统的状态随时间更新

本周位置:上周只讲了 entropy,本周继续 entropy,并加上 joint entropyconditional entropy


二、Scissors-Paper-Rock:第二个直觉游戏

2.1 玩法与数据收集

分成 3 人一组:2 人对战,1 人记录(记录到老师的网页,数据会在后续几周的课上分析)。

关键要求:每个人选定一个策略并坚持下去。 可选策略:

  • 每次完全随机
  • 每次换一个动作
  • 复制对手上一次的动作
  • 能打败对手上一次动作的那个
  • 少数人:试图看穿对手的策略并针对性击败他

每对打 15–30 局,然后点 "Submit all",轮换角色和分组再来。

2.2 反思:游戏里的不确定性与信息

类别 学生给出的答案
Uncertainty 对手下一步会出什么自己这一步的熵;甚至概率本身是多少我们都不知道(老师:"这个很 meta,但是个好点")
Information 对手的上一步动作,可以减少我对他下一步的不确定性 → 用信息论的话说:"对手的上一步动作里,含有关于他下一步动作的信息"
选择自己动作时用到的信息 上一局赢了还是输了;某个随机性来源(比如某串数字);自己的上一步、甚至自己前几步的序列;⭐ 以及最明显的一个——对手的动作序列

2.3 为什么玩这个游戏(三个目的)

# 目的
1 不确定性和信息这两个概念变得可触摸,并开始用定量语言表述
2 收集数据,后续几周真的去测这些量。例如:如果三种动作等概率 → 接近最大熵;如果"我从不出剪刀"→ 熵更低,不确定性更小
3 让你把自己放在一个"随时间更新的随机变量"的位置上

第 3 点是老师真正想埋的伏笔

当你执行一个策略时,你的行为就像一个 automaton(自动机)。 你接收输入(自己的前几步、对手的前几步、也许还有对手的性别),运行某个规则/算法决定下一个状态输出,从而产生一个时间序列的输出

这个思路会在学期后半段反复出现。


三、熵的含义:最优编码

3.1 核心陈述

⭐ 如果我们想传达某个变量取了什么符号: - Shannon information content 告诉我们传达这个具体取值要用多少 bit - Shannon entropy 告诉我们在所有符号上平均要用多少 bit

⚠️ 前提:在最优的压缩 / 编码方案下(optimal compression or encoding scheme)。

另一个等价视角 —— 最优的提问次数

每发送 1 个 bit,本质上就等于问了一个是非问题。 就像 Guess Who"这个角色是谁"这件事的熵,告诉我们最优情况下需要问多少个是非问题才能确定他。

3.2 赛马例子(必考计算)

4 匹马 A、B、C、D,要告诉别人哪匹赢了。

方案一:假设等概率(可能是个坏假设)

每匹 bits → 编码 A=00, B=01, C=10, D=11平均 2 bits。 如果假设成立,这就是最优的

方案二:概率有偏

A 1 bit
B 2 bits
C 3 bits
D 3 bits

原理:一旦概率有偏,给更可能的结果用更少的 bit,在更不可能的结果上吃点亏——因为它们本来就不常发生,吃的亏不重——平均下来用的 bit 更少

3.3 Huffman Coding(老师明说不考,但很值得懂)

"我不会考你 Huffman coding,但我觉得它很有意思。"

它是一种 prefix code(前缀码)

  • 没有停止符
  • 事先不知道每个符号用几个 bit
  • 正因如此才能省 bit

构造算法

  1. 从各符号节点出发,找出概率最小的两个
  2. 把它们合并成一个新节点,概率为两者之和;原来两个移出候选池
  3. 重复,直到只剩一个节点 → 得到一棵二叉树
  4. 给每次分叉的两条边分别标 0 和 1
  5. 从根往下读到每个符号,就是它的编码

对赛马例子

符号 编码 位数
A 0 1
B 10 2
C 110 3
D 111 3

恰好等于各自的 Shannon information content。

解码为什么不会歧义没有任何一个编码是另一个的前缀。收到比特流 0 10 110 111 110,从根开始逐位走,走到叶子就输出一个符号然后重新从根开始——不需要停止符,也不需要知道每个符号占几位

3.4 ⚠️ 信息不等于意义

Information isn't about meaning.

不确定性只是关于"有多少变异性"。 当我们看不确定性的减少(一个变量告诉了我们多少关于另一个变量的事)时,才有某种意义的成分但比特数本身不告诉你这些。 如果我测出 2 bits——那 2 个 bit 是什么?这个数字不会告诉你。

信息论只度量"量"(amount)。这个区分很重要。

3.5 英文文本的熵与 block coding

做法:从大语料统计每个字母的概率 → 转成 Shannon information content → 得到最优编码下每个字符应该用多少 bit → 取平均即为熵。 (Module 2 的扩展练习用的是九十年代美剧《Seinfeld》的全部剧本。)

问题:这些数不是整数。比如某个字符是 5.1 bits——你不可能用 5.1 个 bit,Huffman 只能给它 6 bits,这就有损失。

解法:block coding(分块编码)

一次编码 2 个或更多符号。假设它们独立,联合概率取乘积,对"符号对"跑同样的 Huffman 方案。 平摊到每个字符的比特数,会更接近理论下界。 一次 3 个 → 更接近;一次 4 个 → 再更接近。


四、从经验数据估计熵(Item 5)

4.1 与上周的区别

上周 本周
函数参数 概率info_content(p))或概率表entropy(p_table) 样本序列——一个 list 或 NumPy array,每个元素是一个样本
场景 我们已知概率 我们不知道概率,但有数据,要从数据估计

Scissors-Paper-Rock 的对应:把剪刀/布/石头编码成 0/1/2,玩家 1 的 15 局动作就是一个长度 15 的列表 [0, 2, 1, 1, 0, ...]

4.2 ⭐ Plug-in estimator

从样本计数直接估计的概率,被当作完全正确的概率。 例:11 个样本里看到 5 个 0,就认为

这就叫 plug-in estimator。(W5–8 会讨论它的问题和更好的估计器。)

4.3 实现步骤

1. 清理输入(转成 NumPy array
2. 找出字母表 —— 代码事先不知道有哪些符号,
np.unique 找出数据中出现过的唯一符号
3. 对每个符号统计出现次数(模板故意用循环逐个数,
虽然 np.unique(..., return_counts=True) 更快)
4. 把计数除以总样本数,归一化成概率
5. 把概率表传进上周写好的 entropy 函数

老师又强调了一次:"我知道这简单到离谱,重点就是逼你慢下来,想清楚这个计算是怎么来的。"

4.4 测试与边界情形

输入 期望 说明
[0, 0, 1, 1] 1 bit 50/50
[0, 0, 0, 0] 0 bits 完全确定,没有不确定性
['A', 'A', 'B', 'B'] 1 bit 符号可以是任何对象,代码只关心每个符号的出现概率

4.5 ⭐ 最重要的实验:有限样本的偏差

老师现场跑了随机抛硬币实验(每次 10 个样本):

第几次 得到的熵
1 0.97 bits
2 0.97 bits
3 1.00 bits
4 0.72 bits

结论(这是本周最重要的方法论要点):

你的经验数据只是真实底层分布的一次随机抽样,你不一定能得到理论值。而且熵这个量特别容易被"往下偏"(biased down)。

样本越多,经验数据中的概率就越能代表真实概率。1000 个样本时,大多数时候就能得到接近 1 bit 的结果。

这个现象直接引出 W5–8 的核心议题:小数据问题、估计器的偏差、以及如何判断一个度量结果是"真的有关系"还是"抽样噪声"。


五、Joint Entropy(联合熵)

5.1 定义

这是 entropy 的一个相当平凡的推广:把 换成联合变量,也可以是 甚至更多。

Guess Who 的例子:之前只看一个特征,问 ;现在可以问 —— 这就是联合概率

关于 entropy 的一切都原封不动地保留——只是变成多元的了:information content 是这个联合样本的惊讶度,uncertainty 是这个联合样本的不确定性。

术语:在多元情形下单独看其中一个变量时,我们说 marginal entropy(边缘熵)

5.2 ⚠️ 关键性质(易错)

联合熵不总是等于各自熵之和!这只对独立变量成立,一般情况下不成立。

老师留的小练习:独立意味着 把它代进联合熵的定义,看会发生什么,就能推出上式。

5.3 "粘起来"的直觉

对离散变量,可以把联合变量想成把符号粘在一起。 如果 都是二值的,联合变量的字母表大小是 4,符号是 —— 相当于一个四进制变量

这是一个合法的思考方式。

5.4 Shannon 熵的唯一性(三条公理的正式版)

有了联合熵,就能回头看熵的唯一性推导。Shannon entropy 是唯一满足以下三条性质的、量化随机变量不确定性的方式

# 公理 直觉
1 连续性 对底层概率分布连续;稍微改一点概率,熵只应稍微变一点,不应有阶跃
2 单调性 等概率符号字母表越大,不确定性越大
3 Grouping axiom(可加性) 变量独立时,它们的不确定性相加

这三条在数学上就足以锁定熵的形式——只剩对数底数(即单位)可选。 Shannon 和 Ash 的证明写法不同,但本质是同一件事。推导过程超出本课范围,但"它是唯一的"这件事很重要。


六、Conditional Entropy(条件熵)

6.1 定义与直觉

条件熵问的是:如果我们已经知道了某个可能与目标变量相关的东西,我们的惊讶度 / 不确定性会怎么变?

一句话:在已知另一个变量的样本的前提下,这个样本中还剩下多少平均惊讶度。

Scissors-Paper-Rock 的例子(老师现场举的,非常清楚):

一个玩家的三种动作可能是等概率的 → bits 的不确定性。 但如果他的策略是依次循环,那么:

只要我知道你的上一步,我对你下一步就完全没有不确定性了。

6.2 Venn 图直觉

用两个圆分别表示对 的不确定性,重叠部分表示两者共有的信息。

如果 里的一部分信息同时也是关于 的信息,那么当我知道了 的全部,我就知道了那块重叠。 我对 的不确定性因此被削减,剩下的就是重叠之外的那部分。

6.3 ⭐ 上界与两个边界情形

条件熵永远以无条件熵为上界 —— 知道一些关于 的事,平均而言不可能增加我们对 的不确定性。

边界情形 结果 含义
独立 知道 完全没有帮助,不确定性一点没减
一旦知道 里就没有惊讶剩下了

课堂追问:这是怎么发生的? 老师:都来自条件概率。如果知道 变得确定,那么 ,而 —— 是条件概率让这件事发生的

6.4 应用:英文文本的条件编码

问题:什么样的变量 能降低 的熵,从而在条件编码下缩短码长?

英文中相邻字符有大量相关性

⭐ 如果我看到一个 q,我几乎确定下一个字母是什么?—— u

单独看,字符 u 的 information content 可能不小;但换个角度问:"在刚看到 q 的条件下,字符 u 的条件 information content 是多少?" —— 几乎没有惊讶。

英语里有很多这样常见的字母组合(motifs / digraphs)把它们纳入考虑就能缩短码长


七、⭐ Chain Rule for Entropy(链式法则)

7.1 公式

对比 只在独立时成立;而链式法则永远成立

推广到多变量

顺序无所谓 —— 只要一路正确地条件化,最后都会得到同样的答案。 它不只适用于平均量(熵),也适用于具体实现上的 information content

7.2 老师的类比:复式记账

"这就像做正确的会计。如果你学过会计,就知道复式记账(double-entry bookkeeping)有多重要——这边记一笔,那边必须有对应的一笔。"

在累加总不确定性时,我已经把 的那份不确定性算过了。所以接下来看 时,必须是"在我已经看过的 的条件下"的 如果不这么做,你就没有在做正确的会计。

7.3 学生的好例子:单词 "information"

学生提问:如果我有单词 information,每个字符是一个字母,那么最后一个字母 n 是非常确定的,因为大部分信息已经在前面的字母里了——就是 Venn 图里那块重叠?

老师确认,并补充了链式法则视角

我可以整体地测这个词的 information content(取整个词的概率), 也可以一个字母一个字母地累加—— ⭐ 只要每往后移一位,都对已经看过的字母做条件化,两种算法会给出完全一样的答案。

等你走到最后一个字母时,你几乎可以确定它是 n,所以在正确条件化之后,它几乎没有增加任何东西

⚠️ 如果你不做条件化,就会在某种程度上重复计数,从而高估总的 information content。

这个链式法则后面会反复出现,非常重要。


八、考点重点

  1. 熵的编码含义:Shannon information content = 传达某个取值要用的比特数;Shannon entropy = 平均比特数必须加上"在最优编码方案下"这个前提
  2. 比特 ≈ 最优提问次数:每个 bit 相当于一个是非问题。
  3. 赛马计算题:等概率 → 2 bits;偏斜 1.75 bits。要会算,并能解释为什么给高概率结果分配更短的码能省 bit
  4. Huffman coding明说不考,但要理解 prefix code 的概念——没有停止符,没有固定长度,靠"无编码是他人前缀"保证可唯一解码
  5. Information isn't about meaning:信息论只度量,不告诉你那些 bit 是什么
  6. Block coding:因为最优比特数通常不是整数,一次编码多个符号能让平摊比特数逼近熵。
  7. Plug-in estimator:直接用样本频率当概率。
  8. 有限样本偏差:经验数据只是真实分布的一次随机抽样;熵尤其容易被低估(biased down)样本越多越接近真值。这是 W5–8 的伏笔。
  9. Joint entropy 公式marginal entropy 的含义。
  10. ⭐⭐ 只对独立变量成立 —— 这是最容易考的陷阱。会用 代入验证。
  11. "粘符号"直觉:两个二值变量的联合 = 一个四元字母表
  12. 熵唯一性的三条公理:连续性、(等概率下)随字母表增大而单调增、独立时可加。
  13. Conditional entropy 公式与含义:已知另一变量后剩余的平均惊讶度
  14. ⭐⭐ —— 条件化平均而言不会增加不确定性。两个边界:独立 → 等号; → 完全确定。
  15. ⭐⭐ Chain rule永远成立,可推广到 个变量,顺序无关。理解"复式记账"类比:不条件化就会重复计数、高估总量
  16. qu 的例子:条件 information content 远低于无条件的,因此条件编码能缩短码长。
  17. Scissors-Paper-Rock 的循环策略,但

九、两周下来你已经会算什么

老师在课末做了盘点:

经过两周,你已经能处理这里一半左右的内容了 —— entropy、conditional entropy、Shannon information content、conditional Shannon information content,这些都能算了。 还没讲的是 mutual information 和 conditional mutual information(下周开始)。

可选的 calculation exercises 里会出现的题型(和期末考题风格类似):

  • 给一个联合分布,要求手算这些量——写出公式、代入数字、算出最终答案
  • 基于 Guess Who 的角色表,根据可见特征计算熵或信息量
  • 编程题:例如熵或条件熵如何随概率分布的某个参数变化

答案会保留到 Week 5 或 6 再放出,届时老师会在课上或 tutorial 讲解。


十、行动清单