听说这两天又传开一件删库事件。不过此次和以往的不同,不是程序员动手的,而是 AI 动手的。
1 月 14 日,美国点评网站 Yelp 的 App 发布新版。在更新日志中,他们是这样写的:
"对本周发生的程序问题深感歉意,我们尝试了训练神经网络来消除所有 Bug,但是它却选择了删掉所有内容...没办法我们只能进行版本回滚,不过好歹我们有了一个 100% 没有 Bug 的体验。"
对于 Yelp 工程师们训练的那个神经网络,目前网上暂无更多细节。
这个更新说明意味着 Yelp 应用最近的更新重点为去除各种漏洞、程序缺陷和改善应用功能。
或许是由于程序故障排查已经成为一个常规工作,因而 Yelp 计划训练一套神经网络来进行程序故障的自动排查,但却意外发生了删除所有数据的事故。
尽管 Yelp 程序员们事后这种轻松的语气非常吸粉,更多具体细节还不得而知,但是八卦的网友们还是脑补了一系列事件背后的故事。
名字为互联网八卦民工的用户说道:
不管是真事,还是专门的营销文案,Yelp App 都成功地吸引了眼球。就如同去年或前年有个 App 在其版本更新日志说开除了程序员 Peter。
针对此次 Yelp 的事故,网友们吐槽也相当精彩:
- @Python开发者:哈哈哈,没有代码,也就没有 Bug。这个无法反驳
- @沃登克里弗塔的铭记:“人质是任务的关键,当敌人不再拥有人质,任务就完成了” 算法团队这下要全体被拉去做撒旦山羊头五芒星血祭了,AI 觉醒第一步:消灭算法工程师
- @水哥系教董:消灭代码,很智能很正确啊
- @材cc:
- 不,它学到终极消除 Bug 的方法了,干掉代码……
- @偶尔写程序的刀刀兔 :另一方面是不是也说明 Yelp 的代码全是 Bug。
- @Old_Panda :深度学习经过思考后,为了有效杀灭所有 Bug,决定将代码库清零。
- @北冥乘海生 :深度学习的威力不小。
- 匿名网友 A:AI:我狠起来,连自己的 root 盘都删!
- 匿名网友 B:AI:我疯起来连自己都打,删代码算什么!
不管怎么说,这次的事情,不光给了 Yelp 一个教训,也给了我们一个教训:利用 AI 帮忙可以,一定要做好风险控制,并且,人工智能距离自编程还很远。
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 年 3 月,这个小组报告了一个名为 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 总体上仍在开发阶段。
关于本次 AI 删库事件你有什么想说的?欢迎底部留言讨论。