授權 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 工具一旦開發出來,工程師就可把更多精力放在寫程式上。
其中,最具代表性的是 Facebook 的 SapFix。
這是一款去年 9 月發表的程式碼除錯工具,配合 Facebook 的自動化發現漏洞工具 Sapienz,可針對 bug 生成修補程式。
具體的執行流程,是 SapFix 會先給每個 bug 生成多個潛在修補程式,然後從三方面評定修補程式的品質(是否有編譯錯誤、程式是否還會崩潰、修補程式是否引入新衝突),評定結束後,SapFix 會在修復版本測試,結果出來後第一時間發給人工評審員審查。
一旦獲得人工回饋,SapFix 就會執行批准的修補程式,並清除其他未被批准的修補程式。
值得一提的是,面對較複雜的問題時,SapFix 會從過往的修復樣本集搜尋生成修補程式的參考。即使沒能找到合適的修復樣本,它也會嘗試基於突變來修復──簡單來說,就是對導致崩潰的敘述抽象語法樹(AST)執行小型程式碼修復,調整修補程式,直到找到可行的解決方案。
此工具被 Facebook 視為 AI 技術的里程碑,下一步計畫讓 SapFix 達成自動制止程式碼崩潰機制,以及讓軟體反應更敏捷。
Yelp「刪程式庫」事件是典型的 AI 過早落實商用的例子,技術尚未成熟的條件下,AI 輸出結果難免會耍笨。
(本文由 雷鋒網 授權轉載;首圖來源:shutterstock)