跳到正文

目录

压缩即智能:3Blue1Brown 重新发明熵——从猜字母游戏看 LLM 训练本质

源视频: 3Blue1Brown《Reinventing Entropy | Compression & Intelligence Part 1》,片长约 31 分钟,2026-06-07 发布于 YouTube(中文版字幕:翻译贰鼠 / 校正畏狐之狐)。文中标注的「mm:ss」为原视频时间点,方便按段回看。

先说结论,再讲推导:训练 LLM 这件事,和 80 年前香农为通信工程建立的数学是同一套东西。视频的命题是 prediction(预测)与 compression(压缩)数学等价,而 LLM 的 cross-entropy loss 就是信息论里的"预期编码长度"。整篇的路线是:

压缩极限在哪? ──► 月球机器人/前缀码 ──► 惊讶度 = 信息量
      │
      └─────► 熵 = 平均信息量 ──► 条件熵(上下文)──► prediction = compression
                                                              │
                                                              └──► cross-entropy loss = 编码长度 ──► LLM 在学压缩器

一句话版本:预测越准,编码越短;编码越短,压缩率越高。下面从最具体的浪费讲起。

一、ASCII 太胖了(0:00)

3Blue1Brown 从最朴素的问题切入:ASCII 编码每字符 8 个 bit,太浪费了

英语只有 26 个字母,加空格、大小写、标点不过 100 个符号。理论上每字符 log₂100 ≈ 6.6 bits 就够了。严格说标准 ASCII 是 7 位编码(可以表示 128 个符号,刚好盖住英语字母加标点),但电脑实际存储时习惯按整字节计,每个字符占 8 bits;3B1B 这里就按 8 bits 讲——比理论上限多出来的 1.4 bits 是纯粹的冗余。

看一组对比:

  • ASCII:每字符 8 bits
  • 变长编码:高频字符(e / t / a / o / i / n)用短码,生僻字符(z / q / x)用长码,平均 4 bits/字符。这是视频给出的数字;Huffman 编码是这类变长编码的典型代表
  • 上下文感知方法(LZ77、PPM、Context Tree Weighting):2-3 bits/字符

4 bits 已经比 ASCII 省一半,但上下文还能再省一半。问题来了——压缩的极限在哪?

1940 年代,香农(Claude Shannon)要回答的就是这个问题。他的答案不是个数字,是一种新的数学结构。80 年后我们发现,这套结构对训练大语言模型有用到令人意外的程度。


二、热身:月球上的机器人(3:36)

视频没有直接跳到字母,而是先造了一个更干净的实验。把一辆机器人送上月球,地球上要给它发移动指令,只有四种:上、下、左、右。四条指令出现概率不等——上占 1/2,下占 1/4,左、右各占 1/8,而且彼此独立。问:怎么把一串指令编码成 bit 流最省?

视频让三位学生各答一次:

  • 直接学生:每条指令固定 2 bits(00 / 01 / 10 / 11)。简单,但完全没用上概率差异。
  • 聪明学生:变长编码——0 表示上,10 表示下,110 表示左,111 表示右。平均长度 = 1/2·1 + 1/4·2 + 1/8·3 + 1/8·3 = 1.75 bits/指令。比起固定 2 bits 省了 0.25。
  • 理论学生:追问"能不能再省"——把问题交给一个一般性原理,而不是某个具体编码。

关键是聪明学生的编码必须能无歧义解码:没有一个码字是另一个码字的前缀(如果 0 表示上,就不能再用 00 表示别的)。这种编码叫前缀码(prefix-free code)。

把全部二进制串画成一棵树,一眼就能看出为什么这样分配最优:“上"占用了以 0 开头的半棵树,因为它的码字是单个 0;“下"占四分之一;“左"“右"各占八分之一。每个码字占的树空间恰好等于它的概率。码字长度和概率的这种对齐,就是信息论的第一道裂缝。


三、完美压缩 = 随机噪声:信息量的定义(10:58)

理论学生的推理是整段视频的题眼:

一种编码如果已经最优,压缩后的 bit 流应该和随机噪声不可区分——每个 bit 都是一次独立的公平抛硬币。只要还存在可预测的规律,就说明还能再压。

为什么?n bits 的流有 2ⁿ 种等可能的取值,想让其中任意一种更短,就得挤占别的消息的空间:省 1 bit,至少要让另外两条消息各多付 1 bit(13:59 那个"压地毯"的比喻——一个地方按下去,别处鼓起来)。

