gzip也能做语言模型?

Can gzip be a language model?

我之前写过不用神经网络的 n-gram 模型来生成莎士比亚作品,最近读到一篇论文提到“语言建模即压缩”,这让我好奇:能否直接用 gzip 做语言模型?没有神经网络,没有训练参数,只用操作系统自带的压缩工具。我先用一段语料“预热”gzip,再给它一个文本提示,它就能通过寻找压缩率最高的字节序列来续写文本。结果虽然不完全连贯,但确实“懂”一些文本规律。原理在于压缩即预测:任何压缩算法内部都隐含概率模型,gzip 用 DEFLATE 算法通过滑动窗口匹配历史文本,压缩越短说明越“预期”。我通过 beam search 搜索字节序列,不断评估候选续写的压缩长度,最终生成文本。整个过程只用 Python 标准库的 zlib,代码开源在 GitHub 上。

每一个预测模型本质上都是一个压缩器,而所有压缩算法都是预测模型。
  1. _def

    话题挺有趣,但生成了文章文本后,居然连 gzip 都没真正用上?这让我感觉有点怪怪的。

  2. jll29

    是的:你可以用 gzip 按如下方式对测试文件进行主题分类:

    gzip -9 sports.txt testfile.txt

    gzip -9 politics.txt testfile.txt

    gzip -9 business.txt testfile.txt

    (假设 sports.txt、politics.txt 和 business.txt 分别是体育、政治和商业领域的文本文档,且大小相等)

    测试文件所属的主题,就是生成 .gz 文件大小最小的那个。

    Waikato 大学的 Witten 团队可能是最早研究这个的。

    如果你对此感兴趣,也可以看看 Hutter prize。

  3. Culonavirus

    这和 Winrar 比 OpenAI 更赚钱完全吻合……是巧合吗?我可不这么认为!

  4. mg

    给它一个普通文本提示,然后它

    通过搜索

    压缩效果最好的字节序列

    来延续该提示。

    等一下,我们怎么知道这个搜索做得有多好?根本不可能搜索有意义的搜索空间部分。

    所以结果只给了我们 gzip 作为文本延续“合理性测试器”效果的下限。可能序列的空间比已搜索的空间大好几个数量级。因此,里面可能存在压缩效果要好得多的序列。

    文中提到了 beamsearch,但我没看到关于 beamsearch 在寻找文本 gzip 可压缩性的全局最优解时表现如何的讨论?

  5. GodelNumbering

    3blue1brown 做过一个关于这个话题的系列:https://www.youtube.com/watch?v=l6DKRf-fAAM https://www.youtube.com/watch?v=GlYgs6v2YfU(我觉得还有一集没发布)

  6. montebicyclelo

    这很有趣,但历史上人们有点过分夸大,说这类模型或 n-gram 语言模型与大型神经网络模型有多接近。不过,两者之间确实存在联系。

  7. colinmarc

    这对视频压缩也有效吗?视频编码器编码了大量含义;例如,它们使用运动矢量来追踪屏幕上物体的移动。

  8. adityaathalye

    我认为语言本身就是压缩,所以这篇 arxiv 论文对我来说是说得通的。

    具体来说,如果语言是压缩(对思想/文化/存在间交流中那种不可言说的 tacit je ne sait quois 等的压缩),那么从定义上讲,语言建模也必然是压缩。

    只不过,语言是一个任意有损的压缩器,其“压缩 - 预测等价性”是不确定且不稳定的,因为语言在不断协同进化;它既是文化的功能或反应,也是文化的影响者。

    因此,任何语言的语言模型的主观 - 客观优劣,充其量只能被语言语料库本身的“压缩 - 预测等价性”所上界。这还假设语言语料库在各方面都是完美的——它捕捉了语言可表达的所有知识,并且始终与所有语言表达和演化的实时进程保持同步(即 LLM 训练不是一个批处理作业,而是一个实时进行的持续过程)。

    例如,在我这个外行看来,证明的数学语言积极地剔除了主观解释的歧义。理想情况下,证明应当让任何能跟上步骤的读者在每一次阅读时得出完全相同的结论。而且,只有当其余形式化、显式、不可侵犯、内部一致的一组公理和结果成立时,证明才成立。

    因此,有理由认为,作为将开放问题转化为 [...] 的机械过程的证明数学散文,经过优化后……

同日更多故事

2026-09-22