討論技術(shù)之前,我們先來搞清楚,到底什么是人工智能(ArtificialIntelligence)?簡言之,就是用「機器」對人的意識、思維的信息過程的模擬。
當初,「機器」并不是專指計算機,也可能是某種機械裝置,因為計算機還沒有發(fā)明出來,AI就出現(xiàn)了。另外,即使計算機也分為我們熟悉的圖靈計算機和現(xiàn)在迅猛發(fā)展著的量子計算機或者DNA計算機等。
但是AI真正繁榮發(fā)展,還是從圖靈機出現(xiàn)之后才開始的。
有的讀者可能不是計算機專業(yè)的,所以簡單介紹一下圖靈機。同時要涉及一些數(shù)學和算法的知識,稍有些晦澀,大家要有一些耐心,否則沒辦法理解哪些更復雜的AI知識和術(shù)語。
圖靈機和圖靈測試
早在1900年,大數(shù)學家希爾伯特(DavidHilbert)提出了著名的第十問題:
GivenaDiophantineequationwithanynumberofunknownquantitiesandwithrationalintegralnumericalcoefficients:Todeviseaprocessaccordingtowhichitcanbedeterminedinafinitenumberofoperationswhethertheequationissolvableinrationalintegers.(fromWikipedia)
能否能通過有限步驟(算法)來判定不定方程存在有理整數(shù)解?
圖靈(AlanTuring,計算機科學與人工智能之父),被這個問題深深的吸引了,雖然后來的數(shù)學家證明Hillbert的第10問題中提到的那個算法不存在,但是,得到了一個最好的副產(chǎn)品,那就是1936年圖靈提出了如下所示的圖靈機:
TuringMachinefromWikipedia
ATuringmachineisanabstractmachinethatmanipulatessymbolsonastripoftapeaccordingtoatableofrules.(fromWikipedia)
圖靈機是指一個抽象的機器,它有一條無限長的紙帶,紙帶分成了一個一個的小方格。有一個機器頭在紙帶上移來移去。機器頭有一些固定的程序。在每個時刻,機器頭都要從當前紙帶上讀入一個方格信息,然后結(jié)合自己的內(nèi)部狀態(tài)查找程序表,根據(jù)程序輸出信息到紙帶方格上,并轉(zhuǎn)換自己的內(nèi)部狀態(tài),www.whsntf.cn,然后進行移動。
馮?諾依曼(JohnvonNeumann),庫卡機器人,和圖靈是同一時期的大數(shù)學家,1946年領(lǐng)導研制出了眾所周知的第一臺現(xiàn)代電子計算機ENIAC,其工作原理就是和圖靈機是一致的。
1950年,圖靈提出了著名的「圖靈測試」,用來驗證一個機器是否達到人類的智能,具體方法就是把一個機器A和一個人B分別關(guān)到不同房間里,測試者C通過裝置(如鍵盤)和兩者對話,如果30%以上的測試者不能區(qū)分機器和人,則認為機器A通過圖靈測試。
TuringTestfromWikipedia
大家可以看出來,從希爾伯特、圖靈到馮?諾依曼,整個人工智能AI的發(fā)展,都是大數(shù)學家們在推動前進的。所以,如果想真正理解AI的工作原理和發(fā)展趨勢,必須了解相關(guān)的數(shù)學發(fā)展史和挑戰(zhàn)。
幾個關(guān)鍵理論和技術(shù)
1、圖靈停機問題(Haltingproblem)
圖靈機本質(zhì)上就是完成了從輸入到輸出的變換(計算),假設,程序P可以把所有的變換進行「歸納」,產(chǎn)生這些變換規(guī)則的「共性」,那么,圖靈機應該能通過計算獲得等同于人類的智能。但是,這個假設在圖靈機上是不可計算的,這就是著名的圖靈機停機問題:
Haltingproblemistheproblemofdetermining,fromadeionofanarbitrarycomputerprogramandaninput,whethertheprogramwillfinishrunningorcontinuetorunforever.
停機問題就是判斷任意一個程序是否會在有限的時間之內(nèi)結(jié)束運行的問題。
圖靈本人已經(jīng)在數(shù)學上證明了這個判斷算法根本不存在。也就是說,工業(yè)機器人維修,總是有些人的智能對于圖靈計算機來說,是不可解決的。通常也說,這個問題是和圖靈停機問題計算等價的。
所以,為了讓機器獲得強人工智能(GeneralAI),人們開始研究「超越圖靈計算」的量子計算或者DNA計算等。
不過在弱人工智能(NarrowAI)領(lǐng)域,「深度學習」這個圖靈可計算的方法還是能解決很多實際問題的。
2、深度學習(DeepLearning)
目前大家經(jīng)常聽到的谷歌大腦、百度大腦,核心技術(shù)就是用了深度學習,主要指應用了多隱含層的神經(jīng)網(wǎng)絡。在解釋深度學習之前,我們來了解一下什么是機器學習,以及其和深度學習的關(guān)系。
如上圖所示,機器學習ML是人工智能AI的一個分支,深度學習DL又是機器學習ML的一個分支。
機器學習ML就是通過算法,使得機器從大量歷史數(shù)據(jù)中學習規(guī)律,提取特征值,例如語音識別里的MFCC特征、機器視覺里的SIFT特征等,再把這些特征放到各種機器學習模型中,從而對新的樣本做智能識別或?qū)ξ磥碜鲱A測。
問題來了,因為在經(jīng)典機器學習里,這些特征提取算法都是人們根據(jù)具體場景數(shù)據(jù)的特征人工設計出來的,所以這種方法主要靠人工經(jīng)驗來抽取樣本的特征。
然而,深度學習DL的關(guān)鍵就是要從海量訓練數(shù)據(jù)中自動提取特征,這也是GeoffreyHinton和YannLeCun這些大牛們的主要貢獻。
深度學習DL在教會計算機聽(語音識別)、看(圖像識別)、說(自然語言處理)上,都取得了很大的成績,尤其是前兩者分別比傳統(tǒng)的MFCC和SIFT等識別率提高了20%到30%以上,這個進步是革命性的。
簡單白話一下深度學習的工作原理,一個神經(jīng)元就是一個分類器,神經(jīng)元模型就是不停的分類,最終不同特征就抱團了,神經(jīng)網(wǎng)絡神奇的地方就是每一個組件非常簡單,但是一層一層級連(多隱含層)后,高質(zhì)量的特征值就奇妙的產(chǎn)生了。
當然,神經(jīng)元的參數(shù)調(diào)整依然高度依賴人的經(jīng)驗,這也是為什么說深度學習DL依舊還是一個充滿Tricks(YannLeCun語)的DirtyWork(AndrewNg語)。
3、人工人工智能
目前實踐中,接地氣的人工智能方法,除了前面說的深度學習DL,還有馬上討論的人工人工智能。
2007年,一位谷歌的實習生路易斯?馮?安(LuisvonAhn)開發(fā)了一款有趣的程序ReCapture,卻無意間開創(chuàng)了一個新的人工智能研究方向:「人類計算」。
ReCapture的初衷挺簡單的,想利用人類高超的模式識別能力,自動幫谷歌公司完成大量掃描圖書的文字識別工作。于是,LuisvonAhn想到,每天都有大量的用戶在輸入驗證碼來向機器證明自己是人而不是機器,而輸入驗證碼事實上就是在完成文本識別。
于是,一方面是有大量的掃描的圖書中難以識別的文字需要人來識別;另一方面是由計算機生成一些扭曲的圖片讓大量的用戶做識別以表明自己的身份。那么,為什么不把兩個方面結(jié)合在一起呢?LuisvonAhn聰明地讓用戶在輸入識別碼的時候悄悄幫助谷歌完成了文字識別工作!
大家再想一下前文中我們提到的圖靈測試,在這個「人類計算」ReCapture的例子中,用人來幫助識別文字,是不是就是A和B合二為一,他們一起給C提供AI服務了。
世界就是這么神奇,人們探索人工智能AI一個多世紀了,雖然圖靈機停機問題證明了目前現(xiàn)代圖靈計算機的局限性,但是在「深度學習DL」和「人工人工智能」兩個方向上依然砥礪前行。