- 智能與數(shù)據(jù)重構世界
- (美)薄智泉 徐亭主編
- 11251字
- 2020-09-25 12:47:16
2.3 人工智能關鍵技術
人類要實現(xiàn)機器智能,主要是讓機器模擬人類的感知、思維、學習和行為:首先,機器模擬人類的感知行為,如視覺、聽覺、觸覺等,相關研究領域有計算機視覺、計算機聽覺、模式識別、自然語言理解;其次,機器對已感知的外界信息或由內(nèi)部產(chǎn)生的信息進行思維性加工,相關研究領域有知識表示、組織及推理的方法、啟發(fā)式搜索及控制策略、神經(jīng)網(wǎng)絡和思維機理等;再次,機器重新學習新知識,實現(xiàn)自我完善增強,這是人工智能的核心問題,相關研究領域包括各種機器學習和分類方法;最后,機器模擬人類的行動或表達,相關研究領域包括智能控制、智能制造、智能調(diào)度和智能機器人。
人工智能技術關系到人工智能產(chǎn)品是否可以順利應用到我們的生活場景中,這些產(chǎn)品普遍包含知識表示、推理和問題求解、機器學習、數(shù)據(jù)挖掘、自然語言處理、人機交互、計算機視覺、生物特征識別、AR/VR等關鍵技術。
2.3.1 知識表示
知識具有相對正確性、不確定性、可表示性及可利用性的特點。根據(jù)不同的劃分標準,知識可以分為不同的類別。例如,其按照作用范圍可分為常識性知識和領域性知識;按作用及表示可分為事實性知識、過程性知識和控制知識;按確定性可分為確定性知識和不確定性知識;按結構及表現(xiàn)形式可分為邏輯性知識和形象性知識。
知識表示就是對知識的一種描述,或者說是對知識的一組約定,是一種計算機可以接受的用于描述知識的數(shù)據(jù)結構。它是機器通往智能的基礎,可使機器像人一樣運用知識。最早的人工智能專家樂觀地認為,用符號系統(tǒng)和邏輯推理就能模擬人類智能,因而提出了謂詞邏輯、產(chǎn)生式系統(tǒng)和框架結構等基于確定符號的表示方式。后來人們意識到,除了確定性知識,還需要利用概率等方法來表示不確定性知識。模式識別的發(fā)展又使人們意識到,物體的一些屬性(如特征)很難用幾個有限狀態(tài)來表示,必須用連續(xù)值來描述和區(qū)分。因此,人工智能常用的知識表示方法包括狀態(tài)空間表示法、謂詞邏輯、產(chǎn)生式規(guī)則、語義網(wǎng)絡、框架表示法、知識圖譜、貝葉斯網(wǎng)絡和特征向量表示法。
1.狀態(tài)空間表示法
在人工智能理論中,許多問題的求解過程都采用了試探搜索的方法,從而可在某個可能的解空間找到一個可接受的解。這種基于解空間的問題表示和求解方法就是狀態(tài)空間表示法。它以狀態(tài)和操作符為基礎進行問題求解和問題表示,是討論其他形式化方法和問題求解技術的出發(fā)點。
狀態(tài)是為描述某一類事物中各不同事物之間的差異而引入的最少的變量 q0,q1,q2,...,qn的有序組合,常表示為向量的形式:Q =(q0,q1,q2,...,qn)T,其中每個變量代表物體的一個屬性。
狀態(tài)空間可以用四元組(S,B,F,G)描述,其中,S = {Q1,Q2,...,Qn } 是問題所有可能的狀態(tài)集合;B?S 是開始狀態(tài)集合;F = { f1,f2,..., fm}是操作集合,其中的fi:Qi→Qj是狀態(tài)變換操作;G?S 是目標狀態(tài)集合。狀態(tài)空間通常用狀態(tài)樹(見圖2-1)、有限狀態(tài)自動機(見圖2-2)、隱馬爾可夫模型(見圖2-3)等來表示。

圖2-1 狀態(tài)樹。節(jié)點Si(i=0,…,10)表示狀態(tài),狀態(tài)之間的連接采用有向弧,弧上標以操作數(shù)Oi來表示狀態(tài)之間的轉換關系或條件

圖2-2 三狀態(tài)有限狀態(tài)自動機。其中狀態(tài)1為起始狀態(tài),3為終止狀態(tài),2為中間狀態(tài),a和b 為輸入。在狀態(tài)1時,檢測到輸入a ,自動機進入狀態(tài)2,再檢測到另一個輸入b,自動機進入識別完成狀態(tài)

