重新发明熵:压缩即智能 Part 1
导读

当你把一段文字编码成 0/1 比特时,总希望用尽可能少的数据——那有没有一个理论下限?
这个问题至少可以追溯到 1940 年代 Claude Shannon 开创信息论的工作。更有意思的是,Shannon 当年为回答「能压缩多紧」而发展出的数学,在今天大模型训练里仍然是核心:大语言模型预训练做的是「next token prediction」,用的损失函数叫 cross-entropy loss——而信息论有一个深刻结论:预测与压缩在数学上等价。
于是你完全可以换一个视角:大模型预训练并不是在学「下一个 token」,它本质上是在学习一个最高效的文本压缩器。有人甚至把这总结成一句挑衅的口号:"Compression is intelligence."(压缩即智能)
本系列共三部视频,目标是把这句口号背后的数学铺垫清楚。Part 1 聚焦「压缩的极限到底在哪里」,并带你重新发现两个核心定义——信息(information) 与 熵(entropy)。
1. 热身例子:月球机器人

想象一台被送到遥远月球表面的漫游机器人,我们要从地球向它发送「上 / 下 / 左 / 右」四种移动指令。关键假设是:
- 指令分布极不均匀:上 1/2,下 1/4,左 1/8,右 1/8
- 每条指令独立于上下文
数据以比特流形式传输,非常昂贵。最省比特的编码方式是什么?Grant 虚构了三个学生的回答:
学生 A(朴素):固定 2 比特
直接给四个指令各分配 2 比特:00=上, 01=下, 10=左, 11=右。平均每条指令 2 比特。机器人按 2 位一组切分即可解码。
学生 B(聪明):不等长编码

利用「上」出现最频繁,把最常见指令编得最短:
| 指令 | 概率 | 码字 |
|---|---|---|
| 上 | 1/2 | 0 |
| 下 | 1/4 | 10 |
| 左 | 1/8 | 110 |
| 右 | 1/8 | 111 |
平均码长:1/2·1 + 1/4·2 + 1/8·3 + 1/8·3 = 1.75 比特/指令。比 2 比特省 12.5%。
一个必须解决的问题:机器人怎么切分?
变长码字会立刻让你担心歧义——机器人怎么知道该在哪个比特之间断开?
答案是前缀性质:任何一个码字都不能是另一个码字的前缀。学生 B 的方案满足:以 0 开头的只有「上」,以 10 开头的只有「下」,一旦读到 110 或 111 就是左或右。接收端只要沿比特流边走边看,一旦拼成某个完整码字就立刻输出并重新开始,永远不会有歧义。
满足这个性质的编码称为 prefix-free code(前缀码)。
前缀码的几何直观:二叉树可视化

把所有可能的二进制串按层级画成一棵二叉树:
- 第 n 层列出所有长度为 n 的比特串
- 所有以
0开头的串在左半棵子树,1开头的在右半棵子树 - 递归下去,任何一个串都是它下方所有串的前缀
当你把 0 这个长度为 1 的串分配给「上」,你就封死了整棵左子树——占掉了所有可能码字空间的一半。分配 10 给「下」又吃掉 1/4,剩下来 110 / 111 各吃 1/8。刚好,所有概率之和为 1,空间刚好用完。
注意一个醒目的巧合:每种指令占掉的空间比例恰好等于它的概率。这不是偶然——它就是信息论最初的洞见。
2. 完美压缩长什么样?
学生 C("飘在云端"的那位)根本没去想具体编码,他在问一个更抽象的问题:什么样的性质会让一个压缩方案"完美"?
关键洞察:压缩后的比特流应该像随机噪声

一个真正完美的压缩器,它输出的比特流在接收者看来应该和随机噪声无法区分——每一位是 0 还是 1 都恰好在做一次公平的独立抛硬币。
为什么?回到学生 B 的例子验证:
- 第一位:以 1/2 概率是 0(上),1/2 是 1(其他) → 公平硬币
- 如果第一位是 1,第二位:1/2 是 0(下),1/2 是 1(左/右) → 又一次公平硬币
- 如果第二位是 1,第三位:1/2 是 0(左),1/2 是 1(右) → 再一次公平硬币
每多一位都是独立的 50/50——完美压缩的比特流确实就是白噪声。
为什么随机噪声不可再压缩?
从接收者角度想:若接收到 n 比特,这对应 2ⁿ 种可能消息。因为看起来像随机噪声,这 2ⁿ 种消息等概率,每个概率都是 2⁻ⁿ。
现在假设你想让某一条消息用更少的比特——把它往下挪一层树(更短),那它的"位置"必然与另一条消息重叠,你就得把另一条往上挤(多花 1 比特)。省下 1 比特却让别处多花 2 比特,净亏。摁下葫芦浮起瓢。
结论:对完全等概率的消息,最优方案就是给它们一样多的比特——任何偏差都会更差。
3. 定义"信息"

由上面的论证,一个完美压缩器给某条消息分配的比特数 n,必然满足:
这个式子,就是信息论最基本的公式。Shannon 把这个 n 定义为该事件的 信息量(information),也常写作 \(I = -\log_2 p\) 或等价地 \(I = \log_2(1/p)\)。
直觉
把概率想象成饼图里的一小块——这块越小,对应 \(-\log p\) 条就越高:
- 极罕见的消息 → 信息量高("哇!"的感觉)
- 几乎板上钉钉的事 → 信息量接近 0(毫不意外)
读这个式子最直观的方式:它在问你,要把可能性空间对半切多少次才能落到这个事件上。
分数比特的含义
在机器人例子里,每个概率都是 2 的幂,所以信息量正好是整数比特。但真实场景下概率往往不是 2 的幂,算出来是分数。分数比特的意义不是「某条消息用 2.3 个比特编码」,而是说:
- 对整段消息(很多符号拼起来),平均每符号所需比特数会收敛到这个分数值
- 它给出了平均压缩率的下界
整段消息的概率是各符号条件概率之积(条件概率链规则),取 log 之后乘法变加法,所以一段消息的总信息量 = 各符号信息量之和——这正是 log 用在这里的精妙之处。
4. 语言的信息

从机器人跳到自然语言,出现两个关键差异:
- 强上下文依赖:每个下一个字母的概率高度依赖上文(n-gram、长上下文)
- 概率不是 2 的幂:信息量几乎总是分数
对一段自然语言(比如 Grant 在视频里用本地小模型逐字母算出的概率分布),每个字母的信息量都是些零碎的小数字。把它们加起来就是整段文本的信息量。
但这里隐藏一个更深刻的问题:你怎么知道每个下一个字母的真实概率? 甚至——"语言的真实概率"到底是什么意思?
Shannon 当年的方法:让他妻子当语言模型

早在 1948 年前后,没有语料库、没有语言模型,Shannon 用一个极其聪明的实验估算英语的信息量:
- 拿出一本书,让妻子 Betty 逐个字母猜下一个字母
- 猜对 → 记作短横
-,猜错 → 写下正确字母 - 这样得到一份"残缺文本",字母比原文少得多
他的论证:只要你有 Betty 这个"模型"的完全副本,靠这份残缺文本就能完全恢复原文——因此它和原文携带相同的信息。这非常直观地展示了"可预测性=可压缩性"。
在 1950 年的经典论文 Prediction and Entropy of Printed English 中,他进一步让多名受试者参与,并记录每个位置需要猜几次才对,再把"猜测次数"映射成隐含的概率分布,从而估算英语平均每个字符的信息量。
关键洞察:Shannon 并不是在对文本做纯数据分析,他实际上在探测一个理解语言的"黑箱模型"——人类大脑。 今天我们不再满足于审问大脑,而是直接训练这样的模型(大语言模型),这也正是我们回到信息论的动机。
5. 定义"熵"

有了单个事件的信息量,下一步是问:平均每个符号携带多少信息?
对任意一个符号分布 \(\{p_i\}\),熵 H 定义为:
可视化
Grant 用水平条形图把分布画出来:每条宽度 = 概率 \(p_i\),高度 = 信息量 \(-\log p_i\)。整个"面积"就是熵——加权平均的信息量。
- 分布越均匀 → 每条都有不可忽略的高度 → 总面积越大 → 熵高(不确定性大)
- 分布越偏斜(某个事件压倒多数)→ 绝大多数事件概率低 / 但主导事件信息量几乎为 0 → 总面积小 → 熵低(几乎确定)
- 符号种类越多(概率空间切得越细)→ 每条更高 → 熵更高
Von Neumann 的八卦
据说 Shannon 为命名纠结时,Von Neumann 建议他叫 entropy(熵):一是因为这个式子和统计力学里的熵长得像,二是因为"没人真正知道熵是什么,所以辩论里你永远占上风"。Grant 查证后认为这个故事大概率是后人编的,但也有几分真实。
Shannon 无噪声编码定理
Shannon 在 1948 年论文里证明了:
- 下界:任何编码方案的平均码长都不可能低于熵 H
- 可达性:存在编码方案(例如算术编码,Part 3 会讲)能把平均码长任意逼近 H
所以 熵 = 这个分布下,你对每个符号至少需要花多少比特——它就是压缩的理论极限。
重要提醒:独立同分布假设
上述公式对「每个符号都从同一分布抽取」的情况严格成立(比如机器人)。自然语言中每个字母的分布随上下文变化,严格来说要用熵率(entropy rate)——对所有可能消息取平均——概念一样,但很难精确计算。这就是为什么 Shannon 当年不得不诉诸实验估计。
6. 回到"压缩即智能"

在 Part 1 结尾,Grant 把一个意味深长的事实点透:
当 Shannon 试图估算英语的压缩极限时,他发现自己不得不去探测一个智能的语言模型(人的大脑)才能给出有意义的答案。纯粹从语料做统计是不够的——长上下文情况下你根本没有足够数据,而恰恰是长上下文最可压缩,也是"理解"最关键的时候。
这句话为整个系列埋下伏笔:要回答"压缩的极限",你无法回避某种形式的智能。
关键概念速查
| 概念 | 公式/含义 | 直觉 |
|---|---|---|
| 前缀码(prefix-free code) | 没有码字是另一码字的前缀 | 可以即时解码、无前瞻歧义 |
| 信息量 I(p) | \(-\log_2 p\) | 事件越罕见,信息量越大;单位"比特" |
| 熵 H | \(-\sum_i p_i \log_2 p_i\) | 分布的平均信息量 = 压缩下限 |
| 完美压缩性质 | 输出像公平抛硬币 | 每一位都是独立 50/50 |
| Shannon 无噪声编码定理 | 熵既是下界,也可任意逼近 | H 是压缩的天花板 |
下一步
Part 2 将研究:当你对真实分布 P 的模型搞错成了 Q 时,压缩会多花多少比特?这正是 cross-entropy(交叉熵) 的来源,而它正好就是大模型预训练里的损失函数。Part 3 则会动手实现一种叫算术编码(arithmetic coding)的算法,把"预言机变成压缩器"这件事变成具体代码,直接验证预测和压缩的等价性。