把这条推理倒过来,就得到信息论的第一条定义。一条消息在最优编码下占 n bits,意味着它的概率 p = 2⁻ⁿ;取负对数就是:

信息量 = -log₂(p)
  • 猜中 e(P=0.5):-log₂(0.5) = 1 bit
  • 猜中 y(P=0.001):-log₂(0.001) ≈ 10 bits
  • 猜中 z(P=0.0001):-log₂(0.0001) ≈ 13 bits

事件越意外(p 越小),携带的信息越多;越可预期,信息越少。香农把 -log₂(p) 定义为事件的信息量(self-information)。它天然以 bit 为单位:log 把"概率每翻一倍"映射成"多 1 bit”,这就是为什么必须用 log 而不是线性函数——概率相乘在信息上要变成长度相加。

这里有两个翻译,贯穿全片:把"压缩"翻译成"预测”,把"信息量"翻译成"惊讶度”。预测得越准 = 越不惊讶 = 信息越少 = 码字越短。两个方向在数学上是等价的,第六节会证明。


四、熵 = 平均信息量(25:19)

从单个事件推广到整段文本:按分布 P 输出一个符号,平均要多少 bits?答案就是

熵 H(P) = -Σ P(x) · log₂(P(x))

3B1B 用一组矩形直观地画它:每个概率 P(x) 是一条横条,横条上方立一个高度为 -log₂(P(x)) 的矩形,所有矩形面积之和就是熵。它回答的是"理论上最少需要多少 bits 来描述一个符号”。

关键性质:

  • 分布越均匀 → 熵越大(越难预测)
  • 分布越尖锐 → 熵越小(越容易预测)
  • 极端情况:总是同一个符号 → 熵 = 0 bits;完全均匀的 N 个符号 → 熵 = log₂(N) bits

顺带一提,“熵"这个名字是冯·诺依曼建议的,理由是"没人知道熵到底是什么,所以争论时你永远占上风”。3B1B 考证后认为这段轶事多半是假的,但确实有几分真实。

严格地说,熵只适用于"每个符号都服从同一分布"的场合(机器人的指令正是如此)。对语言这种每个位置分布都在变的过程,标准说法是熵率(entropy rate)——对所有可能消息取平均。语言熵率没有闭式解,只能靠估计,这正是第五节和第六节要讲的。


五、转折:上下文让预测变准(18:29)

猜字母的模型一上来假设的是"按字符频率独立预测"。这个假设下,英语单字符熵只有约 4 bits 量级(不看上下文、只按字母频率的粗略值)。

但实际你用的是整段上下文

举一个最能说明问题的例子:单独看字母 “u”,它在英语里的独立出现频率不高,约 2.7%。但在 “q” 后面看到 “u” 的概率接近 100%——英语里 “qu” 几乎总是连在一起。模型知道这一点,对 “u” 的预测就从 2.7% 抬到接近 100%,编码长度从约 5.2 bits 降到接近 0。3B1B 在片中也演示了同样的事:他本地跑了个小 GPT,展示同一段话里每个字母的概率如何被前文重塑;讲 n-gram 时用的例子则是 “th”——数一数一本书里 “th” 后面都跟些什么,就能搭出一张条件概率表。

视频反复强调的一句:

language is compressible because it has structure across long contexts.

上下文越长,条件熵越低,可压缩性越强。这也是为什么 LLM 的"长上下文"能力如此关键——context 越长,预测越准。


六、Shannon 的猜字母实验:英语熵约 1 bit/字符(22:25)

那"上下文感知"能到什么程度?3B1B 把镜头拉回香农本人。香农 1951 年发表的《Prediction and Entropy of Printed English》里,用的"语言模型"是他妻子 Betty。

实验方法:香农翻开一本书,让 Betty 逐字母猜下一个字符。1951 年的版本不只记对错,而是记录猜了几次才猜中,再把这套"猜几次"折算成一个人对下一个字母隐含的概率。香农在意的不是词频统计,而是拿人脑当黑盒,探测它对语言的隐含模型。3B1B 的概括很到位:

These days, in the 2020s, we have gone from merely interrogating black boxes that process language to designing them.

我们如今已经从"拷问处理语言的黑盒"走到了"设计它们"。