圖2-3 一個具有三個狀態(tài)的隱馬爾可夫模型。其中xi表示隱含狀態(tài),yi表示可觀察的狀態(tài),aij 表示狀態(tài)轉移概率Pr(xit|xjt -1),bibi表示觀測狀態(tài)發(fā)生的概率Pr(yi|xi)
2.謂詞邏輯
謂詞邏輯是一種用謂詞來表示個體特性或個體之間關系的形式系統(tǒng)。通過引入刻畫所有的/任意一個(?)、存在一部分(?)等量詞,它能夠有力地用邏輯符號來表示命題與命題之間的邏輯關系并進行一些復雜的推理。例如,用x表示個體變量,謂詞G(x)表示x 是大學生,謂詞H(x)表示x 想繼續(xù)攻讀研究生,則命題“一些大學生想繼續(xù)攻讀研究生”表示為
(?x)[G(x)∧H(x)]
3.產(chǎn)生式規(guī)則
產(chǎn)生式規(guī)則源于西蒙與紐厄爾的認知模型。這一模型的核心思想:人腦是物理信號系統(tǒng),人之所以具有智能,能完成各種運算和解決問題,都是由于其經(jīng)過學習,存儲了一系列“如果……那么……”形式的編碼規(guī)則。這種規(guī)則便稱為產(chǎn)生式。產(chǎn)生式的一般形式為P1→P2。其中,P1和P2是謂詞公式或命題。P1是前提,P2是結論或動作。產(chǎn)生式規(guī)則的語義:如果前提P1滿足,則可得結論或執(zhí)行相應的動作P2。例如:
爐溫超過上限→關閉風門
4.語義網(wǎng)絡
語義網(wǎng)絡是 Quilian 在1966年提出的一種模型,是一種基于廣義圖的知識表示方法。圖中的各節(jié)點代表某些概念、實體、時間和狀態(tài),節(jié)點之間的弧或超弧表示節(jié)點間的作用關系,弧上的說明可根據(jù)表示的知識進行定義,它表達了謂詞邏輯中的謂詞。例如,“小李是華為的工程師,他于2017年加入華為,參加5G網(wǎng)絡開發(fā)”這句話用語義網(wǎng)絡表示,如圖2-4所示。

圖2-4 語義網(wǎng)絡示意
因其具有很強的邏輯推理能力,語義網(wǎng)絡已經(jīng)成為人工智能中的一種重要的知識表示方法。語義網(wǎng)絡可表示多元關系,擴展后可表示更復雜的問題。
語義網(wǎng)絡的主要優(yōu)點包括:①實體的結構、屬性和關系可顯式表示,便于以聯(lián)想的方式對系統(tǒng)進行解釋;②問題表達更加直觀和生動,適合知識工程師和領域專家進行溝通,符合人類的思維習慣;③與概念相關的屬性和聯(lián)系組織在一個相應的結構中,易于實現(xiàn)概念的學習和訪問。同時,語義網(wǎng)絡也存在一些缺點,如推理效率低、知識存取復雜等。
5.框架表示法
1974年,M.Minsky提出了框架理論:人類對自然事物的知識以很好的組織形式保留在人類的記憶中,并且人類試圖用以往的經(jīng)驗來分析解釋當前所遇到的情況。然而,我們無法把過去的經(jīng)驗一一都存在腦子里,只能以一個通用的數(shù)據(jù)結構的形式存儲以往的經(jīng)驗,這樣的數(shù)據(jù)結構稱為框架。新的資料可以用從過去的經(jīng)驗中得到的概念來分析和解釋。
框架通常采用“節(jié)點-槽-值”的表示結構,也就是說,框架由描述事物的各方面的若干槽組成,每個槽有若干側面,每個側面有若干值。框架中的附加過程用系統(tǒng)中已有的信息解釋或計算新的信息。一個框架的一般結構如下:


用框架名作為槽值,建立框架間的橫向聯(lián)系;用繼承槽建立框架間的縱向聯(lián)系,像這樣具有橫向與縱向聯(lián)系的一組框架稱為框架網(wǎng)絡(見圖2-5)。

圖2-5 框架網(wǎng)絡示意
6.知識圖譜
Google為了提高搜索引擎返回的答案質(zhì)量和用戶查詢的效率,于2012年5月16日發(fā)布了知識圖譜(Knowledge Graph)。Google知識圖譜的宣傳語是“things, not strings”,即事物不是無意義的字符串,而是字符串背后隱含的對象或事物[4]。以北京為例,我們想知道北京的相關信息(在很多情況下,用戶的搜索意圖可能是模糊的,這里我們輸入的查詢?yōu)椤氨本保谥暗乃阉饕嬷校覀兊玫降姆祷亟Y果只是包含這個字符串的相關網(wǎng)頁,我們不得不進入某些網(wǎng)頁查找我們感興趣的信息;現(xiàn)在有了知識圖譜的支持,除了相關網(wǎng)頁,搜索引擎還會返回一個“知識卡片”,其包含了查詢對象的基本信息和相關的其他對象(如北京旅游景點、北京高校等),如圖2-6所示。
如果我們想知道這些信息,只需要點擊相關鏈接即可,不用再做多余的操作,這樣在最短的時間內(nèi),我們就獲取了最簡潔且最準確的信息。總之,有知識圖譜作為輔助,搜索引擎能夠洞察用戶查詢背后的語義信息,返回更為精準、結構化的信息,從而更能滿足用戶的查詢需求。

