← 最新论文
💬 NLP

From Where Words Come: Efficient Regularization of Code Tokenizers Through Source Attribution

该论文提出了一种名为源归因字节对编码(SA-BPE)的高效正则化方法,通过修改 BPE 目标函数和引入合并跳过机制,有效解决了代码 Tokenizer 因训练数据多样性失衡导致的未训练 Token 过多问题,在保持推理流程不变的同时显著提升了模型效率与安全性。

原作者: Pavel Chizhov, Egor Bogomolov, Ivan P. Yamshchikov

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

原作者: Pavel Chizhov, Egor Bogomolov, Ivan P. Yamshchikov

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

这篇论文讲述了一个关于如何让 AI 更聪明、更干净地学习编程代码的故事。

想象一下,你正在教一个刚出生的天才婴儿(也就是大语言模型)学习编程。为了教它,你需要先给它准备一本“字典”(也就是分词器 Tokenizer),把复杂的代码拆解成它认识的单词或片段。

1. 问题:字典里混进了“垃圾”和“废话”

传统的教课方法(叫 BPE)是这样的:
老师(算法)看着成千上万本代码书,发现“变量名”和“函数名”经常成对出现。于是,老师就把它们强行合并成一个新词,放进字典里。

但这有个大毛病:
有些代码书里,作者写了一些毫无意义的乱码,或者只在一个特定项目里出现过的奇怪变量名(比如 LoremIpsumDolorSitAmet... 这种占位符,甚至拼错了)。
传统的老师太“死记硬背”了,它把这些只在某一本特定书里出现一次的奇怪词,也当成了宝贝,强行塞进了字典。

后果是什么?

  • 字典变臃肿: 字典里塞满了几万个永远用不上的“生僻字”。
  • AI 变笨: 因为字典太大,AI 的注意力被分散了。它花了很多精力去记那些“垃圾词”,导致它对这些词的理解很浅(训练不足)。
  • 安全隐患: 当 AI 遇到这些它其实没学懂的“垃圾词”时,它可能会胡言乱语(产生幻觉),甚至被黑客利用这些词来绕过安全限制(越狱攻击)。

这就好比你的书包里塞了几千块没用的石头,背起来很重,但你真正需要的书却拿不出来了。

2. 解决方案:SA-BPE(给字典做个“大扫除”)

这篇论文的作者提出了一种新方法,叫 SA-BPE(来源归因字节对编码)。

它的核心思想是:“物以稀为贵”的反面——“物以多为真”。

作者给老师加了两条新规矩:

  1. 看来源(Source): 如果一个词只出现在一个代码仓库(项目)里,那它很可能是个“私生子”(特定项目的怪词),不要把它放进字典。只有当这个词在很多个不同的项目里都出现时,才把它当宝贝。
  2. 看语言(Language): 如果一个词只在一种编程语言里出现,那它可能太偏了。如果它在多种语言里都能见到,那它才是通用的好词。

打个比方:

  • 旧方法(BPE): 只要你在街上听到有人喊“阿巴阿巴”,你就把它记下来,不管他是谁,也不管是不是只有他一个人喊。结果你记了一堆没人懂的方言。
  • 新方法(SA-BPE): 只有当“阿巴阿巴”在100 个不同的社区10 种不同的方言里都有人喊时,你才把它记下来。这样,你学到的都是真正通用的语言。

3. 具体是怎么做的?(合并跳过与优先级)

在教 AI 合并单词的过程中,SA-BPE 会做一个“过滤器”:

  • 跳过合并(Merge Skip): 如果两个词合并后,发现它们只出现在很少的项目里,直接跳过,不合并。这就好比老师直接说:“这个生僻组合太偏了,我们不学。”
  • 调整优先级(Priority): 即使要合并,也要给那些“在多个项目、多种语言中出现”的词更高的优先级。让它们先被合并,确保字典里先装下最通用的词。

4. 结果:更轻、更快、更聪明

经过这样“大扫除”后的字典(SA-BPE):

  • 更干净: 删掉了成千上万个没用的“垃圾词”。
  • 更通用: 剩下的词都是真正在编程世界里通用的。
  • 不改变速度: 最棒的是,虽然训练字典的方法变了,但 AI 在使用字典(推理)的时候,速度完全没有变慢,就像换了一个更高效的书包,但走路姿势和以前一样快。

总结

这篇论文就像是一个图书管理员,他决定不再盲目地把所有书里的生僻字都抄进字典,而是只挑选那些在图书馆的多个书架、多本书里都出现过的字

这样做,AI 的“大脑”(字典)变得更精简、更专注,不再被那些无用的“代码噪音”干扰,从而能更准确地理解程序员真正想表达的意思,同时也更安全、更高效。

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

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

试用 Digest →