陳仲為
(武漢科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院,武漢430070)
近幾年隨著科技的迅猛發(fā)展,人工智能行業(yè)發(fā)展火熱,被越來越多的人所關(guān)注。因而科幻電影如雨后春筍般涌現(xiàn)出來,讓觀眾大飽眼?!,F(xiàn)實生活中的人機大戰(zhàn)也為各大媒體爭相報道:2016 年3 月,AlphaGo以4:1 擊敗韓國圍棋天王李世石;2017 年5 月,加強版的AlphaGo 又以3:0 的完美戰(zhàn)績擊敗人類最強棋手柯潔。AlphaGo 能夠在如此短的時間內(nèi)變得這么強大的秘密在于深度學(xué)習(xí)算法。
深度學(xué)習(xí)隸屬于機器學(xué)習(xí),是機器學(xué)習(xí)領(lǐng)域里一個相當(dāng)重要的分支,了解機器學(xué)習(xí)的原理有助于我們更好的去了解深度學(xué)習(xí)。機器學(xué)習(xí)是人工智能領(lǐng)域當(dāng)中的一個分支,當(dāng)人們談及人工智能的時候,往往都繞不開機器學(xué)習(xí)。顯然,機器學(xué)習(xí)研究的是如何能夠讓機器像人一樣獨立自主地學(xué)習(xí)某種事物。簡單來說,就是通過算法,讓機器從大量的樣本數(shù)據(jù)中發(fā)現(xiàn)某種規(guī)律,然后來識別新的樣本或者對未來作出一定的預(yù)測。
第一階段,機器學(xué)習(xí)將研究的側(cè)重點放在非符號的神經(jīng)元模型上。主要的目標(biāo)是研制出一個通用的學(xué)習(xí)系統(tǒng),即神經(jīng)網(wǎng)絡(luò)或自組織系統(tǒng)。
第二階段為20 世紀(jì)70 年代中期至80 年代后期,機器學(xué)習(xí)主要側(cè)重符號學(xué)習(xí)的研究,即以離散符號的推理為基礎(chǔ),運用已有知識,來對未知作出預(yù)測。
第三階段從20 世紀(jì)80 年代后期開始一直到今天[1]。一方面,關(guān)于傳統(tǒng)符號學(xué)習(xí)的各種方法已經(jīng)全面發(fā)展并且趨近完善,應(yīng)用的領(lǐng)域不斷擴大,達到一個鼎盛時期;同時由于發(fā)現(xiàn)用隱單元來計算和學(xué)習(xí)的非線性函數(shù)方法,從而克服了早期神經(jīng)元模型只能解決線性問題的局限性;計算機硬件的飛速發(fā)展和處理器運行速度的提高以及并行計算機的普及使得演化計算的研究突飛猛進,在機器學(xué)習(xí)的各個領(lǐng)域都取得了不錯的成果。連接學(xué)習(xí)和符號學(xué)習(xí)這兩個學(xué)派爭奇斗艷,顯示出各自的魅力。另一方面,越來越多的人開始重視對機器學(xué)習(xí)基礎(chǔ)理論的研究,從1988 年起,美、德、日等國連續(xù)召開計算學(xué)習(xí)理論的學(xué)術(shù)會議,相關(guān)的學(xué)術(shù)論文也經(jīng)常出現(xiàn)在關(guān)于機器學(xué)習(xí)的雜志上。因此,在這一階段,機器學(xué)習(xí)的研究進入了一個全面化、系統(tǒng)化的時期。
大體上來說,機器學(xué)習(xí)算法可以劃分為有監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和增強學(xué)習(xí)三種形式[2]。
圖1 機器學(xué)習(xí)發(fā)展的時間軸
在有監(jiān)督學(xué)習(xí)中,訓(xùn)練機器的目標(biāo)是讓機器建立起從輸入到輸出一一對應(yīng)的模型,訓(xùn)練時,機器的每一次輸出都會與事先準(zhǔn)備好的正確輸出進行比對并做出相應(yīng)調(diào)整。例如,我們要訓(xùn)練機器來識別各種水果的圖像,則需要使用大量已經(jīng)人工標(biāo)注好的各種水果圖像來對機器進行訓(xùn)練,得到一個模型,然后機器就可以用這個模型來對未知類型的水果進行識別判斷。
無監(jiān)督學(xué)習(xí)則沒有指導(dǎo)者進行指導(dǎo),因此只有輸入數(shù)據(jù)過程而沒有輸出比對過程。訓(xùn)練機器的目標(biāo)是對輸入數(shù)據(jù)進行分析從而得到數(shù)據(jù)的某些知識,其典型代表是聚類。例如,我們要對1000 封電子郵件進行分類,我們并沒有事先定義好分類,也沒有已經(jīng)訓(xùn)練好的模型。機器通過聚類算法自己完成對1000 封電子郵件的分類,保證同一類型郵件是同一個主題的,不同類型的郵件是不一樣的。
增強學(xué)習(xí)是一類比較特殊的機器學(xué)習(xí)算法。在一些應(yīng)用中,機器需要輸出的是一個個動作所組成的序列而不是單個結(jié)果。排除在序列之外的某個動作并沒有什么意義,只有這些動作所組成的序列能夠完成給定的目標(biāo)才是有意義的,即策略更加重要。所以機器在執(zhí)行的過程中也就不存在某個最好的動作。如果該動作最終能夠完成目標(biāo),即是某個策略的組成部分,那么該動作就是好的。在這種情況下,機器就應(yīng)當(dāng)能夠評估策略的好壞程度,并且從以前所學(xué)習(xí)到的好的動作序列中獲得提示,從而選擇成功率更高的策略來執(zhí)行。
在人機大戰(zhàn)中大放異彩的AlphaGo 背后的算法便是深度學(xué)習(xí)算法。深度學(xué)習(xí)是機器學(xué)習(xí)領(lǐng)域的一個重要分支,因為在訓(xùn)練機器時不需要人為進行指導(dǎo),所以屬于無監(jiān)督學(xué)習(xí)。受到大腦神經(jīng)元結(jié)構(gòu)的啟發(fā),深度學(xué)習(xí)算法通過構(gòu)造一個人工神經(jīng)網(wǎng)絡(luò)來模仿人腦的神經(jīng)結(jié)構(gòu),并希望能夠像人腦一樣學(xué)習(xí)和處理相關(guān)事物。具體來說,該核心算法由兩種深度神經(jīng)網(wǎng)絡(luò)構(gòu)成:“決策網(wǎng)絡(luò)”(Policy Network)和“價值網(wǎng)絡(luò)”(Value Network)。
“價值網(wǎng)絡(luò)”的作用是根據(jù)棋盤上白子和黑子的位置來作出評價,從而減少搜索的深度:AI 機器每走一步便會根據(jù)場上的局勢來推算出自己獲勝的概率,而不需要搜索所有結(jié)束棋局的路徑。當(dāng)某些方法使得局面明顯不利于自己時,機器便會直接放棄這些路線,從而減少算法搜索的深度。
“決策網(wǎng)絡(luò)”的作用是預(yù)測下一步,來減少搜索的寬度:根據(jù)“價值網(wǎng)絡(luò)”的反饋信息,AI 機器不必給每一步相同的重視程度,主動放棄一些明顯的“壞棋步”而將注意力更多的放在那些有前景的“好棋步”上,將搜索范圍縮小至自己最有可能獲勝的那些棋步。
AlphaGo 利用這兩個工具來分析棋局,判斷每種下子策略的獲勝概率,從而選擇獲勝概率更高的棋步。除此之外,AlphaGo 還利用增強學(xué)習(xí)來讓AI 機器和自己對弈。通過和自己進行大量的對弈訓(xùn)練,AlphaGo 能夠?qū)W會自己發(fā)現(xiàn)新的策略,從而提高“決策網(wǎng)絡(luò)”的效率。
目前基于深度學(xué)習(xí)算法的網(wǎng)絡(luò)框架很多,但大抵都是基于以下四個基本網(wǎng)絡(luò)框架:無監(jiān)督預(yù)訓(xùn)練網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò)。
無監(jiān)督預(yù)訓(xùn)練網(wǎng)絡(luò)[3]:使用無監(jiān)督學(xué)習(xí)算法來訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),即先訓(xùn)練網(wǎng)絡(luò)的第一個隱藏層而封鎖其他的隱藏層,之后再訓(xùn)練第二個隱藏層……以此類推直到最后一層,然后將訓(xùn)練時獲得的網(wǎng)絡(luò)參數(shù)值作為整個神經(jīng)網(wǎng)絡(luò)的初始參數(shù)值參與到之后的訓(xùn)練當(dāng)中。
圖2 無監(jiān)督預(yù)訓(xùn)練網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò):該深度神經(jīng)網(wǎng)絡(luò)主要是用來識別二維圖像[4]。第一個隱藏層通過卷積運算,將原本的像素點壓縮后存儲;第二個隱藏層對前面的數(shù)據(jù)進行子抽樣,提取數(shù)據(jù)特征,然后根據(jù)共享權(quán)值來進行局部平均……兩個相鄰的隱藏層之間不斷重復(fù)進行著卷積和抽樣的操作,一步步地將處理后的結(jié)果往更高一層傳遞,直至輸出層將結(jié)果進行輸出。
圖3 卷積神經(jīng)網(wǎng)絡(luò)中卷積和子采樣過程
循環(huán)神經(jīng)網(wǎng)絡(luò)[5]:主要是為了識別序列(如語音或者文本)而在時間上進行拓展的多層感知機。在卷積神經(jīng)網(wǎng)絡(luò)之中,每個元素之間是相互獨立互不干擾的,輸入和輸出自然也是獨立的。而在該網(wǎng)絡(luò)中,每一個單元結(jié)構(gòu)都可以重復(fù)使用,能夠像人一樣擁有短暫的記憶功能,所以它的輸出依賴于當(dāng)前的輸入和之前的記憶。
遞歸神經(jīng)網(wǎng)絡(luò)[6]:與分層網(wǎng)絡(luò)的原理很相似。該網(wǎng)絡(luò)能夠把長短不一的輸入序列劃分為一個個長度相等的數(shù)據(jù)塊,然后再將這些數(shù)據(jù)塊按順序輸入到樹狀網(wǎng)絡(luò)中進行分層處理,從而使得解決變長輸入問題成為可能。在該網(wǎng)絡(luò)中,每一個語義樹的結(jié)構(gòu)信息被預(yù)先編碼為一個向量,與向量空間里的某一個點一一對應(yīng)。如果兩個語義樹意思相近,那么對應(yīng)的向量之間的距離也比較近;反之,如果兩個語義樹意思完全不同,那么對應(yīng)的向量之間的距離也會很遠。例如圖5中的Monday 和Tuesday 距離較近,而與代表國家的France 距離很遠。
圖4 循環(huán)神經(jīng)網(wǎng)絡(luò)的大致結(jié)構(gòu)
圖5 遞歸神經(jīng)網(wǎng)絡(luò)中語義向量與向量空間
深度學(xué)習(xí)算法被廣泛運用于各行各業(yè)之中,在這其中以語音識別、圖像識別和自然語言處理三個方面為主,取得了不少矚目的成果。
語音識別[8]:將聲信號輸入到電腦中,通過數(shù)字采樣轉(zhuǎn)化為易處理的電信號,然后將電信號輸入到深度神經(jīng)網(wǎng)絡(luò)中進一步處理。由于每個人發(fā)音的長短不一樣,因此電信號所對應(yīng)的英文字母可能會有所重復(fù),這時候就需要刪除多余的字母。這樣處理完畢之后便可以得到一個單詞,因為存在連讀以及某些字母讀音相同現(xiàn)象,單詞會出現(xiàn)錯誤,這時再與基于書面文本(書籍、新聞等)的大數(shù)據(jù)庫進行比對,找出最有可能的結(jié)果作為最終結(jié)果進行輸出。
圖像識別[9]:通過多層次的卷積神經(jīng)網(wǎng)絡(luò)來處理和識別輸入的圖片信息。最低層從原始像素開始卷積,描繪出局部的邊緣和紋理特征,如直線或者曲線等;中間層將上一層的信息進行整合加工,抽象到更高層次,如某種形狀;最高層描繪的是整個圖片的整體特征。如此反復(fù),機器最終可以學(xué)會如何識別該物體。而在整個過程中,機器完全是自主學(xué)習(xí),圖片中的某些特征是機器自己去尋找發(fā)現(xiàn)的,無須人為干預(yù)。
自然語言處理[10]:能夠使用自然語言和計算機進行交流是人們長期追求的目標(biāo),這就要求計算機能夠識別和理解輸入的自然語言信息,也能夠使用自然語言來給予相應(yīng)的反饋。機器通過算法使用一個低維稠密的向量來表示一個詞語(詞嵌入),讓這些詞向量代替原來的詞語的特征,便于識別和處理。然后通過另外的算法,將這些詞向量進行語義組合,來獲得短語和句子的概念,從而使機器能夠理解自然語言。
總的來說,深度學(xué)習(xí)的出現(xiàn)將機器學(xué)習(xí)的地位提升到一個全新的高度,受到各界人士的廣泛關(guān)注,也帶動了其他領(lǐng)域的技術(shù)革命。深度學(xué)習(xí)的快速發(fā)展既得益于計算機計算能力的飛速提升,也離不開過去理論和算法的貢獻。雖然存在一些局限性,如需要大量數(shù)據(jù)訓(xùn)練、良好的底層硬件支持、訓(xùn)練時間長等,但是它對非線性問題的處理能力和強大的自我學(xué)習(xí)能力是其他算法所不能比擬的。筆者相信,隨著算法理論的進一步發(fā)展和計算成本的大幅度降低,深度學(xué)習(xí)必將在更多的領(lǐng)域里大展拳腳。深度學(xué)習(xí),未來可期!