压缩就是智能:重新诠释香农的熵


为什么说压缩就是智能?一个机器人搬家问题带你入门信息论!AI训练的本质是压缩?从香农到ChatGPT的底层逻辑

信息论入门:怎么用“猜下一个字”来理解熵和交叉熵?

语言的可压缩性不仅仅是数学上的奇闻,它是你使用的每个语言学习模型背后的隐藏引擎。

格兰特的新视频通过一个优雅的视角重新诠释了香农的熵:

预测即压缩。

  • 你猜下一个词猜得越准,存它需要的比特就越少。
  • 香农算过,英语每个字符大约只有1比特的真实信息——压缩空间巨大。
  • GPT这类模型优化的,恰恰就是这个。
  • 按这个说法,智能就是压缩。


有趣的事实:冯·诺伊曼告诉香农,把熵命名为“熵”,因为反正也没人真正理解它  

几十年后,这一概念成为了现代人工智能的基石。

压缩就是智能?别急,咱们先从机器人搬砖说起


这期视频讲的是“信息论”怎么跟“压缩”和“智能”扯上关系的。简单说,你训练一个AI让它猜下一个字是啥,其实就是在让它学怎么把一段话压得更小。压得越小,说明它越“懂”这段话。所以有人说,“压缩就是智能”。咱们今天就先搞懂最基础的问题:压缩的极限到底在哪?

咱们来想象一个特别简单的场景。你派了个机器人去月球搬砖,你在地球上只能给它发四种指令:上、下、左、右。每次指令都要用一堆0和1组成的代码发过去,发得越短越省钱。

最笨的办法就是每个指令固定用两个bit,比如00是上,01是下,10是左,11是右。这样发一串指令,机器人就每两个bit一读,清清楚楚。

但问题是,你发的指令不是平均的。比如“上”占了50%,“下”占了25%,“左”和“右”各占12.5%。那你还用两个bit表示“上”,不就太浪费了吗?

这时候来了个聪明学生。他说,咱们给“上”只分配一个bit,比如0。“下”给两个bit,比如10。“左”给三个bit,110。“右”给三个bit,111。这样一算,平均每个指令只要1.75个bit,比原来的2个bit省了。

你可能会担心,机器人拿到一串0和1,怎么知道从哪断开?比如它先收到一个1,那可能是“下”的第一位,也可能是“左”或“右”的第一位。没关系,它继续读下一个。如果下一个是0,那“10”只能是“下”,它就懂了。这就是“前缀码”的玩法:没有一个指令的编码是另一个指令编码的开头。

这个编码方式漂亮在哪?你看,它分配给的bit数,刚好是“负的log2(概率)”。比如“上”概率1/2,负log2(1/2)=1,给1个bit。“下”概率1/4,负log2(1/4)=2,给2个bit。完美契合。

那这个“负log概率”到底是个啥?它就是“信息量”。一件事越出乎意料,信息量越大。比如“太阳从东边升起”信息量几乎为0,但“明天太阳从西边出来”信息量爆表。

所以,平均每个指令的信息量,就是把每个指令的信息量按概率加权平均。这个平均值就叫“熵”。在上面的例子里,熵就是1.75 bits。也就是说,你无论如何都不可能把平均每个指令压到1.75 bits以下。

那怎么证明这个极限呢?第三个“理论派”学生说:如果你压得特别好,压出来的那串0和1看起来就应该像纯随机噪声。因为如果是纯随机,每个bit是0或1的概率各半,你就没办法再压了。反过来,如果你压出来的东西还有规律,那说明你还能继续压。

所以,完美压缩 = 输出像随机噪声。而随机噪声的每个bit概率1/2,所以一个长度为n的随机串出现的概率是(1/2)^n。取负log2,就得n。这正好是信息量。

那对于自然语言,比如英语,它的熵是多少呢?香农当年做过实验,找了一堆人猜下一个字母。比如看到“th”,下一个字母大概率是“e”。如果猜对了,就记一个短横,猜错了才写真实字母。最后得到的文本比原文短很多。他估算英语的熵大约是每个字符1 bit。也就是说,理论上英语可以压到每个字符只用一个0或1来表示。

这听起来有点离谱,但本质上就是:语言越可预测,熵越低,越能压。

而一个AI训练得越好,它预测下一个字符越准,它用来编码这段文本所需要的总bit数就越接近这个理论下限。

所以,训练大语言模型用的“交叉熵损失”,其实就是拿模型自己预测的概率分布去算“信息量”。模型猜得越准,交叉熵越低,压缩效果越好。

下期咱们就讲,怎么用这个思路真的去写一个压缩算法,以及为什么有时候两个完全不同的语言,在压缩空间里反而离得很近。



压缩的极限藏在概率里

咱们接着聊。刚才那个机器人的例子,概率都是2的幂次,所以每个指令的信息量正好是整数个bit。但真实语言不是这样。比如你写一个句子,下一个字母是“e”的概率可能是0.3,那它的信息量就是-log2(0.3) ≈ 1.74 bits。你没法用1.74个bit去编码一个字母,但你可以把一整句话加起来,最后总信息量是每个字母的信息量之和。

关键来了:这句话的概率等于每个字母概率的乘积(每个字母的概率取决于之前的字母)。取负log之后,乘法变加法。所以整句话的信息量 = 所有字母的信息量加起来。

那如果你有一个特别好的语言模型,它能准确给出每个位置下一个字母的概率,那你就可以用一套叫“算术编码”的方法,把整句话压到非常接近这个总信息量的长度。压完之后,那串0和1看起来就像随机噪声。

这就解释了为什么“压缩”和“预测”是等价的。你能压多小,取决于你预测得有多准。而AI训练的目标,就是让预测尽可能准,从而把交叉熵压到最低。



人类猜字母跟AI有啥区别

香农当年做实验,让人猜下一个字母,其实就是在测“人类的语言模型”。他发现,当给足上下文(比如前面100个字母),人类猜下一个字母的平均不确定性大约是1 bit。也就是每个字母只需要一个“是/否”问题就能确定。

那现代大语言模型呢?它们训练时用的“交叉熵损失”,本质上就是拿模型预测的概率分布,去跟真实的下一个字母做比较。如果模型觉得某个字母概率极高,但真实结果却是另一个,那损失就很大。模型就是通过不断降低这个损失,学会了压缩。

更有意思的是,有人提出“压缩即智能”。
意思是,你让两个模型去压同一段文本,谁压得小,谁就更“懂”这段文本。因为只有真正理解了规律,才能把冗余去掉。



总结
本文以机器人指令压缩为例,深入浅出地解释信息论中的熵、信息量、前缀码等核心概念,并阐明压缩与预测的等价性,进而引出“压缩即智能”的观点,为理解大语言模型的训练目标提供直观基础。

基于3Blue1Brown视频《Reinventing Entropy Compression is Intelligence Part 1》内容整理,主要涵盖香农信息论、前缀码、信息量、熵、压缩极限、语言模型与交叉熵的关系。

-