1. 首页 >人工智能 > 正文

走向可以像人类一样推理代码的深度学习模型

导读 无论公司从事何种业务,软件都扮演着越来越重要的角色,从管理库存到与客户互动。因此,对软件开发人员的需求比以往任何时候都大,这推动了

无论公司从事何种业务,软件都扮演着越来越重要的角色,从管理库存到与客户互动。因此,对软件开发人员的需求比以往任何时候都大,这推动了将一些占用他们时间的更简单任务自动化的趋势。

Eclipse 和 Visual Studio 等生产力工具会建议代码片段,开发人员可以在编写时轻松放入他们的工作中。这些自动化功能由复杂的语言模型提供支持,这些语言模型在吸收了数千个示例后学会了读写计算机代码。但是,与在没有明确指令的情况下在大数据集上训练的其他深度学习模型一样,专为代码处理而设计的语言模型也存在内置漏洞。

由 MIT 和 IBM 研究人员构建的框架发现并修复了自动编程工具中的弱点,这些弱点使它们容易受到攻击。一种工具(如图)随着程序员编写和建议代码而阅读。在这里,它从 Python 的 NumPy 库中的数千个选项中挑选最适合手头任务的函数。图片来源:麻省理工学院的 Shashank Srikant

“除非你真的很小心,否则黑客可以巧妙地操纵这些模型的输入,让它们预测任何事情,”麻省理工学院电气工程和计算机科学系的研究生Shashank Srikant说 。“我们正在努力研究并防止这种情况发生。”

在一篇新论文中,Srikant 和 MIT-IBM Watson AI Lab推出了一种自动方法,用于查找代码处理模型中的弱点并重新训练它们以提高抵御攻击的能力。这是 MIT 研究员Una-May O'Reilly 和 IBM 附属研究员 Sijia Liu共同努力的一部分, 旨在利用 AI 使自动化编程工具更智能、更安全。该团队将在国际学习代表会议上展示其结果。

一台能够自我编程的机器曾经看起来像科幻小说。但是,计算能力的指数级增长、自然语言处理的进步以及互联网上的大量免费代码使得软件设计的至少某些方面的自动化成为可能。

在 GitHub 和其他程序共享网站上接受过训练,代码处理模型学习生成程序,就像其他语言模型学习编写新闻故事或诗歌一样。这使他们能够充当智能助手,预测软件开发人员接下来会做什么,并提供帮助。他们可能会建议适合手头任务的程序,或者生成程序摘要来记录软件的工作方式。还可以训练代码处理模型来查找和修复错误。但是,尽管它们具有提高生产力和改进软件质量的潜力,但它们带来了研究人员刚刚开始发现的安全风险。

Srikant 和他的同事发现,代码处理模型可以通过简单地重命名变量、插入虚假的打印语句或将其他修饰操作引入模型试图处理的程序来欺骗。 这些经过巧妙修改的程序正常运行,但会欺骗模型错误地处理它们,从而做出错误的决定。

这些错误会对所有类型的代码处理模型产生严重的后果。恶意软件检测模型可能会被欺骗,将恶意程序误认为良性程序。代码完成模型可能会被欺骗提供错误或恶意的建议。在这两种情况下,病毒都可能被毫无戒心的程序员偷偷溜走。一个类似的问题困扰着计算机视觉模型:正如麻省理工学院的其他研究表明的那样,编辑输入图像中的几个关键像素,模型可能会将猪混淆为飞机,将乌龟混淆 为步枪。

就像最好的语言模型一样,代码处理模型有一个关键缺陷:它们是单词和短语之间统计关系的专家,但只能模糊地掌握它们的真正含义。例如,OpenAI 的 GPT-3 语言模型可以写出从雄辩到荒谬的散文,但只有人类读者才能分辨出其中的区别。

代码处理模型也不例外。“如果他们真的在学习程序的内在属性,那么应该很难欺骗他们,”Srikant 说。“但他们不是。他们目前相对容易被欺骗。”

在论文中,研究人员提出了一个框架,用于自动更改程序以暴露处理它们的模型中的弱点。它解决了一个两部分的优化问题;算法识别程序中添加或替换文本会导致模型出现最大错误的站点。它还确定了哪些类型的编辑构成了最大的威胁。

研究人员说,该框架揭示的是某些模型是多么脆弱。当对程序进行一次编辑时,他们的文本摘要模型失败了三分之一;他们报告说,在进行了五次编辑时,有一半以上的时间都失败了。另一方面,他们表明该模型能够从错误中学习, 并在此过程中潜在地获得对编程的更深入理解。

该研究的共同资深作者刘说:“我们用于攻击模型并针对这些特定漏洞对其进行重新训练的框架,可能有助于代码处理模型更好地掌握程序的意图。” “这是一个有待探索的令人兴奋的方向。”

在后台,一个更大的问题仍然存在:这些黑盒深度学习模型到底在学习什么?“他们是否像人类一样推理代码,如果不是,我们如何制作它们?” 奥莱利说。“这是我们面临的巨大挑战。”

标签:

免责声明:本文由用户上传,如有侵权请联系删除!