AI|天吶嚕!人工智能竟徹底消滅了Bug

聽說這兩天又傳開一件刪庫事件。不過此次和以往的不同,不是程序員動手的,而是 AI 動手的。


AI|天吶嚕!人工智能竟徹底消滅了Bug


1 月 14 日,美國點評網站 Yelp 的 App 發佈新版。在更新日誌中,他們是這樣寫的:

"對本週發生的程序問題深感歉意,我們嘗試了訓練神經網絡來消除所有 Bug,但是它卻選擇了刪掉所有內容...沒辦法我們只能進行版本回滾,不過好歹我們有了一個 100% 沒有 Bug 的體驗。"


AI|天吶嚕!人工智能竟徹底消滅了Bug


對於 Yelp 工程師們訓練的那個神經網絡,目前網上暫無更多細節。


AI|天吶嚕!人工智能竟徹底消滅了Bug


這個更新說明意味著 Yelp 應用最近的更新重點為去除各種漏洞、程序缺陷和改善應用功能。


AI|天吶嚕!人工智能竟徹底消滅了Bug


或許是由於程序故障排查已經成為一個常規工作,因而 Yelp 計劃訓練一套神經網絡來進行程序故障的自動排查,但卻意外發生了刪除所有數據的事故。

儘管 Yelp 程序員們事後這種輕鬆的語氣非常吸粉,更多具體細節還不得而知,但是八卦的網友們還是腦補了一系列事件背後的故事。

名字為互聯網八卦民工的用戶說道:


AI|天吶嚕!人工智能竟徹底消滅了Bug


不管是真事,還是專門的營銷文案,Yelp App 都成功地吸引了眼球。就如同去年或前年有個 App 在其版本更新日誌說開除了程序員 Peter。


AI|天吶嚕!人工智能竟徹底消滅了Bug


AI|天吶嚕!人工智能竟徹底消滅了Bug


針對此次 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 會參考幾種不同的策略,自動生成補丁。


AI|天吶嚕!人工智能竟徹底消滅了Bug


根據 Facebook 的數據,Sapienz 報告的大約四分之三的錯誤都需要開發者來修復。

自 Facebook 開始測試 SapFix 之後,該工具已經成功生成了被人類審核者接受並部署於生產的補丁。不過,目前 SapFix 總體上仍在開發階段。

關於本次 AI 刪庫事件你有什麼想說的?歡迎底部留言討論。


分享到:


相關文章: