谷歌研究主管、知名人工智能專家Peter Norvig在MIT的EmTech Digital,探讨機器學習的挑戰。

傳統軟體程式設計使用的是基于布爾數學體系的邏輯,按照這種邏輯,可以測試确認軟體是否符合其設計初衷,在過去的幾十年裡,人們正是利用這一邏輯建構了各種軟體調試工具和方法。
相比之下,機器學習更像是一個黑盒子程式設計方法,計算機程式自己有資料,自己可以生成機率邏輯,和基于傳統布爾數學邏輯的“true&false”測試調試方法來驗證系統完成不同。
圖檔來源:NetworkWorld
對比傳統程式設計,Norvig歸納總結了機器學習驗證的情形:
“現在的問題是,能夠擴充應用到整個人工智能行業的機器學習驗證方法,仍未成型。我們已經在這方面做了很多努力,投入了時間;對于如何使之奏效,我們也有了一點眉目,但是,相比于普通軟體開發和驗證數十年的經驗,機器學習調試明顯還沒有達到預期。”
如果調試機器學習如此困難,為什麼還要使用它呢?盡管機器學習驗證目前存在局限性,但是它在開發速度上依然具有一定優勢。針對某些特定問題,比如語音識别或圖像分類,複雜系統解決方案可以比傳統程式設計方法快一倍、兩倍、甚至三倍。舉個例子,晶片制造商Nvidia公司工程師對一款自動駕駛汽車原型編寫了100小時的訓練資料程式。應用機器學習生産力對程式員來說極具吸引力,他們需要使用它,要求全新的驗證方法。
事實上,調試機器學習的出發點就是要區分相關問題固有的風險和危害,以及來自于問題發解決方案的技術的風險和危害。隻有後者,也就是技術解決方案内部固有的風險和危害能夠被控制。
非定常性條件影響了傳統程式設計和機器學習。所謂非定常性,就是指随着時間的過去,條件發生了變化,一開始,在相同條件下設計的系統非常有效,但慢慢地開始逐漸表現不佳。在傳統程式設計中,當要釋出一個開發新程式時,一般會先使用可驗證的調試流程進行測試和驗證,之後才會正式釋出。
但在機器學習中,似乎遺失了這種驗證,因為機器學習并不适合傳統程式設計技術那套步進式的流程:開發、測試、最後釋出。在機器學習裡,會不斷生成資料,然後同時再被機器學習系統不斷擷取,機器學習系統會進行再程式設計,繼而導緻那種步進式方法不能實行。
針對機器學習驗證問題,Norvig解釋了自己的想法。傳統測試套件認定是基于“true”、“false”、以及“equal”這些條件判斷,而機器學習的測試認定則應該是根據評估測驗,比如今天的試驗結果90%不錯,并且和昨天測試運作的結果一緻。
除了驗證的問題很麻煩以外,驗證機器學習系統産品所依據的事實很有可能是未知的,或者是主觀性很強的。設想一下,例如我們設計一個機器學習系統來判斷下圖的這條裙子是金色搭配白色的,還是藍色和黑色的,這問題連人類之間都沒法達成一緻。
圖檔來源:CBS News
Norvig解釋說:“對于一些問題,我們根本不知道正确答案是什麼。是以,你又怎麼可能訓練一個機器學習算法判斷某些根本沒有答案的問題呢?”在Norvig看來,讓機器學習尋求正确答案,隻能依靠一種無偏見的方法,比如引入“陪審團”機制。人類生成資料去訓練機器學習,然而人類本身就是具有偏見的,是以即便是在這種模式下,機器學習依然會存在一定偏見。要想比對機器學習系統是否符合它們的設計初衷,評估的方法必須要能夠識别并擯除偏見。
傳統軟體是子產品化的,每個子產品的輸入和輸出都是獨立的,是以很容易識别出哪個子產品是bug。然而在機器學習中,盡管系統是利用資料進行開發的,但在系統内部,任何bug都能會被複制,最終導緻“牽一發而動全身”。雖然我們可以使用一些技巧去了解機器學習内部有錯誤,也有再訓練機器學習系統的方法,但目前還沒有辦法能解決其中任何一個獨立問題。
在Norvig看來,解決機器學習debug問題需要一個更好的工具集,而整個工具集需要向前發展、更新。
原文釋出時間:2016-05-27 11:23
本文來自雲栖社群合作夥伴鎂客網,了解相關資訊可以關注鎂客網。