结果:当猜手至少有 100 个字符的上下文时,香农估计英语的熵约 1 bit/字符。这个数字乍看有点疯——意思是每个字符平均只需要一个"是/否"就能还原。对比第一节,ASCII 是 8 bits,独立预测约 4 bits,长上下文压到约 1 bit。而 3B1B 在结尾预告,Part 3 会用一个高质量语言模型做编解码,把文本压到非常接近这个下限(原话是 surprisingly close)。


七、prediction = compression:核心等式(0:59)

视频的核心命题:

theory says that prediction and compression are mathematically equivalent.

方向 1:prediction → compression

如果你有一个完美的预测器 P(next char | context),你可以用算术编码(arithmetic coding)把文本编码成平均 -log₂(P) bits/字符。算术编码的机制是本文的展开(视频只点出等价关系,把具体算法留给了 Part 3):它不把每个符号单独映射成固定码,而是把整条消息看作 [0,1) 区间里的一个点——每读到一个字符,就把当前区间按预测概率切成几段,取对应字符那段,最后用区间里任意一个二进制小数代表整条消息。概率高的字符占的区间大,需要的小数位就少;整条消息的编码长度约等于所有字符 -log₂(P) 之和——这正是交叉熵的定义。预测越准,区间越"窄",编码越短。

用第五节那个 “qu” 例子走一遍:独立预测时,“u” 按字母频率约 2.7%,编码约 5.2 bits;模型知道 “q” 后面几乎必是 “u”,给定上下文后概率接近 100%,编码长度趋近 0。算术编码按整个序列逐字符更新区间:读到 “q” 时区间收窄,轮到 “u” 时因为预测概率接近 1,区间几乎不再缩小。整句话走完,这一处原本要花 5.2 bits 的位置,现在只花了接近 0 bits。预测器把概率从 2.7% 抬到接近 100%,就相当于把这段文本又压缩掉约 5 bits。

方向 2:compression → prediction

反过来,如果你有一个压缩器把字符串压到 N bits,这 N bits 隐含了每个位置最可能的字符——压缩器的输出可以被解读成预测分布。

两个方向合并:一个好的预测器 ↔ 一个好的压缩器,这两件事在数学上是对偶问题


八、Cross-entropy loss = 预期编码长度(0:59)

现在接到 LLM 训练上。

LLM 训练用的是 cross-entropy loss

loss = -log(P_θ(token_t | context))

对所有 token 取平均:

L = -(1/N) Σ log(P_θ(token_t | context_t))

视频的关键论断:

Now that term, cross-entropy, has its roots in information theory.

为什么 cross-entropy loss 等价于压缩?如果你有一个语言模型 P_θ,按算术编码每个 token 的预期长度就是 -log(P_θ),cross-entropy loss 就是它在训练集上的经验平均值。所以:训练 LLM 用 cross-entropy loss,本质上是在优化一个压缩器——loss 越低,模型对训练集预测越准,按算术编码每个 token 占的 bits 越少。

一个容易混淆的点值得拆开:cross-entropy 是"用模型 P_θ 编码,但按真实分布 P 求期望",公式是 H(P, P_θ) = -Σ P(x)·log(P_θ(x));而熵 H(P) 是"用真实分布自己编码自己"的下界。两者的差 H(P, P_θ) − H(P) 叫 KL 散度——它度量的不是"文本多难压缩",而是"你的模型比最优压缩器差多少"。训练 LLM 最小化 cross-entropy,真正在做的是把 KL 散度往 0 压。

3B1B 在片头就点题:香农为回答"压缩极限"而建立的数学,对今天的机器学习出人意料地有用。


九、无噪编码定理:从工程到数学(28:50)

1948 年之前,“压缩"是个工程问题——工程师用各种启发式技巧压文件,没人问"理论的极限是多少”。Shannon 做了三件事:

  1. 定义"信息"为可压缩性的反面:surprise = -log P
  2. 定义"熵"为平均信息量:H(P) = -Σ P log P
  3. 证明无噪编码定理(noiseless coding theorem):任何编码的期望长度 ≥ 熵 H(P),且存在编码能任意逼近这个下界

第三条是真正的革命。它意味着任何工程技巧都达不到熵这条下界,同时也保证下界不是空想——总能无限接近。

对 LLM 训练来说,这条定理给出一个理论锚点:一个完美的语言模型(完美预测器),它的 cross-entropy loss 的下界就是真实文本分布的熵 H(P_text);模型实际 loss 与它的差距,就是它离"最优压缩器"还有多远的度量。


