AI | 天吶嚕!人工智能竟徹底消滅了Bug
聽說這兩天又傳開一件刪庫事件。不過此次和以往的不同,不是程序員動手的,而是 AI 動手的。
1 月 14 日,美國點評網(wǎng)站 Yelp 的 App 發(fā)布新版。在更新日志中,他們是這樣寫的:
"對本周發(fā)生的程序問題深感歉意,我們嘗試了訓(xùn)練神經(jīng)網(wǎng)絡(luò)來消除所有 Bug,但是它卻選擇了刪掉所有內(nèi)容...沒辦法我們只能進(jìn)行版本回滾,不過好歹我們有了一個 100% 沒有 Bug 的體驗。"
對于 Yelp 工程師們訓(xùn)練的那個神經(jīng)網(wǎng)絡(luò),目前網(wǎng)上暫無更多細(xì)節(jié)。
這個更新說明意味著 Yelp 應(yīng)用最近的更新重點為去除各種漏洞、程序缺陷和改善應(yīng)用功能。
或許是由于程序故障排查已經(jīng)成為一個常規(guī)工作,因而 Yelp 計劃訓(xùn)練一套神經(jīng)網(wǎng)絡(luò)來進(jìn)行程序故障的自動排查,但卻意外發(fā)生了刪除所有數(shù)據(jù)的事故。
盡管 Yelp 程序員們事后這種輕松的語氣非常吸粉,更多具體細(xì)節(jié)還不得而知,但是八卦的網(wǎng)友們還是腦補了一系列事件背后的故事。
名字為互聯(lián)網(wǎng)八卦民工的用戶說道:
不管是真事,還是專門的營銷文案,Yelp App 都成功地吸引了眼球。就如同去年或前年有個 App 在其版本更新日志說開除了程序員 Peter。
針對此次 Yelp 的事故,網(wǎng)友們吐槽也相當(dāng)精彩:
- @Python開發(fā)者:哈哈哈,沒有代碼,也就沒有 Bug。這個無法反駁
- @沃登克里弗塔的銘記:“人質(zhì)是任務(wù)的關(guān)鍵,當(dāng)敵人不再擁有人質(zhì),任務(wù)就完成了” 算法團(tuán)隊這下要全體被拉去做撒旦山羊頭五芒星血祭了,AI 覺醒第一步:消滅算法工程師
- @水哥系教董:消滅代碼,很智能很正確啊
- @材cc:
- 不,它學(xué)到終極消除 Bug 的方法了,干掉代碼……
- @偶爾寫程序的刀刀兔 :另一方面是不是也說明 Yelp 的代碼全是 Bug。
- @Old_Panda :深度學(xué)習(xí)經(jīng)過思考后,為了有效殺滅所有 Bug,決定將代碼庫清零。
- @北冥乘海生 :深度學(xué)習(xí)的威力不小。
- 匿名網(wǎng)友 A:AI:我狠起來,連自己的 root 盤都刪!
- 匿名網(wǎng)友 B:AI:我瘋起來連自己都打,刪代碼算什么!
不管怎么說,這次的事情,不光給了 Yelp 一個教訓(xùn),也給了我們一個教訓(xùn):利用 AI 幫忙可以,一定要做好風(fēng)險控制,并且,人工智能距離自編程還很遠(yuǎn)。
MIT 也曾研究自動修復(fù) Bug 的系統(tǒng)
2015 年 6 月下旬,在計算機(jī)學(xué)會的編程語言設(shè)計與實現(xiàn)大會上,MIT 的研究者們展示了一個新系統(tǒng),可以通過從其他更加安全的應(yīng)用中自動導(dǎo)入相關(guān)功能,借以修復(fù)原來軟件中的危險漏洞。
這個引人注目的系統(tǒng)叫做 CodePhage ,它借用其他程序時并不需要訪問借主應(yīng)用的源碼。
相反,該系統(tǒng)分析這個應(yīng)用的執(zhí)行情況,并標(biāo)記出其安全檢查類別的特性。
因此,即使所編寫的語言與被修復(fù)應(yīng)用的語言不同,該系統(tǒng)仍然可以從中導(dǎo)出檢查功能用來修復(fù)應(yīng)用。
CodePhage 將代碼導(dǎo)入易受攻擊的程序后,還會進(jìn)行進(jìn)一步分析以確保漏洞被修復(fù)。
MIT 計算機(jī)科學(xué)與人工智能研究室(CSAIL)的研究員,CodePhage 的研發(fā)領(lǐng)導(dǎo)人員 Stelios Sidiroglou-Douskos 表示:
“我們在開源庫里有大量代碼可用,數(shù)百萬計項目,而且很多項目都有類似的實現(xiàn)了。這些項目總有一些可以與別的許多項目共享功能的子模塊,即便那不一定是該程序的核心功能。”
有了 CodePhage,“你將逐漸建立一個集其他應(yīng)用最優(yōu)秀部分于一身的混合系統(tǒng)。”
Sidiroglou-Douskos 和他的共同作者——MIT 計算機(jī)科學(xué)和工程的教授 Martin Rinard,研究生 Fan Long 和 Rinard 組里的研究員 Eric Lahtinen——將 CodePhage 正在被修復(fù)的程序稱作是接受程序,出借功能的程序稱為捐獻(xiàn)程序。
要開始分析,CodePhage 需要兩個輸入樣本:一個導(dǎo)致接受程序崩潰,另一個則不會。
2015 年 3 月,這個小組報告了一個名為 DIODE 的漏洞定位程序。該程序可以自動產(chǎn)生引起崩潰的輸入信息。但是用戶也許就很容易發(fā)現(xiàn)打開特定文件時會崩潰。
Facebook 也在研究自動 Debug 的程序
2018 年 9 月,F(xiàn)acebook 基于 AI 技術(shù)再次推出新款代碼調(diào)試工具 SapFix,可針對特定的 Bug 自動生成修復(fù)程序,然后將其提交給工程師,經(jīng)確認(rèn)之后,然后再部署到生產(chǎn)環(huán)境中。
相比其一年前已投入大規(guī)模使用的智能自動化軟件測試工具 Sapienz,SapFix 能夠在沒有 Sapienz 的情況下運行,主要用于修復(fù) Sapienz 在生產(chǎn)前發(fā)現(xiàn)的程序 Bug。
從發(fā)現(xiàn) Bug 到修復(fù) Bug,F(xiàn)acebook 有一套完整的流程:首先 Sapienz 以及 Facebook 的靜態(tài)分析工具 Infer,會幫助定位代碼中需要修補的點。
一旦 Sapienz 和 Infer 精確定位與崩潰相關(guān)的特定代碼部分之后,就會將該信息傳遞給 SapFix;最后,SapFix 會參考幾種不同的策略,自動生成補丁。
根據(jù) Facebook 的數(shù)據(jù),Sapienz 報告的大約四分之三的錯誤都需要開發(fā)者來修復(fù)。
自 Facebook 開始測試 SapFix 之后,該工具已經(jīng)成功生成了被人類審核者接受并部署于生產(chǎn)的補丁。不過,目前 SapFix 總體上仍在開發(fā)階段。
關(guān)于本次 AI 刪庫事件你有什么想說的?歡迎底部留言討論。