圖2-6 Google知識卡片示意
現(xiàn)在,知識圖譜泛指結構化的語義知識庫,并已廣泛應用于聊天機器人和精準營銷等方面。這些語義知識庫采用由節(jié)點和邊組成的圖數(shù)據(jù)結構,以符號形式描述物理世界中的概念及其相互關系,其基本組成單位是“實體-關系-實體”三元組,或者“實體-屬性-屬性值”三元組。不同實體之間通過關系相互聯(lián)結,構成網(wǎng)狀的知識結構。在知識圖譜中,每個節(jié)點表示現(xiàn)實世界中的實體,每條邊表示實體與實體之間的關系。通俗地講,知識圖譜就是把所有不同種類的信息連接在一起而得到的一個關系網(wǎng)絡,它使人能從“關系”的角度去分析問題。
知識圖譜最常用的描述語言是RDF(Resource Description Framework)。RDF的基本單元是“主-謂-賓”三元組。主、謂、賓的取值稱為資源(Resource)。資源可以是一個統(tǒng)一資源標識符(Uniform Resource Identifier,URI)、一個字符串或數(shù)字(嚴格來講都是帶類型的字符串),或者一個空節(jié)點。如圖2-7所示為羅納爾多與里約熱內(nèi)盧關系的RDF描述。其中,“www.kg:com/person/1”是一個國際化資源標識符(Internationalized Resource Identifier,IRI),用來唯一地表示“羅納爾多”這個實體;“kg:”是RDF文件中所定義的前綴;“kg:ChineseName”“kg:nationality”等是IRI,用來表示屬性。
7.貝葉斯網(wǎng)絡
前面介紹的幾種知識表示方法都用來表示確定性知識。有時候我們還需要表示具有不確定性的知識,例如,如果天上烏云密布,則很可能會下雨,但也可能不會,不能完全確定。貝葉斯網(wǎng)絡就是一種利用概率來表示不確定性知識的有向無環(huán)圖,其中,每個節(jié)點對應一個變量,邊代表變量之間的因果關系。父節(jié)點是“因”,子節(jié)點是“果”。每個沒有孩子的父節(jié)點都附有一個先驗概率分布,而每個子節(jié)點都附有一個條件概率分布表。如圖2-8所示為一個貝葉斯網(wǎng)絡示例:草地是否濕與灑水或下雨有關,從天上是否有云可以大致推斷是否會下雨,從而也可以大致推斷主人是否會給草地灑水。

圖2-7 羅納爾多與里約熱內(nèi)盧關系的RDF描述[8]

圖2-8 貝葉斯網(wǎng)絡示例
8.特征向量表示法
上面介紹的各類基于圖的知識表示方法有一些共同的缺點,如推理效率低、知識存取復雜;同時,在基于符號的表示方法中,變量只能取離散值。在很多模式識別應用中,特征的取值都是連續(xù)的。因此,模式識別系統(tǒng)多用特征向量來描述物體的特征。
以字符識別為例,首先,識別系統(tǒng)會從輸入圖像中通過文本分割方法找到字符的位置,把字符對應的圖像塊從整個圖像中分離出來。然后,可以從這些圖像塊中提取一些有意義的特征作為分類器的輸入。以圖2-9(a)中的“5”為例,在得到字符的輪廓后,輪廓圖像被分成4×4的方塊[見圖2-9(b)],從每個小方塊中,可以提取各方向(0°,45°,90°和135°)的點數(shù),以右上角的方塊為例[放大后的局部見圖2-9(c)],其各方向的點數(shù)如表2-2所示。假設每個方塊的大小為8×8像素,對點數(shù)進行歸一化(點數(shù)除以64),可以得到歸一化的特征。最后,把從圖中各方塊中提取的歸一化特征按從左到右、從上到下的順序串起來,就可以得到一個4×4×4=64維的特征向量。

圖2-9 對字符“5”的特征提取示意[9]
表2-2 從圖2-9(c)中提取的特征(各方向的點數(shù))

2.3.2 推理和問題求解
知識表示的方法不同,其推理和問題求解的方法也不同。比如,貝葉斯網(wǎng)絡、特征向量表示法主要用于分類問題,其推理過程通常用一個分類器來實現(xiàn)。而其他很多表示法的推理和問題求解都通過圖搜索來實現(xiàn),比如有限狀態(tài)自動機、隱馬爾可夫模型都可通過動態(tài)規(guī)劃法來完成輸入和輸出的匹配,而產(chǎn)生式規(guī)則會通過正向推理或反向推理的方式來求解問題。
1.正向推理
正向推理又稱數(shù)據(jù)驅動推理、前向鏈接推理。實現(xiàn)正向推理的一般策略:先向工作存儲器提供一批數(shù)據(jù)(事實),利用這些事實與規(guī)則進行匹配,一旦觸發(fā)匹配成功的規(guī)則,則把其結論作為新的事實添加到工作存儲器中,繼續(xù)上述過程,用更新過的工作存儲器的所有事實再與規(guī)則庫中的另一條規(guī)則匹配,用其結論再次修改工作存儲器的內(nèi)容,直到?jīng)]有可匹配的新規(guī)則、沒有新的事實加到工作存儲器中為止。問題求解會產(chǎn)生一棵推理樹,下面以動物分類問題的產(chǎn)生式規(guī)則描述及其求解為例介紹(見圖2-10)。

