听说这两天又传开一件删库事件。不过此次和以往的不同,不是程序员动手的,而是 AI 动手的。
1 月 14 日,美国点评网站 Yelp 的 APP 发布新版。在更新日志中,他们是这样写的:(大意)
很抱歉,本周我们 APP 出问题了。我们训练了一个神经网络,本想着让它来消除我们 APP 中的 Bug,没想到它把所有东西都删了。所以我们不得不回滚了。不过说真的,我们曾经有段时间绝对是没有 bug 的。
对于 Yelp 工程师们训练的那个神经网络,目前网上暂无更多细节。
不管是真事,还是专门的营销文案,Yelp APP 都成功地吸引了眼球。就如同去年或前年有个 APP 在其版本更新日志说开除了程序员 Peter。
网友评论:
@Python开发者 :哈哈哈,没有代码,也就没有 Bug。这个无法反驳
@沃登克里弗塔的铭记:“人质是任务的关键,当敌人不再拥有人质,任务就完成了” 算法团队这下要全体被拉去做撒旦山羊头五芒星血祭了,AI觉醒第一步:消灭算法工程师
@水哥系教董:消灭代码,很智能很正确啊
@材cc: 不,它学到终极消除bug的方法了,干掉代码……
MIT 也曾研究自动修复 Bug 的系统
2015 年 6 月下旬,在计算机学会的编程语言设计与实现大会上,MIT 的研究者们展示了一个新系统,可以通过从其他更加安全的应用中自动导入相关功能,借以修复原来软件中的危险漏洞。
这个引人注目的系统叫做 CodePhage ,它借用其他程序时并不需要访问借主应用的源码。相反,该系统分析这个应用的执行情况,并标记出其安全检查类别的特性。因此,即使所编写的语言与被修复应用的语言不同,该系统仍然可以从中导出检查功能用来修复应用。
CodePhage 将代码导入易受攻击的程序后,还会进行进一步分析以确保漏洞被修复。
MIT 计算机科学与人工智能研究室(CSAIL)的研究员,CodePhage 的研发领导人员 Stelios Sidiroglou-Douskos 表示:
“我们在开源库里有大量代码可用,数百万计项目,而且很多项目都有类似的实现了。这些项目总有一些可以与别的许多项目共享功能的子模块,即便那不一定是该程序的核心功能。”
有了 CodePhage,“你将逐渐建立一个集其他应用最优秀部分于一身的混合系统。”
Sidiroglou-Douskos 和他的共同作者——MIT 计算机科学和工程的教授 Martin Rinard,研究生 Fan Long 和 Rinard 组里的研究员 Eric Lahtinen——将 CodePhage 正在被修复的程序称作是接受程序,出借功能的程序称作是捐献程序。要开始分析,CodePhage 需要两个输入样本:一个导致接受程序崩溃,另一个则不会。2015 年三月,这个小组报告了一个名为 DIODE 的漏洞定位程序。该程序可以自动产生引起崩溃的输入信息。但是用户也许就很容易发现打开特定文件时会崩溃。
Facebook 也在研究自动 Debug 的程序
2018 年 9 月,Facebook 基于 AI 技术再次推出新款代码调试工具 SapFix,可针对特定的 bug 自动生成修复程序,然后将其提交给工程师,经确认之后,然后再部署到生产环境中。相比其一年前已投入大规模使用的智能自动化软件测试工具 Sapienz,SapFix 能够在没有 Sapienz 的情况下运行,主要用于修复 Sapienz 在生产前发现的程序 bug。
从发现 bug 到修复 bug,Facebook 有一套完整的流程:首先 Sapienz 以及 Facebook 的静态分析工具 Infer,会帮助定位代码中需要修补的点;一旦 Sapienz 和 Infer 精确定位与崩溃相关的特定代码部分之后,就会将该信息传递给 SapFix;最后,SapFix 会参考几种不同的策略,自动生成补丁。
根据 Facebook 的数据,Sapienz 报告的大约四分之三的错误都需要开发者来修复。自 Facebook 开始测试 SapFix 之后,该工具已经成功生成了被人类审核者接受并部署于生产的补丁。不过,目前 SapFix 总体上仍在开发阶段。