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 entropy 和 conditional 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 entropy 与 conditional 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,要告诉别人哪匹赢了。
方案一:假设等概率(可能是个坏假设)
每匹 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
构造算法:
- 从各符号节点出发,找出概率最小的两个
- 把它们合并成一个新节点,概率为两者之和;原来两个移出候选池
- 重复,直到只剩一个节点 → 得到一棵二叉树
- 给每次分叉的两条边分别标 0 和 1
- 从根往下读到每个符号,就是它的编码
对赛马例子:
| 符号 | 编码 | 位数 |
|---|---|---|
| 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) |
老师又强调了一次:"我知道这简单到离谱,重点就是逼你慢下来,想清楚这个计算是怎么来的。"
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 的例子(老师现场举的,非常清楚):
一个玩家的三种动作可能是等概率的 →
只要我知道你的上一步,我对你下一步就完全没有不确定性了。
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。
这个链式法则后面会反复出现,非常重要。
八、考点重点
- ⭐ 熵的编码含义:Shannon information content = 传达某个取值要用的比特数;Shannon entropy = 平均比特数。必须加上"在最优编码方案下"这个前提。
- 比特 ≈ 最优提问次数:每个 bit 相当于一个是非问题。
- ⭐ 赛马计算题:等概率 → 2 bits;偏斜
→ 1.75 bits。要会算,并能解释为什么给高概率结果分配更短的码能省 bit。 - Huffman coding:明说不考,但要理解 prefix code 的概念——没有停止符,没有固定长度,靠"无编码是他人前缀"保证可唯一解码。
- ⭐ Information isn't about meaning:信息论只度量量,不告诉你那些 bit 是什么。
- Block coding:因为最优比特数通常不是整数,一次编码多个符号能让平摊比特数逼近熵。
- ⭐ Plug-in estimator:直接用样本频率当概率。
- ⭐ 有限样本偏差:经验数据只是真实分布的一次随机抽样;熵尤其容易被低估(biased down);样本越多越接近真值。这是 W5–8 的伏笔。
- Joint entropy 公式;marginal entropy 的含义。
- ⭐⭐
只对独立变量成立 —— 这是最容易考的陷阱。会用 代入验证。 - "粘符号"直觉:两个二值变量的联合 = 一个四元字母表
。 - 熵唯一性的三条公理:连续性、(等概率下)随字母表增大而单调增、独立时可加。
- ⭐ Conditional entropy 公式与含义:已知另一变量后剩余的平均惊讶度。
- ⭐⭐
—— 条件化平均而言不会增加不确定性。两个边界:独立 → 等号; → 完全确定。 - ⭐⭐ Chain rule:
,永远成立,可推广到 个变量,顺序无关。理解"复式记账"类比:不条件化就会重复计数、高估总量。 q→u的例子:条件 information content 远低于无条件的,因此条件编码能缩短码长。- 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 讲解。