💬 NLP
Fine-Tuning Pre-Trained Code Models for AI-Generated Code Detection
本文介绍了“考古学”团队为 SemEval-2026 第 13 任务提出的系统,该系统利用微调的预训练代码模型,并结合留一语言交叉验证和三明治令牌打包等专用策略,在检测人工智能生成代码及其溯源方面取得了顶尖性能。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一家名为“考古学”的数字侦探机构。他们的工作不是挖掘古代陶器,而是 sift 通过堆积如山的计算机代码,以回答两个重大问题:
- 谁写的? 是人类程序员还是机器人(AI)?
- 哪个机器人写的? 如果是机器人,是哪个具体的 AI 模型创建的?
这支队伍参加了一场名为 SemEval-2026 第 13 项任务的高风险竞赛,以证明他们的技能。以下是他们如何做到的简单解释。
挑战:一个两部分谜题
竞赛包含两个截然不同的谜题,每个都需要不同的侦探策略。
谜题 A:“人类 vs 机器人”测试(二分类)
- 目标: 查看一段代码并判断是“人类”还是"AI"。
- 陷阱: 该团队主要在 Python 代码上接受训练(占其练习数据的 91%),但最终测试包含了他们从未见过的语言,如 JavaScript、Go 和 C#。这就像教一位厨师只烹饪意大利菜,然后要求他们判断一道菜是自制还是工厂生产,而实际上那是一道泰式咖喱。
- 线索: AI 生成的代码往往更长且更统一,而人类编写的代码更短且更混乱。然而,这条规则会根据语言不同而反转(例如,在 C++ 中,人类编写的代码实际上比 AI 更长)。
谜题 B:“哪个机器人?”测试(多类归属)
- 目标: 如果代码是 AI 生成的,准确识别出是 11 个不同 AI 模型中的哪一个写的。
- 陷阱: 数据极度不平衡。一个类别(人类编写的代码)占数据的 88%,而某些特定 AI 模型的示例少于 2,000 个。这就像试图在干草堆里找一根针,其中干草堆 99% 是干草,而针有不同的颜色,但你只有一根红针和一百万根蓝针。
- 线索: 不同的 AI 模型有微妙的“笔迹”风格,但这些风格在长而复杂的代码中很难察觉。
侦探的工具箱
该团队并非凭空猜测;他们使用了四种不同的“超级眼睛”(预训练 AI 模型),并为每个谜题提供了专门的训练技术。
针对谜题 A(人类 vs 机器人)
- “语言交换”训练: 为了应对测试中出现的意外语言,他们通过每次隐藏一种语言来训练模型。他们教导模型在不依赖特定语言技巧(例如 Python 使用
#作为注释)的情况下识别模式。 - “清洗与掩码”练习: 他们在训练期间去除了注释,并用占位符替换了数字。这迫使模型关注代码的逻辑,而不仅仅是表面装饰。
- “分块”策略: 由于测试代码通常太长而无法一次性阅读,他们将其切成重叠的片段(就像一次读几页来读一本长书)。然后,他们取这些片段的平均值,忽略最极端的“噪声”猜测,以做出最终决定。
- “困难案例”校准: 他们使用简单计算机程序出错的示例创建了一个特殊的“硬测试”。他们根据这些棘手案例调整了决策阈值(“人类”与"AI"之间的分界线),以确保不会被测试数据愚弄。
针对谜题 B(哪个机器人?)
- “三明治”技术: 由于代码太长无法放入模型的内存,他们并没有直接切掉中间部分。相反,他们保留了代码的头部(开头)和尾部(结尾),并将它们像三明治一样塞在一起,中间加上一个特殊标记。这保留了开头和结尾的风格,而“机器人签名”往往隐藏在这些地方。
- “公平性”权重: 由于某些 AI 模型在数据中很少见,团队告诉模型:“不要只猜最常见的那个!要格外关注那些罕见的。”他们调整了评分系统,使模型学会识别罕见的机器人,而不仅仅是流行的那些。
- “群体智慧”投票: 他们让模型在略有变化的情况下多次运行同一段代码,并让模型对答案进行投票。这减少了错误并提高了置信度。
结果
“考古学”团队表现非常出色:
- 谜题 A: 他们获得了 0.737 的分数,在 81 支队伍中排名第 6。他们最好的工具是 CodeBERT,它似乎比其他模型更能理解代码的“逻辑”。
- 谜题 B: 他们获得了 0.422 的分数,在 34 支队伍中排名第 7。他们在这里最好的工具是 UniXcoder,它受益于查看更长的代码块并使用“投票”策略。
主要启示
该团队发现,模型的训练方式比其规模更重要。
- 那些专门训练以理解代码逻辑的较小模型(1.25 亿参数)在识别 AI 方面表现更好。
- 巨型模型(2.2 亿参数)并未获胜,这表明对于这项特定工作,成为“专家”比成为“通才”更好。
简而言之,该团队证明,通过正确的训练技巧——如切割长代码、忽略表面噪声以及对答案进行投票——你可以构建一个系统,该系统在捕捉 AI 生成的代码方面出奇地有效,即使它试图用新语言伪装自己。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。