← 最新论文
💬 NLP

Pruned BPE: Post-training Visibility Pruning and Token Reallocation for Byte Pair Encoding

本文介绍了 Pruned BPE,这是一种通过将低曝光度的中间合并词元(merge tokens)从模型的词表隐藏起来,并将这些槽位重新分配给更频繁的候选词元,从而在不增加模型可见词表大小的情况下减少编码序列长度的训练后方法,旨在提高分词效率。

原作者: Kenny Shao

发布于 2026-08-04
📖 1 分钟阅读☕ 轻松阅读

原作者: Kenny Shao

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正在教一个机器人阅读。为了做到这一点,你不能直接给它一本包含宇宙中所有单词的字典;那会让它的脑子太重了。相反,你要教它一个聪明的技巧:将单词拆解成更小的、可重复使用的块,就像乐高积木一样。如果机器人看到“unbelievable”,它不需要专门为整个词准备一块积木。它可以只需把“un”、“believe”和“able”拼接在一起。这就是现代人工智能读取世界的方式:它将文本切分成微小的碎片,称为“标记”(tokens)。

决定保留哪些乐高积木最流行的方法叫做字节对编码(Byte Pair Encoding, BPE)。可以将 BPE 想象成一位非常严厉且机械化的老师。它观察大量的文本,寻找出现频率最高的两个相邻片段,并将它们粘合在一起形成一个新的、更大的积木。它一遍又一遍地这样做,创造出一个从单个字母到完整单词不等的一系列积木库。问题在于,这位老师有点像个囤积狂。他会把那些仅在用于构建更大部件时才起作用、但在最终故事中几乎从未单独出现的片段黏贴在一起。这就像是一个只有在使用特定城堡塔楼进行搭建时才会用到的乐高零件,但这个塔楼在最终模型里永远不会被造出来。机器人在背着这个没用的积木的同时,也占用了原本可以用来装更有趣东西的空间。

这篇题为**《剪枝后的 BPE》(Pruned BPE)**的论文提出了一个简单的问题:如果我们能在老师完成积木库建设之后,“清理掉”机器人的背包呢?作者由 Kenny Shao 领导,提出了一种方法来检查所有的积木,识别出那些在最终文本中很少见到的积木,并用更好、更有用的积木替换它们。他们并没有缩小背包的大小;他们只是重新排列了内容,使得每一个槽位都填满了机器人真正需要看到的物品。

问题所在:“幽灵”积木

要理解这种修复方案,我们首先得看看混乱现场。当标准的 BPE 老师工作时,他在建立一个层级结构。他可能会把 “en” 和 “viron” 粘在一起组成 “environ”,然后再把 “environ” 和 “ment” 粘在一起组成 “environment”。在标准系统中,构建过程中的每一块积木都会在机器人的最终词汇表中占据一席之地。

但问题的关键就在这里:积木 “environ” 虽然是构建 “environment” 的绝佳助手,但它在真实的句子中极少独立出现。它是一个“幽灵”积木。它存在于机器人的记忆中,占用了一个宝贵的插槽,但机器人几乎从不把它作为最终答案使用。这就好比你在口袋里放了一把特殊的螺丝刀,一年只会在组建某个特定的玩具时用到一次,而由于它占了位置,导致你没有空间再带一把锤子或扳手。

作者认为这些幽灵积木是在浪费空间。因为它们很少被使用,所以机器人无法对其进行充分练习,因此对它们的理解很弱。与此同时,还有其他非常有用的单词碎片,虽然机器人经常见到它们,却因为所有的插槽都被这些无用的幽灵占满了,从而无法获得属于自己的位置。

解决方案:大背包置换计划

该论文引入了 Pruned BPE,这是一个类似于后期清理团队的两步走流程。

第一步:标准构建。
首先,让他们让标准的 BPE 老师照常开展工作。它构建整个积木库,不断合并配对直到达到目标大小(例如 10,000 个积木)。此时,图书馆已经满了,但也充斥着那些“幽灵”积木。

第二步:可见性检测。
现在,作者查看最终的库并问道:“这个积木在生成的文本中实际出现了多少次?”他们在统计每个积木的“曝光度”。如果一个类似 “environ” 的积木只在极小比例的时间内出现,它就会被标记为“仅限内部使用”。它仍以隐藏助手的身份留在系统内——它仍然可以用作建造更大单词的基础——但它不再允许作为机器人看到的最终结果呈现。

