← 最新论文
💻 computer science

Do Machines Struggle Where Humans Do? LLM and Human Comprehension of Obfuscated Code

本文评估了大语言模型在理解混淆代码时是否与人类共享失败模式,发现经过推理微调的模型在各种混淆层级上均显著符合人类的难度模式,而经过指令微调的模型则不然。

原作者: Jack Le, Anh H. N. Nguyen, Tien N. Nguyen

发布于 2026-07-01
📖 1 分钟阅读☕ 轻松阅读

原作者: Jack Le, Anh H. N. Nguyen, Tien N. Nguyen

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

想象一下你正在尝试解开一个拼图。现在,想象有人把那个拼图拿走,并对它做了两件事:

  1. 重命名碎片: 不再是“国王”、“皇后”和“兵”,而是将这些国际象棋棋子标记为“X”、“Y”和“Z”。或者更糟,为了欺骗你,把“国王”标记成了“兵”。
  2. 打乱指令: 指令不再是清晰的路径,如“向前走,然后左转”,而是被拆分成细碎、脱节的步骤,需要一张复杂的地图才能理清顺序。

这就是**代码混淆(code obfuscation)**对计算机程序所做的事情。它让程序运行方式完全保持不变,但却让其变得极难被人类阅读和理解。

这篇论文提出了一个简单但深刻的问题:人工智能模型(大语言模型)是否也会像人类一样,在这些被打乱的拼图中感到困惑? 还是说,它们的失败方式完全不同,且充满神秘感?

以下是研究结果的解读,使用了日常类比:

1. “聪明型”AI vs. “训练型”AI

研究人员测试了不同类型的 AI 模型。把它们想象成不同类型的学生:

  • “编码/指令型”模型(Coder/Instruct Models): 这些像是背诵了大量代码教材的学生。它们擅长识别模式(比如看到“print”这个词就知道该做什么)。但当你打乱拼图时,它们会感到困惑,因为它们的“模式匹配”失效了。它们并不真正理解代码为什么能工作,它们只是知道代码通常长什么样。
  • “推理型”模型(Reasoning Models): 这些像是被教导过如何思考的学生。它们不只是死记硬背,而是尝试一步步推导逻辑。

重大发现: “推理型”模型在面对打乱的拼图时,表现出了与人类完全相同的困惑。当拼图变得更难(混淆程度更高)时,人类和推理型 AI 都会变得更慢且更容易出错。然而,“编码型”模型并不怎么在意难度,它们要么随机失败,要么并没有表现出难度增加,这表明它们并不是像人类那样在进行真正的“思考”。

2. “自信的错误”陷阱

研究中最有趣的部分之一涉及一种被称为**对抗性重命名(Adversarial Renaming)**的特定技巧。

  • 场景: 假设一个计算税率的函数名为 calculate_tax。混淆器将其名称改为 calculate_bonus(计算奖金)。
  • 人类的反应: 程序猿看到“奖金”时会想:“等等,这对于税收来说不太合理”,但如果代码逻辑很混乱,他们仍可能感到困惑。
  • AI 的反应: “推理型”AI 有时会掉入这个陷阱。它们看到了“奖金”这个词,便假定代码是关于发钱的,从而自信地给出了错误的答案。

研究发现,这种“自信的错误”只有在两种情况同时发生时才会出现:名称具有误导性,并且代码结构令人困惑。这就像有人给了你一张城市地图,但把“医院”标注成了“披萨店”,而且街道全是单行循环路。你会自信地开车前往“披萨店”(实际是医院),然后迷失方向。

3. “思考时间”计量器

研究人员观察了 AI 在回答之前“思考”了多久。他们通过计算 AI 在其“思维链”(内部独白)中生成的单词数量来衡量这一点。

  • 人类的平行类比: 当人类面对难题时,解决问题需要更长时间。
  • AI 的平行类比: 当谜题变得更难时,AI 生成的内部独白也变得越来越长。
  • 反转之处: 有趣的是,AI 并没有仅仅通过延长思考时间就变得更擅长解决难题。事实上,AI 思考得越久,它出错的可能性就越大。这就像一个学生对着一道数学题盯着看了一个小时,写了满页的笔记,但由于题目本身太难,最终还是算错了答案。思考的长度是难度的信号,而不是成功的信号。

4. “专家”的区别

研究还观察了人类专家与初学者的区别。

  • 初学者: 当代码被打乱时,初学者的表现变得差得多。
  • 专家: 出人意料的是,专家在面对轻微打乱的代码时,有时反而表现得更好了。为什么?因为他们不再依赖变量的名称(那些“国王”或“兵”的标签),而是开始严格观察逻辑和结构。
  • AI 的差距: 没有一种 AI 模型,即使是最聪明的,也无法复制这种“专家”行为。它们在面对轻微打乱的代码时并没有变得更好,反而变得更差了。这表明,尽管 AI 在推理方面取得了进步,但尚未达到人类那种可以忽略误导性标签并专注于底层结构的直觉水平。

总结:这意味着什么?

  • AI 理解代码的方式像人类吗? “推理型”AI 正在开始向这个方向靠拢。它们会在人类会感到困惑的难题上卡住。“编码型”AI 则只是模式匹配机器,其失败方式截然不同。
  • 我们可以盲目信任处理复杂代码的 AI 吗? 不可以。如果代码有奇怪的名称或混乱的结构,AI 可能会给你一个非常自信、但完全错误的答案。
  • “思考”信号: 如果一个 AI 开始针对一个简单的任务写出非常冗长、散乱的解释,这并不代表它有天赋,而是说明它正在挣扎,并且可能即将犯错。

简而言之,这篇论文表明,我们正在构建开始像人类一样“思考”的 AI,但在它们能够处理现实世界开发者每天遇到的那些混乱、模糊且棘手的代码之前,还有很长的路要走。

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

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

试用 Digest →