圖2-10 動物分類問題的正向推理樹[10]
假設規(guī)則如下。
r1:若某動物有奶,則它是哺乳動物。
r2:若某動物有毛發(fā),則它是哺乳動物。
r3:若某動物有羽毛,則它是鳥。
r4:若某動物會飛且生蛋,則它是鳥。
r5:若某動物是哺乳動物且有爪且有大齒且目盯前方,則它是食肉動物。
r6:若某動物是哺乳動物且吃肉,則它是食肉動物。
r7:若某動物是哺乳動物且有蹄,則它是有蹄動物。
r8:若某動物是有蹄動物且反芻食物,則它是偶蹄動物。
r9:若某動物是食肉動物且黃褐色且有黑色條紋,則它是老虎。
r10:若某動物是有蹄動物且白色且有黑色條紋,則它是斑馬。
r11:若某動物是鳥且不會飛且會游泳且黑白色,則它是企鵝。
假設初始事實如下。
f1:某動物有毛發(fā)。
f2:某動物吃肉。
f3:某動物是黃褐色。
f4:某動物有黑色條紋。
目標條件:該動物是什么?可利用正向推理算法及推理樹(見圖2-10)得到運行結果:該動物是老虎。
2.反向推理
反向推理又稱目標驅動推理、后向鏈推理。其基本原理是從表示目標的謂詞或命題出發(fā),使用一組規(guī)則證明事實謂詞或命題成立,即提出一批假設(目標),然后逐一驗證這些假設。反向推理的具體實現(xiàn)策略:先假定一個可能的目標,并試圖證明它,看此假設目標是否在工作存儲器中,若在,則假設成立;否則,看這些假設是否是證據(jù)(葉子)節(jié)點,若是,則向用戶詢問,若不是,則再假定另一個目標,即找出結論部分中包含此假設的那些規(guī)則,把它們的前提作為新的假設,并試圖證明它。這樣周而復始,直到所有目標被證明,或者所有路徑被測試[10]。與上面的動物分類問題對應的反向推理產(chǎn)生的推理樹如圖2-11所示。

圖2-11 動物分類問題的反向推理樹[10]
從上面的兩個算法可以看出,正向推理是自底向上的綜合過程,而反向推理則是自頂向下的分析過程。二者都應用了圖搜索(與或樹)算法。
2.3.3 機器學習
機器學習(Machine Learning)可使計算機模擬或實現(xiàn)人類的學習行為以獲取新的知識或技能,從而重新組織已有的知識結構,不斷改善自身的性能,它是人工智能技術的核心。機器學習是一門涉及統(tǒng)計學、計算機科學、腦科學等的交叉學科。
怎樣判斷一個機器或計算機程序是否有學習能力呢?1998年,卡耐基梅隆大學的Tom Mitchell給出了如下定義:給定一個任務T和性能評估標準P,如果通過傳授給計算機程序一個經(jīng)驗E后,其完成任務T的性能(基于性能評估標準P)有所提高,則說明這個程序具有學習功能。例如,對下棋來說,任務就是下棋,性能評估標準就是贏人類棋手的概率,經(jīng)驗就是曾經(jīng)下過的棋局;而對字符識別來說,任務就是識別輸入的字符圖像,性能評估標準就是識別的正確率,經(jīng)驗就是收集的字符集。
如圖2-12所示,機器學習包括學習樣本采集、樣本描述、學習環(huán)節(jié)和執(zhí)行/驗證環(huán)節(jié)。根據(jù)任務的不同,樣本描述可以采用上面介紹的任意知識表示方法。對每個樣本,還可以附上它所對應的類別/答案/行動,這樣的(數(shù)據(jù),類別)組稱為標記樣本;否則,稱為無標記樣本。這些樣本如果用于學習環(huán)節(jié),就叫訓練樣本;用于測試環(huán)節(jié),就叫測試樣本。學習環(huán)節(jié)的任務是建立用于解答問題的知識庫或用于分類的模型。執(zhí)行/驗證環(huán)節(jié)會完成要求的問題解答或分類任務,并對學習系統(tǒng)進行性能評估。

圖2-12 機器學習的基本過程
根據(jù)知識表示方法和學習任務的不同,機器學習的方法與策略也不同。符號系統(tǒng)(如產(chǎn)生式規(guī)則)通常采用機械式學習、演繹學習、示例學習、類比學習和解釋學習[3]等方法來建立知識庫;基于概率的有向圖(如貝葉斯網(wǎng)絡和隱馬爾可夫模型)學習的主要任務是估計模型的參數(shù),以便模型能最好地描述訓練樣本;而分類器學習(通常以特征向量作為輸入)的主要任務是從訓練樣本中學習出一個最佳模型,以便提高分類準確率。根據(jù)不同的學習特點,機器學習方法可以有多種分類,如表2-3和表2-4所示。
表2-3 基于訓練樣本標簽類別的機器學習方法分類

續(xù)表

表2-4 基于學習方法演化的機器學習方法分類

在這些機器學習方法中,分類器的學習是監(jiān)督學習的一項重要工作,也是其最成功的一個方面。系統(tǒng)從外界獲取很多不準確的數(shù)據(jù),即數(shù)據(jù)中包含重復記錄、不良解析的字段,或不完整、不正確及過時的信息,而分類器的一個關鍵優(yōu)勢,就是對“臟”數(shù)據(jù)具有容忍能力。不同的分類器具有不同的容忍能力。分類器的算法選擇,一方面取決于運算速度和精度的要求,另一方面要看樣本是否線性可分。
假設樣本的特性可以用一個n 維的特征向量x=(x1,…,xn)T 來表示。如果定義一個n 維的坐標系,那么每個樣本的特征向量會對應這個坐標系中的一個點。如果一個n-1維的超平面可以把兩個類別分開,則這兩個類別是線性可分的。假設圖2-13中的黑點和白點代表兩個類別(分別用1和-1標記)的樣本在特征空間的位置,則圖2-13(a)中的兩個類別是線性可分的,而圖2-13(b)中的兩個類別不是線性可分的。
1.線性分類器
如果兩個類別的特征是線性可分的,則可以定義一個超平面和一個簡單的判別準則來把這兩個類別分開。線性分類器學習的任務就是通過學習樣本找到一組權值w,使得根據(jù)w定義的超平面對兩個類別有好的分類效果。線性分類器通常通過統(tǒng)計方法或判別模型來獲取。

圖2-13 線性可分與非線性可分類別示意
樸素貝葉斯分類器是一種有代表性的統(tǒng)計方法(見圖2-14)。它可以把分類問題轉換成一個條件概率問題,即給定特征向量x=(x1,…,xn )T ,分類器試圖把樣本分配給條件概率最大的類別。當特征數(shù)量較大或每個特征能取大量值時,計算條件概率變得不現(xiàn)實。

圖2-14 樸素貝葉斯分類器的有向圖表示
如此,問題就轉換成從學習樣本中估計各類別的先驗概率P(C)和計算條件概率P(xi|C)所需的特征分布參數(shù)(假設特征在訓練集中滿足某種分布或非參數(shù)模型)。支持向量機是判別模型的代表(見圖2-15)。其目的是從訓練樣本中學習到一個超平面,這個超平面不但可以區(qū)分兩個類別,而且可以保證其到兩個類別中離它最近的點的間隔最大。
2.基于監(jiān)督學習的神經(jīng)網(wǎng)絡
1)神經(jīng)網(wǎng)絡介紹
神經(jīng)網(wǎng)絡設計的靈感來源于大腦神經(jīng)系統(tǒng)。早在1904年,生物學家就提出了神經(jīng)元(單個神經(jīng)細胞)的結構模型。如圖2-16所示,神經(jīng)元結構中通常具有多個用來接收傳入信息的樹突,以及一條軸突。軸突尾端有許多軸突末梢來給其他神經(jīng)元傳遞信息。軸突末梢跟其他神經(jīng)元的樹突連接,從而傳遞信號。連接的部位叫作突觸。神經(jīng)元可被視為一種只有兩種狀態(tài)的機器——激活時為“是”,未激活時為“否”。神經(jīng)元的狀態(tài)取決于它從其他的神經(jīng)元接收到的輸入信號量及突觸的強度(抑制或加強)。當信號量總和超過某個閾值時,細胞體就會激活,產(chǎn)生電脈沖。電脈沖沿著軸突并通過突觸傳遞到其他神經(jīng)元。

圖2-15 支持向量機。黑點所代表的類別的標記為1,白點所代表的類別的標記為-1

圖2-16 神經(jīng)元的結構
通過參考生物神經(jīng)元的結構,F(xiàn)rank Rosenblatt于1957年提出了單層感知機模型,如圖2-17所示。它包括多個輸入節(jié)點(對應于樣本輸入的n 個特征值x1,…,xn )、每個輸入的權重(w1,…,wn)、偏置(閾值b)和一個輸出單元。輸入節(jié)點只負責輸入,不進行任何計算,運算功能由輸出單元完成。輸出單元先對輸入加權求和,然后把和值傳遞給激活函數(shù)來計算最后的輸出。

圖2-17 單層感知機模型
單層感知機是一個二元線性分類器,處理的問題有限。20世紀80年代初,多層感知機開始成為基于神經(jīng)網(wǎng)絡的主流分類器,在模式識別等領域得到了廣泛的應用。一個多層感知機包括一個輸入層、一個或多個隱含層和一個輸出層。最常用的是如圖2-18所示的三層感知機。輸入層的節(jié)點數(shù)為輸入特征向量維數(shù)加1(每個節(jié)點對應特征向量中的一個元素,最后一個節(jié)點為偏置)。輸出層的節(jié)點數(shù)為目標的維數(shù)或類別(每個節(jié)點對應一個類別),而每層的節(jié)點數(shù)是由設計者指定的,因此,“自由”把握在設計者的手中。但是,節(jié)點數(shù)的設置會影響整個模型的效果。如何決定這個節(jié)點數(shù)呢?目前業(yè)界沒有完善的理論來指導這個決策,一般根據(jù)經(jīng)驗來設置。較好的方法是預先設定幾個可選值,通過切換這幾個值來看整個模型的預測效果,選擇效果最好的值作為最終選擇,這種方法又叫Grid Search(網(wǎng)格搜索)。通常隱含層的節(jié)點數(shù)會比輸入層少,比輸出層多。

圖2-18 三層感知機
在多層感知機中,前一層節(jié)點的輸出會作為下一層節(jié)點的輸入。也就是說,隱含層和輸出層的每個節(jié)點都具有單層感知機類似的結構與功能:對來自上一層的輸入線性加權求和,把所得到的結果傳遞給激活函數(shù)并輸出激活函數(shù)的值。
為了增強對非線性問題的模擬能力,多層感知機的激活函數(shù)通常采用非線性且可微(平滑)的函數(shù)。常用的激活函數(shù)包括Sigmoid 函數(shù)、Tanh函數(shù)和修正線性單元(ReLU),這些函數(shù)的形式如圖2-19所示。

圖2-19 多層感知機中常用的激活函數(shù)
雖然多層感知機比單層感知機具有更強的表達和分類能力,但相比于生物神經(jīng)網(wǎng)絡系統(tǒng),它仍然是一個非常簡化的模型。早在20世紀80年代初,生理學家就發(fā)現(xiàn)人的視覺神經(jīng)系統(tǒng)是一個復雜度分層的系統(tǒng):低層的神經(jīng)元只提取局部區(qū)域(神經(jīng)元反應的局部區(qū)域稱為神經(jīng)元的感受野)的一些比較簡單的元素,比如選擇性地提取特定方向的線條或物體邊緣;中層的神經(jīng)元接收并綜合低層神經(jīng)元的信息,其感受野比低層的大,可以提取基本的形狀,如圓、長方形等;而高層的神經(jīng)元感受野更大,可以提取復雜的形狀。為了模擬這一復雜的視覺神經(jīng)系統(tǒng),F(xiàn)ukushima提出了Neocognitron(見圖2-20)[11,12]。

圖2-20 用于字符識別的Neocognitron
Neocognitron 由多個不同階段/層次、不同功能的神經(jīng)元組成。每個階段都由一個S-層和一個C-層組成。S-層負責該階段的特征提取,而C-層則用于增加神經(jīng)網(wǎng)絡對物體或特征位置變化的健壯性。每一層對應一個多通道特征平面。如圖2-20中,US1層下面標明19×19×12,表明US1層有12個特征平面,每個通道上的每個點有一個大小為19×19的感受野,其從它上一層圖像/特征平面中的一個大小為19×19的局部區(qū)域接收輸入信息。每個點通過一個權向量與感受野中的各輸入節(jié)點相連。這樣,每個點包含的權值可以用一個三維矩陣來表示。其中第一、二維對應于感受野的寬度和高度,第三維是與之連接的前一層的特征平面數(shù)。如圖2-20中,US2層各權矩陣的維數(shù)為21×21×8,其中8為UC1層的特征平面數(shù)。
Neocognitron可以看成最早的深度神經(jīng)網(wǎng)絡,可惜受限于當時計算機的運算能力及訓練樣本集,Neocognitron并沒有引起廣泛的注意。1998年,深度神經(jīng)網(wǎng)絡的先驅Yann Lecun提出了LeNet-5 [12]并將其成功用于字符識別。與Neocognitron類似,LeNet-5(見圖2-21)的每層都定義了各自的感受野,同一層的各特征平面具有相同的感受野。每個特征平面都有自己的權矩陣。這個權矩陣會按設定的步長在前一層的特征平面上從上到下、從左到右移動,以便計算當前特征平面上對應節(jié)點的輸出。這和濾波器通過卷積進行濾波的原理非常類似,權矩陣相當于濾波器的“核”。每個核在圖像上抽取不同的特征。這樣的深度神經(jīng)網(wǎng)絡也叫深度卷積神經(jīng)網(wǎng)絡。Neocognitron 利用二次抽樣(Subsampling)來降低特征平面的維數(shù)和增加網(wǎng)絡對特征位置變化的健壯性,而沒有定義C-層。同時,LeNet-5最后還定義了兩個全連接層以綜合各局部特征的信息,得到物體的分類。

圖2-21 LeNet-5結構示意[12]
隨著GPU技術的飛速發(fā)展,計算機的運算速度得到了顯著的提高;同時,通過科研人員的不懈努力,大規(guī)模的訓練樣本集如ImageNet,也給科學實驗提供了便利,使得基于大數(shù)據(jù)的深度學習成為可能,各種深度卷積神經(jīng)網(wǎng)絡應運而生。圖2-22所示為廣泛使用的深度卷積神經(jīng)網(wǎng)絡AlexNet的結構[13]。

圖2-22 AlexNet 的結構[13]
AlexNet接收一個224×224的三通道圖像作為輸入。它包含5個局部卷積層和三個全連接層(最后三層)。第一層由96個感受野為11×11 的核組成。第一層下面的標注“Stride of 4”說明卷積的步長為4。第一、二層和第五層都標注了池化(Max Pooling)操作。池化操作完成二次抽樣的功能。如對一個2×2的局部區(qū)域進行池化操作,將從區(qū)域內(nèi)的4個節(jié)點值中選擇最大的一個作為池化輸出,這樣一個2×2的區(qū)域就被壓縮成了一個點。池化還能使網(wǎng)絡對特征位置的變化具有更好的健壯性。
從2012年至2015年,每年ImageNet Large Scale Visual Recognition Challenge(ILSVRC)的冠軍都是深度卷積神經(jīng)網(wǎng)絡,由此產(chǎn)生了一批深受歡迎的深度卷積神經(jīng)網(wǎng)絡,如VGG、GoogLeNet和 ResNet(它們在比賽中的表現(xiàn)見圖2-23,條形圖上方的數(shù)字代表其檢測物體的錯誤率)。除卷積神經(jīng)網(wǎng)絡之外,研究者們還提出了其他的網(wǎng)絡結構,比如用于處理序列信息的RNN(Recurrent Neural Network)和LSTMs(Long-Short Term Memory Networks)。同時,常用的網(wǎng)絡結構在不同的框架工具下實現(xiàn),并可免費使用,這極大地促進了深度神經(jīng)網(wǎng)絡技術的推廣和應用。常用的框架工具有Caffe、TensorFlow、MXNet、Torch和Theano等。

圖2-23 ILSVRC 2014年和2015年的冠軍系統(tǒng)及其表現(xiàn)
雖然深度卷積神經(jīng)網(wǎng)絡最早只用于圖像識別,但現(xiàn)在其應用已擴展到語音識別和自然語言理解等領域。其他深度神經(jīng)網(wǎng)絡結構,如循環(huán)神經(jīng)網(wǎng)絡、生成對抗網(wǎng)絡、基于注意力的模型等,不斷推陳出新,掀起了深度神經(jīng)網(wǎng)絡研究與應用的浪潮。
2)神經(jīng)網(wǎng)絡學習
神經(jīng)網(wǎng)絡的分類功能是通過一個正向傳播的過程來實現(xiàn)的:給定一個輸入向量,第一個隱含層的每個節(jié)點會計算各自的輸出,并傳遞給下一層作為輸入,如此一層層傳遞下去,直到輸出層為止。輸出層第i(i=1,…,N)個節(jié)點的輸出可以看成輸入樣本第i個節(jié)點所對應類別的概率。假設輸入樣本的類別為 k,一個理想的神經(jīng)網(wǎng)絡分類器對應于第k 類別的輸出應該是1,而其他節(jié)點的輸出為0。實際分類器每個節(jié)點的輸出是一個0~1的實數(shù)。通常分類器會通過一個softmax 函數(shù)把輸入樣本分配給輸出概率最大的節(jié)點所對應的類別。
神經(jīng)網(wǎng)絡在開始學習之前,各節(jié)點的權重值是隨機分配的,輸出層的輸出也是隨機的。顯然,這個網(wǎng)絡作為分類器的性能較低。假如改變了某個神經(jīng)元或某幾個神經(jīng)元的權重值或偏置值,那么該神經(jīng)元的輸出肯定會變得不同,這些不同最終將反映在輸出上。所以,可以通過合理地改變權重值和偏置值來提高這個神經(jīng)網(wǎng)絡的性能。神經(jīng)元的權重值和偏置值統(tǒng)稱為神經(jīng)網(wǎng)絡的參數(shù)。神經(jīng)網(wǎng)絡學習的目的就是調(diào)整這些參數(shù),使網(wǎng)絡得到好的分類效果,其中最典型的方法就是基于梯度下降原理的誤差反向傳播算法。
為了計算神經(jīng)網(wǎng)絡分類的誤差,首先要定義一個誤差函數(shù)。分類器的誤差越小,其性能就越好。那么,怎樣調(diào)整參數(shù)使神經(jīng)網(wǎng)絡最快地學習到理想的參數(shù)以達到好的分類效果呢?從數(shù)學上講,當權重值和偏置值沿著誤差函數(shù)的負梯度方向(也叫最大梯度方向)變化時,學習速度最快。誤差函數(shù)的負梯度方向可以通過對誤差函數(shù)求偏導得到。由于誤差函數(shù)是一個非線性函數(shù),其各點的梯度值不同,通常算法還會引入一個步長,或者叫學習率,通過多個循環(huán)來逐漸調(diào)整參數(shù)。
由于誤差函數(shù)與輸出層的權重直接相關,可以直接在這一層求出誤差函數(shù)對權重的偏導,但其他層的權重并不直接體現(xiàn)在誤差函數(shù)中,對它們求偏導需要利用微積分中的鏈式原則。因此,神經(jīng)網(wǎng)絡的權重調(diào)整總是從輸出層開始,逐層向前傳遞的。神經(jīng)網(wǎng)絡的學習過程也叫誤差反向傳播過程或BP(Back -Propagation)過程。
3.強化學習
前面介紹的監(jiān)督學習方法需要明確地標注樣本,即需要標注輸入與輸出之間的對應關系。但是,有的問題通過多個步驟或動作才能得到最后的結果,無法準確定義各子步驟與結果之間的對應關系。比如下棋最后的結果是由很多個落子步驟,以及對手的落子策略共同決定的,對于每一步落子,我們無法給它一個對錯/輸贏作為輸出,因為某一落子動作是否正確,不僅取決于當前的棋局(環(huán)境),還取決于后續(xù)雙方棋手的策略。強化學習方法的提出,就是為了學習各子步驟或動作在特定環(huán)境下對最后結果的貢獻,以便系統(tǒng)能根據(jù)現(xiàn)有的狀態(tài)決定下一步的動作。
強化學習有四個核心組成部分,即環(huán)境、學習者(Agent)、策略及收益函數(shù)(見圖2-24)。具體地,學習者處于一個環(huán)境中,可以感知所處環(huán)境的狀態(tài),而當某個動作作用在當前狀態(tài)時(一個策略),學習者就能感知環(huán)境狀態(tài)的變化,同時該動作所帶來的狀態(tài)變化會根據(jù)一個收益函數(shù)向學習者反饋一個收益。學習者通過在環(huán)境中不斷地嘗試,最終得到一套策略,從而使執(zhí)行這一策略后得到的累積收益最大。由此可見,強化學習包括非常重要的兩方面:一是定義所有可能的動作空間;二是定義最優(yōu)的收益函數(shù),即每個動作所帶來的收益。

圖2-24 強化學習模型
強化學習以離散時間馬爾可夫決策過程(Markov Decision Process,MDP)為數(shù)學基礎,不需要精確的歷史訓練樣本及系統(tǒng)先驗知識,可以適應動態(tài)環(huán)境變化,通過觀察當前狀態(tài)和收益并不斷與環(huán)境交互試錯來獲取最優(yōu)策略。具體來說,整個強化學習的任務就是一個馬爾可夫決策過程,可由<S,X,P,R>四元組表示,其中P:S×X×S→R定義了狀態(tài)轉移函數(shù),而R:S×X×S→R定義了收益函數(shù)。學習者需要在環(huán)境中不斷嘗試以得到一個最優(yōu)策略,根據(jù)這個策略就知道在某種狀態(tài)下需要執(zhí)行的動作。策略π:S×X→R表示在狀態(tài)s∈S下,選擇動作x∈X的概率。
根據(jù)學習過程中馬爾可夫決策過程的知悉情況,可以將強化學習分為有模型學習和無模型學習兩種。如果<S,X,P,R>已知,則為有模型學習,在這種情況下,任意狀態(tài)s執(zhí)行動作x轉移到狀態(tài) s' 的概率是已知的,同時該轉移所帶來的收益也是已知的,那么就能算出任意策略 π所帶來的期望累積收益,在有限的狀態(tài)空間和動態(tài)空間下,可以根據(jù)期望累積收益最大值來找到最優(yōu)策略。而對于無模型學習,轉移概率和獎賞函數(shù)都是未知的,甚至很難知道環(huán)境中有多少狀態(tài)或學習者可以采用什么樣的動作,這樣的模型更加貼合實際,但更難實現(xiàn)。
- 數(shù)據(jù)挖掘原理與實踐
- Unity 5.x Game AI Programming Cookbook
- 大數(shù)據(jù)可視化
- 大數(shù)據(jù)算法
- Hadoop 3.x大數(shù)據(jù)開發(fā)實戰(zhàn)
- “互聯(lián)網(wǎng)+”時代立體化計算機組
- 網(wǎng)站數(shù)據(jù)庫技術
- 重復數(shù)據(jù)刪除技術:面向大數(shù)據(jù)管理的縮減技術
- 區(qū)塊鏈技術應用與實踐案例
- 二進制分析實戰(zhàn)
- 聯(lián)動Oracle:設計思想、架構實現(xiàn)與AWR報告
- 深入理解InfluxDB:時序數(shù)據(jù)庫詳解與實踐
- 智能與數(shù)據(jù)重構世界
- Rust High Performance
- 數(shù)據(jù)之美:一本書學會可視化設計