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