十、context 是 LLM 时代最大的事(21:58)

视频反复回到一个观察:

longer context windows are when things are at their most predictable, and that’s where you stand to get the most compression due to that predictability.

上下文长度条件熵(示意)压缩率(vs ASCII)
1 字符(独立预测)~4 bits/字符2x
几字符(n-gram)~2 bits/字符4x
一句话~1 bit/字符8x
更长上下文(≥100 字符)≤1 bit/字符≥8x

说明:前几行是数量级示意;最后一行对应香农在至少 100 字符上下文下的估计(约 1 bit/字符)。更长的文档级上下文条件熵还会更低,但视频没有给具体数字。

LLM 用 Transformer 的 attention 做"超长上下文条件预测",效果上等价于一个上下文感知压缩器。长上下文的价值不在于"能记住更多事"那么表面,而在于更长的 context 直接压低条件熵。这一效应有直接的实证支撑:把更多上文喂给同一个模型,它对下一个 token 的预测通常更准——这正是上面那句引语的工程含义;压缩视角的研究(Delétang et al. 2023,见第十二节)也把上下文长度列为影响压缩率的关键因素。

更长的 context = 更低的条件熵 = 更准的预测 = 更小的 cross-entropy loss = 更好的压缩。这条链的每一环都有明确定义,不是比喻,是一组等价关系。


十一、2026 年的工程语言(0:59)

3B1B 在片头用一句话把这事接到 LLM 训练上:

The pre-training objective as not really being about next token prediction per se, but instead as being about creating the most efficient possible text compressor.

预训练的目标不是"预测下一个 token",而是"构造最有效的文本压缩器"。翻译成工程语言:

  • 目标函数:不是"预测下一个 token",而是"用更少的 bits 编码这段文本"
  • 达成方式:cross-entropy loss = 算术编码的预期长度
  • 评估指标:bits per character (BPC) / bits per token (BPT) / perplexity——三者是同一个东西的三个刻度。换算很简单:一个 token 平均占 L bits 时,perplexity = 2^L,读作"平均每个 token 有多少种等可能的选择";反过来 L = log₂(perplexity)。BPC 与 BPT 之间再按"平均多少 token 组成一个字符"折算即可
  • 训练目标:最小化 cross-entropy loss = 最大化压缩率 = 让模型更"懂"这门语言

十二、当前 LLM 离理论下界还有多远

先说明这一节在测什么、不能说明什么。下文的数字来自不同口径:要么是视频给出的(英语熵),要么是可查论文的实测(压缩率),直接相减会得出错误结论。

先给两个量级换算,感受 LLM 训练 loss 的数量级(作者为建立直觉给的示意值,不是视频内容):

  • 3.0 nats/token ≈ 4.3 bits/token
  • 2.0 nats/token ≈ 2.9 bits/token

换算依据是 1 nat = 1/ln 2 bits ≈ 1.44 bits(因为 log₂x = ln x / ln 2,而模型常把 loss 记成以 e 为底的自然对数)。

从 3.0 压到 2.0 nats/token,每 token 的期望编码长度降为原来的约 0.67(省约 1/3)。这反映的是模型对语料的建模能力,不代表架构上限本身。

那 LLM 到底离下限多近?有三个可查证的事实:

  1. 视频的锚点:香农估计英语熵约 1 bit/字符(见第六节)。3B1B 在结尾预告 Part 3 会用高质量语言模型做编解码,把文本压到非常接近这个下限。
  2. 实测侧:Delétang et al. 2023《Language Modeling Is Compression》用算术编码把 LLM 变成无损压缩器。只用文本训练过的 Chinchilla 70B,把 ImageNet 图片压到原体积的 43.4%(PNG 是 58.5%)、LibriSpeech 音频压到 16.4%(FLAC 是 30.3%);在 enwik9 英文语料上,按论文原始口径(不计模型参数),大模型的压缩率也明显优于 gzip 这类通用工具。这就是"预测即压缩"的实测落地。
  3. 口径的红线:一旦把模型参数量计入压缩成本,经典工具(gzip、LZMA2)立刻反超——大模型压缩率再高,也抵不过几十亿参数的"固定开销"。所以"LLM 离最优压缩器多远"没有干净答案,取决于是否把模型成本算进去。

工程含义(作者延伸):

  • Scaling 仍有空间:更大的模型 + 更多的数据 → 更低的 loss → 更好的压缩
  • 更好的架构有空间:更长的 context、更稀疏的 attention、更高效的 memory → 更低的条件熵
  • 训练范式有空间:当前 cross-entropy 是 token 级;理论上可以做段落级、文档级的压缩目标

但别把"有空间"读成"必然收敛":下限由真实语料的熵决定,模型逼近它的速度取决于参数、数据与架构共同作用,且可能随规模递增出现收益趋缓。差距存在 = 有优化空间,不代表当前技术路线一定收敛到下限。


十三、Shannon 留给现代 ML 的遗产(24:43)

视频提到 Shannon 信息论对现代 ML 的"出人意料的有用"——不只是 cross-entropy 这条线。把剩下的三条骨架整理如下:

信息论骨架定义在现代 ML 里的对应
KL 散度KL(P‖Q) = Σ P(x)·log(P(x)/Q(x))VAE 的 ELBO 正则项、RL 策略梯度的 ratio、知识蒸馏 loss
互信息I(X;Y) = H(X) − H(X|Y)InfoMax / InfoNCE / CLIP 对比学习、InfoGAN 潜变量约束
信道容量C = max_{P(X)} I(X;Y)Autoencoder 瓶颈维度、扩散模型 noise schedule、纠错码设计

深度学习里相当一部分关键技术,都和这三条定义一脉相承。不是香农当年预见到的,是后人发现这三条定义恰好长成了 ML 需要的形状。


十四、读者判断:谁该看原视频

这篇是视频的"核心论证版",信息论推导和 LLM 的对应关系都已经展开。按自己的情况决定是否补看原片:

读本文就够的:想理解"LLM 训练到底在优化什么"这个命题本身,或只想抓住 prediction = compression 这条主线。前半段的公式、等价关系和工程含义都在上文列明了。

建议看原视频的

  • 视觉化学习者。3Blue1Brown 的动画——区间切割、二叉树、熵的矩形直观——是文字替代不了的,第二节前缀码和第三节"压地毯"那段尤其值得看动画版本。
  • 想复现推导的。视频里每一步都有板书,比文章里压缩后的结论更容易跟着算一遍。
  • 想看第 7 节之后 3B1B 如何把同样的工具推到神经网络训练上的人。本文只覆盖 Part 1 的核心,Part 2 的视频才是他把这套框架完整接到 Transformer 上的部分。

视频信息3Blue1Brown《Reinventing Entropy | Compression & Intelligence Part 1》,约 31 分钟,2026-06-07 发布。这是三部曲的第一集,Part 2《But what is Cross-Entropy? | Compression & Intelligence Part 2》于 2026-07-16 发布。本文按主题重组,不逐句转写;文中标注的「mm:ss」为原视频时间点,可按它回到具体某段。

延伸阅读

想往下挖,按这条线走:

  • Shannon 1951《Prediction and Entropy of Printed English》:猜字母实验的原始出处,也是"英语熵约 1 bit/字符"这个估计的来源。
  • Cover & Thomas《Elements of Information Theory》:熵、交叉熵、KL 散度的标准教材,第 5 章处理信源编码定理。
  • Delétang et al.《Language Modeling Is Compression》(DeepMind,2023):把"预测 = 压缩"落成实测——用算术编码把 Chinchilla 系列模型变成无损压缩器,直接和 PNG、FLAC、gzip 这类压缩器对比。
  • Hutter Prize:以压缩率当智能度量的长期竞赛,是"压缩即智能"这条命题的实验侧。看它就知道 LLM 压文本距离熵下界还有多远。

自测清单

  • 能解释为什么 -log₂(P) 可以度量"惊讶度",以及它为什么必须是 log 而不是线性函数
  • 能说清前缀码(prefix-free code)为什么能无歧义解码,以及码字长度为何与概率对齐
  • 能说清熵、交叉熵、KL 散度三者分别度量什么,之间的关系是什么
  • 能讲明白算术编码为什么能让"预测概率"直接变成"编码长度"
  • 能解释为什么"模型在 ‘q’ 后更确定是 ‘u’“会让压缩率上升
  • 能回答:一个训练好的 LLM 的 cross-entropy loss,理论上界的含义是什么

参与讨论

使用 GitHub 登录。欢迎补充事实、异议与实践。