授权 AI 移除 App 的 bug,结果 AI 将整个链接库删了,这件听起来很荒谬的事情,真实在美国 Yelp 发生了。Yelp 是美国著名商店评论网站,创立于 2004 年,囊括各地餐厅、购物中心、饭店、旅游等领域商店,用户可在 Yelp 网站帮商店评分、提交评论、交流购物体验等,由 Paypal 前工程师杰里米‧史托普曼(Jeremy Stoppelman)和罗素·西蒙斯(Russel Simmons)共同建立。近日,Yelp App 的更新说明把大家乐坏了:

我们要向本周使用 App 时遇到问题的用户道歉。我们训练了一个神经网络来消除 App 的 bug,没想到它把所有东西都删除了。现在只好试试回复数据。目前暂时达成 100 % 没有 bug 的状态……。
从过去两个月的更新说明来看,Yelp 基本上可说将「除虫」当成首要工作,从万圣节到圣诞节再到跨年,Yelp 的工程师几乎每天都沉溺在「消虫乐」的欢乐气氛里。

大概是在除 bug 这条路上除出公式,才会让 Yelp 的工程师萌生透过训练神经网络达成自动除 bug 的想法,只是他们没想到竟然如此出师不利。由于 Yelp 至今尚未公布详细的网络训练和删链接库细节,因此我们只能用猜的来判断导致删掉链接库的原因。然而令人绝望的是,即便 Yelp 工程师想找出「删链接库」事件的原由,神经网络的「黑箱」性质也导致没办法做到。

难道人类一点办法也没有了吗?
虽然 Yelp 以血淋淋的例子告诉我们,自动 debug有风险,然而我们无法因此否定许多机构在这方面的努力,毕竟 debug 工具一旦开发出来,工程师就可把更多精力放在写程序上。其中,最具代表性的是社群的 SapFix。

这是一款去年 9 月发表的程序代码除错工具,配合 社群 的自动化发现漏洞工具 Sapienz,可针对 bug 生成修补程序。

具体的执行流程,是 SapFix 会先给每个 bug 生成多个潜在修补程序,然后从三方面评定修补程序的质量(是否有编译错误、程序是否还会崩溃、修补程序是否引入新冲突),评定结束后,SapFix 会在修复版本测试,结果出来后第一时间发给人工评审员审查。一旦获得人工回馈,SapFix 就会执行批准的修补程序,并清除其他未被批准的修补程序。值得一提的是,面对较复杂的问题时,SapFix 会从过往的修复样本集搜寻生成修补程序的参考。即使没能找到合适的修复样本,它也会尝试基于突变来修复──简单来说,就是对导致崩溃的叙述抽象语法树(AST)执行小型程序代码修复,调整修补程序,直到找到可行的解决方案。此工具被 社群 视为 AI 技术的里程碑,下一步计划让 SapFix 达成自动制止程序代码崩溃机制,以及让软件反应更敏捷。Yelp「删链接库」事件是典型的 AI 过早落实商用的例子,技术尚未成熟的条件下,AI 输出结果难免会耍笨。更多信息:×××爱公益 http://pctchp.org.tw/