⏶28
TokDrift:当 LLM 使用子词说话,而代码使用语法说话时
发表
由
Pengyu Nie 提交
作者:
Yinxi Li,
Yuntian Deng,
Pengyu Nie
摘要
AI 生成总结
代码的 LLM 中错位的标记化会导致模型行为不一致,因此需要语法感知的标记化。用于代码的大型语言模型(LLM)依赖于子词分词器,例如字节对编码(BPE),这些分词器从混合的自然语言文本和编程语言代码中学习,但由统计驱动而非语法驱动。因此,语义相同的代码片段可能会根据空格或标识符命名等表面因素被不同地分词。为了衡量这种不匹配的影响,我们引入了 TokDrift,一个应用语义保留重写规则来创建仅在分词方面不同的代码变体的框架。在包括超过 30B 参数的大型模型在内的九个代码 LLM 中,即使是轻微的格式更改也可能导致模型行为发生重大变化。层级分析表明,问题源于早期嵌入,其中子词分割未能捕获语法 token 边界。我们的发现将不匹配的分词识别为代码理解和生成可靠性的隐藏障碍,并强调了未来代码 LLM 对语法感知分词的需求。

1️⃣ LLM 的子词分词器与编程语言语法对齐不佳:微小的空格或重命名调整 -> 不同的分词 -> 输出翻转。
2️⃣ 我们的框架 TokDrift 在 3 个任务上系统地测试了 9 个代码 LLM,显示了它们对分词器变化的敏感性:在单一语义保持重写下,高达 60% 的输出会发生变化。
3️⃣ 如果你的胜率优势只有大约 1 个百分点,请注意:空格和命名可能会影响结果。