Bridging Generation and Training: A Systematic Review of Quality Issues in LLMs for Code
本文对 114 项研究进行了系统综述,旨在建立统一的分类体系和因果框架,将训练数据质量问题与大语言模型中的缺陷代码生成联系起来,同时综合缓解技术,并勾勒出向以数据为中心的主动治理范式转变,以构建可靠的代码模型。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正在试图教导一位才华横溢但极其死板的学生如何编写计算机代码。你给他一本庞大的书籍库(训练数据)供其研读。这位学生阅读了所有内容,记住了各种模式,然后尝试独立编写新代码。
这篇论文是对“为何这位学生有时会写出存在漏洞、不安全或完全错误的代码”进行的一次大规模调查。作者团队(一组研究人员)审查了 114 项不同的研究,旨在回答一个简单却至关重要的问题:这位学生糟糕的写作表现是源于其自身过错,还是因为他们所研读的书籍本身充满了错误?
他们的结论令人震惊:问题主要出在书籍上。
以下是他们研究发现的详细拆解,通过简单的类比进行解释:
1. “垃圾进,垃圾出”的现实
该论文指出,当人工智能(大语言模型)生成糟糕的代码时,很少是因为人工智能“思考”能力差。相反,是因为人工智能仅仅是在复现它在训练数据中看到的内容。
- 类比: 想象你通过阅读一本烹饪书来学习做饭。如果书中有一道食谱写着“往汤里加一杯盐”,而你照做了,那么你的汤将无法入口。你并没有犯错,错的是那本书。
- 论文主张: 人工智能从一本“烹饪书”(训练数据)中学习,其中包含了来自互联网的数百万行代码。如果这些互联网代码存在安全漏洞、过时的指令或拼写错误,人工智能就会将这些错误当作正确做法加以学习。
2. 两种类型的“坏书”
研究人员将训练数据中的问题归纳为两大类:
- “坏食谱”问题(代码属性): 这些是代码片段本身存在的具体错误。
- 示例: 一道使用了十年前已被禁用的工具的食谱。人工智能因为在这本书中看到了它,便学会了使用这种被禁工具。
- 示例: 一道忘记清洗鸡肉的食谱,导致做出来的饭菜让人生病(即安全漏洞)。
- “坏图书馆”问题(非代码属性): 这些是整个图书馆存在的问题,而不仅仅是个别食谱的问题。
- 示例: 图书馆里有 1000 本相同的无聊食谱,却只有一本复杂健康的菜肴食谱。人工智能对那道无聊菜肴变得精通,却在处理复杂菜肴时完全失败。
- 示例: 图书馆里充斥着随机乱码或广告页面(噪声),分散了学生认真学习真正烹饪技巧的注意力。
3. 错误如何传播(流程)
该论文精确描绘了“书”中的错误如何变成“最终菜肴”中的错误。他们发现了18 种不同的发生方式,并将其归为两条路径:
- 直接复制(直接映射): 人工智能看到某种特定的错误模式并加以重复。
- 类比: 学生在书中看到一个拼写错误,并在自己的文章中照抄了同样的拼写错误。
- 现实结果: 人工智能使用了一个已弃用(过时)且不再有效的计算机命令,导致程序崩溃。
- 扭曲学习(间接映射): 由于图书馆本身不平衡,人工智能学到了错误的比例关系。
- 类比: 因为图书馆里 99% 的食谱都是关于“烤焦面包”的,只有 1% 是关于“制作面包”的,人工智能便认为烤焦面包是烹饪的唯一方式。由于从未见过足够的例子,它根本不知道如何制作好面包。
- 现实结果: 人工智能在编写简单的 Python 代码方面表现出色,但在编写其他语言或复杂任务的代码时却表现糟糕,因为训练数据是不平衡的。
4. 当前的修复方案 vs. 更优的修复方案
该论文指出,大多数公司目前试图在人工智能写完代码之后才解决这个问题。他们就像一名食品检查员,在汤煮好后尝一口,然后说:“太咸了,倒掉吧。”
- 问题所在: 这种方式缓慢、昂贵且属于被动反应。你不断地倒掉糟糕的汤。
- 论文建议: 我们需要在学生开始学习之前就扮演好图书管理员和编辑的角色。
- 我们不应仅仅在末端过滤掉糟糕的汤,而应进入图书馆,剔除糟糕的食谱,修正拼写错误,并确保有各种类型菜肴的良好搭配。
- 作者将这一转变称为从“被动过滤”转向“主动数据治理”。
5. 仍有何难点?
即使有了这种新的理解,该论文也承认仍存在巨大障碍:
- “泄漏”的图书馆: 有时,人工智能研读的“书籍”包含了它稍后将参加的测试的答案。这使得人工智能看起来比实际更聪明,因为它只是死记硬背了答案。
- “黑盒”图书馆: 我们往往无法确切知道哪些书籍被用于训练最流行的人工智能。在不知晓来源的情况下,很难追溯特定错误发生的原因。
- 移动的目标: 软件世界变化迅速。今天一道“好”食谱,明天可能就变成了“坏”食谱,因为技术已经更新。图书馆需要不断更新,而这非常困难。
总结
该论文得出结论:要获得人工智能生成的可靠代码,我们不能仅仅指责人工智能,也不能试图在事后修复其输出。我们必须修复源材料。如果我们希望人工智能编写完美的代码,就必须首先确保其学习的“图书馆”是干净、平衡且与时俱进的。输出的质量直接反映了输入的质量。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。