第三步:重新分配。
这是神奇的部分。当他们把一个幽灵积木踢出“可见”列表时,他们并不只是留下一个空洞。他们回到训练数据中,继续引导机器人去发现那些实际上有用的积木。他们持续训练,直到找到足够多高质量、频繁出现的积木来填充空白处。

因此,背包的大小保持不变(例如 10,000 个插槽),但其中的内容完全不同。通过交换掉无用的“幽灵”积木,我们得到了真正的“明星”积木,即机器人确实在使用的积木。当机器人阅读一个单词时,它依然利用隐形辅助积木来构筑结构,但其发送给大脑的最终标记列表仅包含那些有用且具有高可见性的标记。

研究发现

作者在两堆不同的文本上测试了这个想法:一堆主要是英文,另一堆主要是中文,以及一种中英混合的形式。他们将他们的“剪枝后(Pruned)”方法与标准的“囤积型”方法进行了对比,并且两者所使用的背包容量完全相同。

实验结果非常一致。通过用高可见度的“明星”取代低可见度的“幽灵”,Pruned BPE 方法成功实现了更好的压缩效果。

  • 在偏向英文的文本中,根据对待“幽灵规则”严格程度的不同,他们减少了约 0.27% 到 0.36% 的所需标记数。
  • 在偏向中文的文本中,提升幅度相似,范围在 0.23% 到 0.36% 之间。

为了直观说明,作者指出,若想在标准 BPE 中实现类似的效率增益,通常需要在背包中增加另外 2,000 个标记。而 Pruned BPE 无需扩大任何体积就能获得同样的效率提升。这就像是不买更大的行李箱也能获得更多的存储空间。

他们还运行了一项特殊测试,以确保这项改进不仅仅是因为标准 BPE 老师安排积木的方式造成的偶然现象。他们使用了另一种超级智能的“最小化标记”解码器,该解码器忽略了原始教师的顺序,仅仅看可用积木的清单。即使在这种公平、中立的情况下,Pruned BPE 清单产生的文本仍然更加简短高效。这表明,进步来自于拥有一个更好的积木名单,而不单纯是取决于排序方式。

“幽灵”示例

为了展示这些“幽灵”积木长什么样,作者研究了一些具体例子:

  • 英文: 片段如 “viron” 可能就是一个幽灵。它是构建 “environment” 的利器,但你很难看到 “viron” 单独站立。
  • 中文: 一个汉字字符如 “干”(构成“尴尬/gan ga”的一部分)可能也是一个幽灵。它是构建全词所必需的,但本身很少被单独使用。
  • 代码与字节: 有些幽灵甚至更奇怪。由于计算机是以字节(微小的数字)处理文本的,有些积木仅仅是某个字母的部分序列。例如,某一段特定的字节序列可能是构建中文汉字“能力”所需的,但这串字节序列本身没有任何意义。它是一个存在的目的仅是为了协助构建真实事物的幽灵。

这意味着什么(以及并不意味着什么)

论文谨慎地声明了这套方法并非做的事情。它并未证明机器人会突然变得擅长写诗或解决数学难题。作者衡量的仅仅是如何有效地压缩文本(用更少的 token 来表达同样的内容)。他们并没有测试机器人的大脑是否真的能更好地学习这些新的积木。那是未来的课题。

然而,论文排除了这样一个观点:即你需要缩减词表规模才能节省空间。之前的一些思路建议直接删除稀有的积木,这会导致背包变小,但迫使机器人必须使用更多、更细碎的积木来传达信息(反而增加了长度)。Prudent BPE 证明了你可以保持固定的背包尺寸,并通过仅仅更换里面的内容来实现更简洁有效的输出。

总结

归根结底,Pruned BPE 是关于“断舍离”的一课。它告诉我们,在人工智能的世界里,拥有一座巨大的 Token 图书馆并不重要,重要的是拥有正确的 Token。通过等到最后阶段再去判断什么是真正有用的,然后用表现卓越的“明星选手”替换掉那些消耗空间的“幽灵助手”,我们可以让机器人的阅读过程变得稍微高效一些。这是一点精巧的小调整——省下了不到百分之零点五的空间——但在大规模 AI 模型领域,其中每一点比特都很珍贵,这也是一项显著的胜利。机器人不需要携带它构造历史的所有痕迹,它只需要最好的工具即可。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →