谷歌研究(GoogleResearch)主管、知名人工智能專家PeterNorvig最近在出席MIT的EmTechDigital大會時,發(fā)表了一些與主流人工智能和機器學習不同的觀點。他將機器學習和傳統(tǒng)軟件編程進行了比較,強調我們所設計的機器學習,在系統(tǒng)調試和驗證上存在全新挑戰(zhàn)。
傳統(tǒng)軟件編程使用的是基于布爾數學體系的邏輯,按照這種邏輯,可以測試確認軟件是否符合其設計初衷,在過去的幾十年里,人們正是利用這一邏輯構建了各種軟件調試工具和方法。
相比之下,機器學習更像是一個黑盒子編程方法,計算機程序自己有數據,自己可以生成概率邏輯,和基于傳統(tǒng)布爾數學邏輯的“true&false”測試調試方法來驗證系統(tǒng)完成不同。
圖片來源:NetworkWorld
對比傳統(tǒng)編程,Norvig歸納總結了機器學習驗證的情形:
“現(xiàn)在的問題是,能夠擴展應用到整個人工智能行業(yè)的機器學習驗證方法,仍未成型。我們已經在這方面做了很多努力,投入了時間;對于如何使之奏效,我們也有了一點眉目,但是,相比于普通軟件開發(fā)和驗證數十年的經驗,機器學習調試明顯還沒有達到預期。”
如果調試機器學習如此困難,為什么還要使用它呢?盡管機器學習驗證目前存在局限性,但是它在開發(fā)速度上依然具有一定優(yōu)勢。針對某些特定問題,比如語音識別或圖像分類,復雜系統(tǒng)解決方案可以比傳統(tǒng)編程方法快一倍、兩倍、甚至三倍。舉個例子,芯片制造商Nvidia公司工程師對一款自動駕駛汽車原型編寫了100小時的訓練數據程序。應用機器學習生產力對程序員來說極具吸引力,他們需要使用它,要求全新的驗證方法。
事實上,調試機器學習的出發(fā)點就是要區(qū)分相關問題固有的風險和危害,以及來自于問題發(fā)解決方案的技術的風險和危害。只有后者,也就是技術解決方案內部固有的風險和危害能夠被控制。
非定常性條件影響了傳統(tǒng)編程和機器學習。所謂非定常性,就是指隨著時間的過去,條件發(fā)生了變化,一開始,在相同條件下設計的系統(tǒng)非常有效,但慢慢地開始逐漸表現(xiàn)不佳。在傳統(tǒng)編程中,當要發(fā)布一個開發(fā)新程序時,一般會先使用可驗證的調試流程進行測試和驗證,之后才會正式發(fā)布。
但在機器學習中,似乎遺失了這種驗證,因為機器學習并不適合傳統(tǒng)編程技術那套步進式的流程:開發(fā)、測試、最后發(fā)布。在機器學習里,會不斷生成數據,然后同時再被機器學習系統(tǒng)不斷獲取,機器學習系統(tǒng)會進行再編程,繼而導致那種步進式方法不能實行。
針對機器學習驗證問題,Norvig解釋了自己的想法。傳統(tǒng)測試套件認定是基于“true”、“false”、以及“equal”這些條件判斷,而機器學習的測試認定則應該是根據評估測驗,比如今天的試驗結果90%不錯,并且和昨天測試運行的結果一致。
除了驗證的問題很麻煩以外,驗證機器學習系統(tǒng)產品所依據的事實很有可能是未知的,或者是主觀性很強的。設想一下,例如我們設計一個機器學習系統(tǒng)來判斷下圖的這條裙子是金色搭配白色的,還是藍色和黑色的,這問題連人類之間都沒法達成一致。
Norvig解釋說:“對于一些問題,我們根本不知道正確答案是什么。因此,你又怎么可能訓練一個機器學習算法判斷某些根本沒有答案的問題呢?”在Norvig看來,讓機器學習尋求正確答案,只能依靠一種無偏見的方法,比如引入“陪審團”機制。人類生成數據去訓練機器學習,然而人類本身就是具有偏見的,因此即便是在這種模式下,機器學習依然會存在一定偏見。要想匹配機器學習系統(tǒng)是否符合它們的設計初衷,評估的方法必須要能夠識別并擯除偏見。
傳統(tǒng)軟件是模塊化的,每個模塊的輸入和輸出都是獨立的,因此很容易識別出哪個模塊是bug。然而在機器學習中,盡管系統(tǒng)是利用數據進行開發(fā)的,但在系統(tǒng)內部,任何bug都能會被復制,最終導致“牽一發(fā)而動全身”。雖然我們可以使用一些技巧去理解機器學習內部有錯誤,也有再訓練機器學習系統(tǒng)的方法,但目前還沒有辦法能解決其中任何一個獨立問題。來源: AI科技評論