语言模型陷入循环
自回归语言模型一次生成一个词元,依赖已经写出的词语。这一过程几乎不可避免地导致退化性重复:模型开始无限地复现同一短语或句子链。在短文本、数学推理或逻辑链条中尤其常见,模型会“卡”在局部循环中。
标准的应对方法——频率惩罚(frequency penalty)和重复惩罚(repetition penalty)——只能部分奏效。它们在解码阶段修正概率分布,但并未考虑重复模式的结构。结果,即便是现代系统,陷入循环重复的频率也高达几个百分点——这在短回答中难以察觉,但对长推理而言却是致命的。

仅惩罚频率还不够:需要信息论
频率惩罚降低文本中已出现词元的概率,而重复惩罚则进一步降低已生成序列的权重。但两种方法都使用启发式规则,与模型理解文本结构的方式无关。它们可能抑制有用的重复(例如重复重要结论),同时漏掉由不同词语组成的长循环模式。
更根本的视角来自数据压缩理论。如果某个序列能被 LZ77 之类的算法良好压缩,说明它包含的新信息很少——从预测角度看,它是“可预测的”,对生成而言是危险的。合理的做法是惩罚模型选择这类模式,而不仅仅是重复个别词语。
什么是 LZ77,基于它的惩罚如何构建
LZ77 是一种经典的无损压缩算法。它将重复片段替换为对更早出现的引用:算法不直接记录整个字符串,而是存储偏移量和长度。由此,每段文本都获得一个“编码长度”——表示它所需的最少比特数。片段越可预测,其编码越短。
LZ penalty 的作者提出,在解码过程中直接使用这一长度作为冗余度的度量。在每一步,模型计算所有可能延续的概率,而每个延续还会额外评估它在多大程度上提升整个已生成序列的可压缩性。那些导向长重复结构的延续会获得更大的惩罚。
有趣的是,这种方法自然源于预测与压缩的二元性:好的压缩器同时是好的预测器,反之亦然。带 LZ penalty 的解码可以解释为从残差分布中采样,而该分布已去除了压缩器能成功预测的信息。换言之,模型被迫输出的不是对它而言最“轻松”的延续,而是那些真正包含新信息的延续。

实际实现:惩罚在选择词元之前加入
在代码层面,LZ penalty 很容易嵌入贪心解码流程。每一步之后,当前的延续假设会通过 LZ77 类编码器压缩,编码长度的差异会计入对数概率中。重要的是,该惩罚不需要训练或微调模型——它在推理阶段即可工作。
这使得该方法具有通用性:它可以应用于任何自回归模型,无需改动架构或权重。
结果:零温度下无退化性重复
作者宣称的主要成果是,LZ penalty 让现代开源模型能够在贪心解码(零温度)下推理而不损失能力。通常在零温度下,模型总是选择概率最高的词元,这使得循环尤其容易发生。正因如此,实践中常使用高于零的温度配合随机采样和惩罚——但这会给生成引入额外随机性,可能降低质量。
有了 LZ penalty,就不再需要这类技巧。贪心解码不再是退化性重复的来源,模型能保持对任务的专注。同时,模型的逻辑推理、数学和编码能力不会下降——惩罚只针对冗余,不触及生成的意义部分。
作为对比,实验中同样的模型在使用频率惩罚和重复惩罚时,某些情况下循环重复的崩溃率高达 4%。这个数字看似不大,但对长回答或推理链而言,每一次崩溃都会让结果完全失去价值。

为什么 LZ penalty 优于启发式方法
与频率惩罚或重复惩罚的关键区别在于,它能响应结构而非单个词元。启发式方法通常对所有重复一视同仁地惩罚,无论模式长度如何。LZ penalty 对重复序列的长度敏感:重复越长越精确,惩罚越大。而短重复若不构成模式,则惩罚很轻或完全没有。
这对自然语言很重要。模型可能在推理的不同部分合理地重复“因此”一词,这不应被阻止。但如果模型开始一遍又一遍地生成同一论证链,LZ penalty 会检测到编码长度的下降并停止该过程。
最终,LZ penalty 消除了文本质量与安全性之间的两难:不必在“合理但循环”和“多样但无条理”之间做选择。
实际结论
对开发者和研究者而言,LZ penalty 是一个现成的工具,无需修改模型。只需将其加入推理流水线,即可获得无退化性重复的稳定生成。这对用于长回答且对确定性要求较高的开源推理模型尤其重要。
效率问题仍然悬而未决:每一步的压缩需要额外计算。作者在论文中未讨论复杂度,但可以预期未来会出现优化版本,在 GPU 上运行并集成到主流解码库中。
局限性与备注
论文中提到一些发布后的小修正,涉及计算中的不精确之处——这体现了作者对细节的严谨,且不影响所提方法的实质。与任何方法一样,LZ penalty 并非银弹:它解决的是重复这一具体问题,但不涉及例如事实准确性或生成的逻辑连贯性。
尽管如此,用压缩编码长度作为延续信息量度量的想法本身看起来优雅且有前景。它将信息论与文本生成实践连接起来,提供了简单启发式无法给予的东西:理解何时重复是噪声,何时是模型退化的信号。



