
当我们看到一段代码时,计算机"看到"的可能和我们完全不同。来自加拿大滑铁卢大学的李银玺、邓云天和聂鹏宇三位研究者在2025年10月发表的这项研究(论文编号arXiv:2510.14972v1)揭示了一个令人意外的现象:那些被誉为编程神器的大型语言模型,实际上可能连最基本的代码"阅读理解"都存在严重问题。
这个问题就像是让一个只会普通话的人去理解各地方言一样棘手。同样一句"你好吗",用不同的方言表达出来,这个人可能就完全听不懂了。在编程世界里,同样功能的代码可以有无数种写法——有的程序员喜欢在符号之间加空格,有的不加;有的喜欢用下划线命名变量,有的喜欢用驼峰式命名。这些差异在程序运行时毫无影响,就像不同的方言表达的是同一个意思。
但研究团队发现了一个令人震惊的事实:当前最先进的AI编程助手遇到这些"方言"时,表现会出现显著差异。这就好比一个号称精通中文的翻译官,听到"你好吗"能完美翻译,但听到同样意思的"你好不好"就翻译错了。更夸张的是,有时候仅仅是在代码中的一个点号后面加个空格,AI就可能给出完全不同的答案。
研究团队将这种现象称为"TOKDRIFT",意思是"标记漂移"。他们发现,问题的根源在于AI理解代码的方式存在根本性缺陷。AI使用的是一种叫做"子词标记化"的技术来"切分"代码,就像用刀切蛋糕一样。但这种切分方式是基于统计频率的,而不是基于编程语言的真正语法规则。
举个具体例子来说明这种荒谬程度。假设有一段Python代码调用一个名为"factorial"的函数,写成".factorial"的形式。当程序员在点号和函数名之间加了一个空格,变成". factorial"时,AI的"切分刀"就会完全改变切分方式。原本可能被切成[".factor", "ial"]这样莫名其妙的片段,加了空格后变成了[".", "factorial"]这样更合理的切分。结果就是,AI对同样功能的代码给出了截然不同的理解和输出。
这种现象的普遍性令人担忧。研究团队测试了九个不同的AI编程助手,包括一些拥有超过300亿参数的大型模型。他们设计了24种不同的"方言"变换规则,涵盖了程序员在日常编程中常见的格式差异。这些规则分为两大类:命名风格变换和空格风格变换。
命名风格变换就像是把"userName"改成"user_name",或者把"user_name"改成"UserName"。在编程语言的世界里,这些都是完全等价的表达方式,就像"西红柿"和"番茄"指的是同一种蔬菜。但AI却经常把它们当成不同的东西来处理。
空格风格变换更加细微,比如在操作符前后加减空格,或者在括号周围调整空格。这些改动对程序的功能毫无影响,就像在句子中调整标点符号的空格不会改变句子的意思一样。但AI的表现却会因此发生变化。
研究团队进行了大规模的实验,测试了三种典型的编程任务:代码修复、代码总结和代码翻译。结果令人震惊。即使是表现最好的AI模型Qwen2.5-Coder-32B-Instruct,也有6.09%的概率在面对这些"方言"变化时给出不同的答案。更极端的情况下,某些特定的格式变化甚至能让AI的回答错误率飙升到60%。
这个发现的深层含义是什么呢?这就好比发现了一个自称精通多国语言的翻译官,实际上只是死记硬背了一些固定句式,一旦遇到稍微不同的表达方式就束手无策。当前的AI编程助手虽然在标准测试中表现优异,但它们对代码的理解可能比我们想象的要肤浅得多。
研究团队还深入分析了问题的技术根源。他们发现,这种敏感性问题从AI的第一层就开始显现,并且在整个处理过程中持续存在。通过分析AI内部的"思考过程",他们发现AI在处理代码时确实把看似相同的代码片段理解成了完全不同的东西。
更有趣的是,研究团队还发现了一个规律:当代码中的标识符被切分成不同片段时,AI的敏感性会显著增加。这就像是把一个完整的单词"apple"随机切成"ap"和"ple",然后期望读者还能正确理解这是在说苹果一样荒谬。
这项研究揭示的问题不仅仅是技术层面的缺陷,更是对整个AI编程助手发展方向的质疑。如果AI连基本的代码"方言"都处理不好,我们又怎么能指望它们在复杂的编程任务中表现可靠呢?
研究团队提出,解决这个问题需要从根本上改变AI理解代码的方式。他们建议开发更加"语法敏感"的标记化技术,让AI能够按照编程语言的真正语法规则来理解代码,而不是简单地基于统计频率进行切分。
这个发现对整个AI编程领域都具有重要启示。它提醒我们,尽管AI编程助手在某些方面表现出色,但在可靠性和鲁棒性方面还有很长的路要走。对于依赖AI编程助手的开发者来说,了解这些局限性有助于更好地使用这些工具,避免因为格式差异而得到不一致的结果。
从长远来看,这项研究为AI编程助手的改进指明了方向。未来的AI系统需要更深入地理解编程语言的本质,而不是仅仅依赖表面的模式匹配。只有这样,AI编程助手才能真正成为程序员可靠的伙伴,而不是一个容易被"方言"困扰的助手。
这项研究也提醒整个AI社区,在追求性能提升的同时,不能忽视基础的鲁棒性问题。毕竟,一个在标准测试中得分很高但在实际使用中表现不稳定的AI系统,对用户来说价值是有限的。研究团队已经将他们的框架和数据开源,希望能推动更多研究者关注这个重要但被忽视的问题。
说到底,这项研究告诉我们,AI编程助手虽然强大,但还远未达到我们期望的成熟度。在享受AI带来的便利的同时,我们也需要保持清醒的认识,了解它们的局限性,并为未来的改进提供支持。毕竟,真正可靠的AI编程助手应该能够理解代码的本质,而不是被表面的格式差异所困扰。
Q&A
Q1:什么是TOKDRIFT现象?
A:TOKDRIFT是指AI编程助手在处理功能相同但格式略有不同的代码时,会给出不同结果的现象。比如在代码中加个空格或改变变量命名风格,AI就可能产生完全不同的理解和输出,就像一个翻译官听不懂方言一样。
Q2:为什么AI编程助手会出现这种问题?
A:问题源于AI使用的"子词标记化"技术。这种技术基于统计频率来切分代码,而不是根据编程语言的语法规则。就像用错误的方式切蛋糕,导致AI把同样的代码理解成不同的含义。
Q3:这个发现对程序员有什么影响?
A:这提醒程序员在使用AI编程助手时要注意代码格式的一致性,同时要对AI的输出保持谨慎态度。不能完全依赖AI的判断,特别是在处理关键代码时,需要人工验证AI的建议是否正确。
好文章,需要你的鼓励
谷歌DeepMind等顶级机构联合研究揭示,当前12种主流AI安全防护系统在面对专业自适应攻击时几乎全部失效,成功率超过90%。研究团队通过强化学习、搜索算法和人类红队攻击等多种方法,系统性地突破了包括提示工程、对抗训练、输入过滤和秘密检测在内的各类防护技术,暴露了AI安全评估的根本缺陷。
西蒙弗雷泽大学和Adobe研究院联合开发的MultiCOIN技术,能够将两张静态图片转换为高质量的过渡视频。该技术支持轨迹、深度、文本和区域四种控制方式,可单独或组合使用。采用双分支架构和分阶段训练策略,在运动控制精度上比现有技术提升53%以上,为视频制作提供了前所未有的灵活性和精确度。
英国国王学院研究团队开发了潜在精炼解码(LRD)技术,解决了AI文本生成中的速度与准确性平衡难题。该方法通过两阶段设计模仿人类思考过程:先让AI在连续空间中"深思熟虑",保持多种可能性的混合状态,然后"果断行动",逐步确定答案。实验显示,LRD在编程和数学推理任务中准确性提升最高6.3个百分点,生成速度提升最高10.6倍,为AI并行文本生成开辟了新路径。
清华大学团队开发的ViSurf是一种创新的大型视觉语言模型训练方法,巧妙融合了督导式学习和强化学习的优势。该方法通过将标准答案整合到强化学习过程中,让AI既能从正确答案中学习又能保持自主推理能力。实验显示ViSurf在多个视觉任务上显著超越传统方法,特别是在处理模型知识盲区时表现突出,同时有效避免了灾难性遗忘问题,为AI训练提供了更高效稳定的新范式。