聽說這兩天又傳開一件刪庫事件。不過此次和以往的不同,不是程式員動手的,而是 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 總體上仍在開發階段。