開年翻車事件:訓練神經網絡出bug AI刪庫跑路
授權AI 刪除app 中的bug,結果AI 將整個庫都給刪了,這件聽起來很荒謬的事情,真實在美國「大眾點評」Yelp 上發生了。Yelp 是美國著名商戶點評網站,創立於2004 年,囊括各地餐館、購物中心、酒店、旅遊等領域的商戶,用戶可以在Yelp 網站中給商戶打分,提交評論,交流購物體驗等,由前貝寶(Paypal)工程師傑里米·斯托普爾曼(Jeremy Stoppelman) 和羅素·西蒙斯(Russel Simmons)共同創建。
近日, Yelp 在app 上的一則更新說明把大家給樂壞了:
「我們要向那些在本週使用app 時遇到問題的用戶們道歉。我們訓練了一個神經網絡來消除app 中的bug,沒想到它把所有的東西都消除了。我們現在只好進行數據恢復。目前暫時達成100 % 沒有bug 的狀態……」
對此,微博網友立馬開啟了「群嘲模式」:
給人類留點面子好嗎……
從APP 過去兩個月的更新說明來看,Yelp 基本上可以說將「除bug」當成自己的首要任務,從萬聖節到聖誕節再到跨年,Yelp 的程序員們幾乎每天都沉溺在「消蟲樂」的歡樂氛圍當中……
估計是在除bug 這條道路上除出了固定套路,才會讓 Yelp 的程序員們萌生通過訓練神經網絡來達成自動除bug 的想法,只是他們沒想到竟然會如此出師不利。
由於Yelp 至今尚未公佈詳細的網絡訓練和刪庫細節,因此我們僅僅只能通過猜測來判斷導致刪庫的原因。然而令人感到絕望的是,即便Yelp 程序員們想复盤「刪庫」事件的原由,神經網絡的「黑箱」性質也將導致該行為沒法很好地落實。
難道我們就一點辦法也沒有了嗎?
雖然Yelp以血淋淋的例子告訴我們,自動debug有風險,然而我們不能因此否定許多機構在這方面研發工作的努力,畢竟debug工具一旦能夠出來,程序員們將可以把更多精力放在寫出更多代碼上。
其中,最具代表性的是Facebook 的SapFix。
這是一款於去年9 月份發布的代碼調試工具,配合Facebook 的自動化漏洞發現工具Sapienz,可以針對bug 生成修復補丁。
在具體的執行流程上,SapFix 會先給每個bug 生成多個潛在補丁,然後從3 個方面對補丁質量進行評定(是否存在編譯的錯誤、程序是否還會崩潰、補丁是否引入新的衝突) ,在評定結束後,SapFix 會在修復版本上進行測試,結果出來後第一時間發給人工評審員進行審批。
一旦獲得人工反饋,SapFix 將會執行那些經批准的補丁,並清除其他未被批准的補丁。
值得一提的是,在面對較複雜的問題時,SapFix 會從過往的修復模板集去尋找生成補丁的借鑒參考。即使沒能找著合適的修復模板,它也會嘗試基於突變進行修復——簡單來說,就是對導致崩潰的語句的抽象語法樹(AST)執行小型代碼修復,調整補丁,直到找著可行的解決方案。
該工具被Facebook 視作AI 技術的里程碑,下一步計劃讓SapFix 實現自動制止代碼崩潰機制,以及讓軟件的反應變得更敏捷。
Yelp「刪庫」事件是典型的AI 過早落實民用的例子,在技術尚未成熟的條件下,AI 在輸出結果上難免要犯傻,畢竟就像這位網友所說的……
最後,祝廣大程序員們都能寫出沒有bug 的代碼