压缩就是智能:预测与压缩是同一枚硬币的两面
信息论说预测和压缩在数学上等价,所以语言模型的预训练目标可以重新理解为造一台最高效的文本压缩器,而不只是预测下一个 token。
核心论点 · 点时间戳可跳到原声
预训练目标其实是压缩
Karpathy 指出,大语言模型预训练通常被描述为「next token prediction」,用的是 cross-entropy loss,而 cross-entropy 这个词本身就来自信息论。信息论的一个结论是:预测和压缩在数学上等价,是同一枚硬币的两面。所以你可以把预训练目标完全重新表述为——不是预测下一个 token,而是造出最高效的文本压缩器。这个重新表述的价值在于,它让你更清楚 cross-entropy 到底是什么、为什么用它。
— Andrej Karpathy机器人例子:概率决定码长
用一个远在月球上的机器人做热身:指令只有上、下、左、右四种,但分布不均匀——一半是上,四分之一是下,八分之一是左,八分之一是右,且每条指令独立。朴素学生给每个指令固定两位,平均 2 bits;聪明学生用变长编码:0 表示上,10 表示下,110 表示左,111 表示右,加权平均 1.75 bits。关键约束是没有任何码字可以是另一个码字的前缀,这叫 prefix-free code,机器人才能无歧义解码。
— Andrej Karpathy完美压缩的输出像随机噪声
第三个「不切实际」的学生提出:随机噪声不可压缩,所以完美压缩算法产出的比特流应该和随机噪声无法区分。如果压缩后的 n 位比特流真的像随机噪声,那么所有 2 的 n 次方条消息必须等概率,每条概率为 1/2^n。反过来推,一条消息在完美方案里用 n 位,就意味着它的概率是 2 的负 n 次方。取 log 再取负,就得到 n = -log₂(p)。这个负 log 表达式就是信息论的基本公式,也是 Shannon 对「一个事件的信息量」的定义。
— Andrej Karpathy信息量是压缩的下界
完美压缩不总是可能,因为真实消息的概率通常不是 2 的整数次幂。更一般的说法是:一条消息的信息量给出了它能被压缩到多短的下界,至少在对所有可能消息取平均时成立。你完全可能把一个压缩算法过拟合到某一个具体案例上。机器人例子里概率太干净,全是 2 的幂,所以每个符号的信息量正好是整数比特;但自然语言里每个字母的概率高度依赖上下文,而且都不是 2 的幂,算出来的信息量全是小数。
— Andrej KarpathyShannon 让妻子猜下一个字母
Shannon 早期用 n-gram 统计,但长字符串在语料里根本不出现,统计就崩了。于是他换了个模型:他的妻子 Betty。Shannon 拿一本书,让 Betty 逐个猜下一个字母,猜错就写下正确字母,猜对就画一个破折号。这样转录出来的文本字母更少,但信息量相同——因为如果他能复制一个 Betty,只需要给她这份缩减文本就能还原原文。1950 年的论文里,他改成记录猜对需要几次,并据此反推人脑给真实字母分配的隐含概率。他分析语言时不是在纯做数据分析,而是在探测一个底层语言模型,也就是被访者的大脑。
— Andrej Karpathy熵就是每个符号的平均信息量
熵问的是一个信号里每个符号的平均信息量。因为完美压缩下码字长度等于信息量,所以熵本质上是在问压缩极限,给出一个信号能被压缩到多高效的下界。对任意概率分布,熵就是所有 p 乘以负 log₂(p) 再求和。可视化上,把概率分布画成堆叠的水平条,宽度是概率,上面每个条上放一个高度等于负 log₂(p) 的矩形,熵就是所有矩形面积之和。分布越均匀熵越高,越倾斜熵越低,符号种类越多熵也越高。
— Andrej Karpathy无噪声编码定理:极限可达
熵更精确的理解是:它描述了按这个分布编码一条消息时,每个符号所需的最小比特数。这就是 Shannon 1948 年那篇开创信息论的论文里的核心定理——noiseless coding theorem。它说没有任何编码能比这个极限更高效,而且更强的是,Shannon 证明了你总是可以任意接近这个极限。这个表达式只适用于每个符号服从同一分布的情况;自然语言不满足,需要更一般的 entropy rate,也就是对所有可能消息取平均,但这几乎从来不是一个能干净计算的东西。
— Andrej Karpathy英语每个字符约一比特
Shannon 估计英语的熵大约是每个字符一比特,前提是受访者有至少 100 个前置字母的上下文。这个数字很疯狂,因为它意味着英语可以被压缩到每个字符只需要一个是/否的答案。Karpathy 说在第三部里会展示那个算法:如果允许用高质量语言模型做编码和解码,实践中可以相当接近这个极限。他还预告第二部会讲 cross-entropy 以及它在训练大语言模型里的用法,还有大模型蒸馏成小模型、以及 GZIP 为什么能恢复不同语言之间的结构。
— Andrej Karpathy原话 · 已逐字校验
one of the conclusions of information theory says that prediction and compression are mathematically equivalent. They turn out to be two sides of the same coin.
信息论的一个结论是:预测和压缩在数学上等价。它们是同一枚硬币的两面。
Andrej Karpathy0:00
we can't really answer this question, or at least Shannon couldn't, without necessarily engaging with some notion of intelligence.
我们其实无法回答这个问题,至少 Shannon 不能,除非必然要涉及某种智能的概念。
Andrej Karpathy3:05
random noise should be incompressible, and therefore, a perfect compression algorithm should produce a bitstream that's indistinguishable from random noise.
随机噪声应该是不可压缩的,因此一个完美的压缩算法应该产生一个与随机噪声无法区分的比特流。
Andrej Karpathy10:13
the information of a message gives you a lower bound on how much it can be compressed, at least when you average overall possible messages.
一条消息的信息量给出了它能被压缩到多短的下界,至少在你对所有可能消息取平均时是这样。
Andrej Karpathy17:19
he wasn't just doing pure data analysis looking through books. He was trying to probe at an underlying model of language, namely the interviewee's brain.
他并不是在纯做数据分析、翻书。他是在试图探测一个底层的语言模型,也就是被访者的大脑。
Andrej Karpathy21:27
This question of measuring the average information per symbol is basically asking about the limit of compression.
测量每个符号平均信息量这个问题,本质上就是在问压缩的极限。
Andrej Karpathy24:29
no encoding can ever be more efficient than this limit, and even more strongly, he showed that it's always possible to get arbitrarily close to this limit.
没有任何编码能比这个极限更高效,而且更强的是,他证明了你总是可以任意接近这个极限。
Andrej Karpathy28:35
数字与实体
| 英语熵估计 | 约 1 bit/字符(受访者有至少 100 个前置字母上下文时) | 29:36 |
| 机器人例子中聪明学生的平均码长 | 1.75 bits/指令 | 5:10 |
| 机器人例子中朴素学生的平均码长 | 2 bits/指令 | 4:07 |
术语
- prefix-free code前缀码
- 没有任何码字是另一个码字前缀的编码方式,保证解码无歧义。
- noiseless coding theorem无噪声编码定理
- Shannon 1948 年证明:熵是压缩极限,且可任意接近。
- entropy rate熵率
- 随机过程中每个符号的平均信息量,适用于符号分布不固定的情况。
- cross-entropy loss交叉熵损失
- 语言模型预训练用的损失函数,名字来源于信息论。
收听指南
想补信息论直觉的工程师和研究者,尤其是天天用 cross-entropy loss 但没想清楚它为什么长这样的人。
最后约一分钟的虚拟招聘会广告可以跳过。