機器學習簡明教程-基于Python語言實現(xiàn) 課件 第8、9章 人工神經(jīng)網(wǎng)絡、卷積神經(jīng)網(wǎng)絡_第1頁
機器學習簡明教程-基于Python語言實現(xiàn) 課件 第8、9章 人工神經(jīng)網(wǎng)絡、卷積神經(jīng)網(wǎng)絡_第2頁
機器學習簡明教程-基于Python語言實現(xiàn) 課件 第8、9章 人工神經(jīng)網(wǎng)絡、卷積神經(jīng)網(wǎng)絡_第3頁
機器學習簡明教程-基于Python語言實現(xiàn) 課件 第8、9章 人工神經(jīng)網(wǎng)絡、卷積神經(jīng)網(wǎng)絡_第4頁
機器學習簡明教程-基于Python語言實現(xiàn) 課件 第8、9章 人工神經(jīng)網(wǎng)絡、卷積神經(jīng)網(wǎng)絡_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

人工神經(jīng)網(wǎng)絡《機器學習簡明教程》高延增侯躍恩羅志堅機械工業(yè)出版社08本章目標?理解神經(jīng)元模型的原理?理解多層神經(jīng)網(wǎng)絡的原理?了解反向傳播算法人工神經(jīng)網(wǎng)絡(ArtificialNeuralNetwork)是一種較為特殊的智能算法,它的誕生是受大腦中神經(jīng)元機理啟發(fā)的。人工神經(jīng)網(wǎng)絡的發(fā)展經(jīng)歷了三次高潮和兩次低谷,現(xiàn)如今人工智能領域大放異彩的深度學習算法就是以神經(jīng)網(wǎng)絡為基礎的。因此,神經(jīng)網(wǎng)絡算法對人工智能學習者非常重要,不可不學!上一章講的SVM,首先假設訓練樣本集是可分的,然后想辦法求解一個分隔超平面;再前面的決策樹、K近鄰、線性回歸等算法也與之類似,它們都是先對數(shù)據(jù)做一些假設,然后根據(jù)這些假設求解數(shù)學模型,最后把求得的模型應用于生產(chǎn)實際解決一些與初始假設類似的問題。而神經(jīng)網(wǎng)絡算法的設計理念不一樣,它的設計初衷是模擬人類大腦的工作原理,以神經(jīng)元為基礎構建一個網(wǎng)狀結構以實現(xiàn)可以替代人類大腦的人工智能。人工神經(jīng)網(wǎng)絡的發(fā)展經(jīng)歷了神經(jīng)元模型、BP(BackPropagationTraining)網(wǎng)絡、深度學習三個主要階段,本章重點介紹神經(jīng)元和BP神經(jīng)網(wǎng)絡。目錄/Contents8.18.2人工智能概念神經(jīng)元模型8.3多層神經(jīng)網(wǎng)絡8.4應用案例8.1人工智能的概念——圖靈測試人工智能(ArtificialIntelligence,AI)分成兩部分人工和智能,人工就是人力制造的,那人力制造的東西在什么條件下可以稱之為人工智能呢?指測試人與被測試者(一個人和一臺機器)隔開的情況下,通過一些裝置(如鍵盤)由測試人向被測試者隨意提問(如左圖),如果經(jīng)過一段時間(超過25分鐘)后被測試者的答復不能使測試人確認出哪個是人、哪個是機器的回答,那么這臺機器就通過了測試,并被認為具有人類智能。8.1人工智能的概念——圖靈測試圖靈測試的意義:(1)人類能否制造出可以思考的機器?(2)如何判斷人類造出的機器能否思考?新圖靈測試方案包括:測試人工智能是否能理解一篇文章(如輸入一篇文章讓算法分析文章中某個人物性格或中心思想)、測試一個機器人是否具備對物理環(huán)境的適應能力(如讓護理機器人幫助老人從浴缸里出來)、測試一個人工智能助理是否勝任某一工作任務(如顧客對客服機器人的滿意度調(diào)查)等。8.1人工智能的概念——實現(xiàn)AI的三種思路(1)功能模擬;(2)結構模擬;(3)行為模擬。功能模擬又稱符號主義,把問題或知識表示為某種邏輯結構,運用符號演算實現(xiàn)表示、推理和學習等功能,從宏觀上模擬人腦思維,實現(xiàn)人工智能功能。功能模擬法的應用包括定理證明、自動推理、專家系統(tǒng)、自動程序設計和機器博弈等。結構模擬也稱聯(lián)結主義,該方法認為思維的基元不是符號而是神經(jīng)元,通過模擬人類的大腦結構來實現(xiàn)人工智能,屬于非符號處理范疇。本方法通過對神經(jīng)網(wǎng)絡的訓練進行學習,獲得知識并用于解決問題。結構模擬法在模式識別、圖像信息壓縮等領域獲得成功應用,特別是在大數(shù)據(jù)訓練集的加持下取得良好效果。行為模擬也稱行為主義,該方法認為智能取決于感知和行動,提出智能行為的“感知-動作”模式。它在控制論的基礎上發(fā)展而來,在自動控制領域有較為廣泛的應用,如自適應、自尋優(yōu)、自學習、自組織等。該方法在仿生機器人、智能機械等領域有所貢獻。8.1人工智能的概念——神經(jīng)網(wǎng)絡這些我們習以為常的日常動作,需要人腦中數(shù)百億個高度相連的神經(jīng)元協(xié)作完成。8.1人工智能的概念——神經(jīng)網(wǎng)絡神經(jīng)元主要由一個神經(jīng)核(Nucleus)、多個樹突(Dendrites)、一個軸突(Axon)組成,而在軸突的末梢那里又有多個分叉(軸突末梢)。神經(jīng)元通過樹突從外界(其它神經(jīng)元)獲得信息,又通過軸突將本神經(jīng)元的信號以電脈沖的形式輸出給其它神經(jīng)元。也就是說,一個神經(jīng)元可以通過樹突處理多個神經(jīng)元的輸入,然后得到一個輸出結果,又可以將唯一的處理結果輸出給多個其它的神經(jīng)元。神經(jīng)元和神經(jīng)元之間,是通過樹突和軸突末梢的連接來協(xié)同工作的,樹突和軸突連接的位置被稱為突觸(Synapse)。神經(jīng)元示意圖人工神經(jīng)網(wǎng)絡就是對生物神經(jīng)網(wǎng)絡的簡化抽象,它是從神經(jīng)元模型開始逐步發(fā)展出來的一種人工智能算法模型。目錄/Contents8.18.2人工智能概念神經(jīng)元模型8.3多層神經(jīng)網(wǎng)絡8.4應用案例8.2神經(jīng)元模型——模型表示1943年,心理學家McCulloch和數(shù)學家Pitts參考生物神經(jīng)元的結構發(fā)表了抽象的神經(jīng)元模型。神經(jīng)元模型包含輸入、處理、輸出三部分,分別類比生物神經(jīng)元的樹突、神經(jīng)核、軸突。神經(jīng)元的處理又包含求和運算、函數(shù)運算(稱為激活函數(shù)或激勵函數(shù))兩步,每個輸入分量上又都會乘以對應的權值。

(8.1)8.2神經(jīng)元模型——模型表示

8.2神經(jīng)元模型——模型表示

函數(shù)名圖形函數(shù)公式導數(shù)階躍ReLuSigmoid雙曲正切Leaky-ReLu8.2神經(jīng)元模型——模型表示神經(jīng)元而每個輸入分量上的權值需要根據(jù)訓練集適當調(diào)整,設置合適的權值和激活函數(shù)就可以讓神經(jīng)元模型實現(xiàn)簡單的邏輯運算。

求和、函數(shù)運算合并,使用帶數(shù)值的有向線段表示值的加權傳遞,得到神經(jīng)元的模型圖如下圖:

(8.2)8.2神經(jīng)元模型——實現(xiàn)基本邏輯運算例8.2.1:用神經(jīng)元模型實現(xiàn)邏輯“與”運算。000010100111邏輯與真值表

模型的輸入與輸出之間的映射關系近似值0000101001118.2神經(jīng)元模型——實現(xiàn)基本邏輯運算例8.2.2:用神經(jīng)元模型實現(xiàn)邏輯“或”運算。邏輯或真值表

模型的輸入與輸出之間的映射關系000011101111近似值0000111011118.2神經(jīng)元模型——實現(xiàn)基本邏輯運算例

8.2.3:用神經(jīng)元模型實現(xiàn)邏輯“非”運算。邏輯非真值表

模型的輸入與輸出之間的映射關系0110近似值01108.2神經(jīng)元模型——實現(xiàn)基本邏輯運算分析一下邏輯與運算、邏輯或、邏輯非運算,如下圖所示這三種運算本質(zhì)上都是線性可分的

1969年,被稱為人工智能之父的計算機科學家馬文·明斯基(MarvinLeeMinsky)出版的《Perceptions》(《感知器》)一書指出:單層感知器無法解決線性不可分問題(如異或、同或運算);對于線性不可分問題,需要使用多層神經(jīng)網(wǎng)絡;而受限于當時的計算機硬件水平和算法水平并沒有針對多層神經(jīng)網(wǎng)絡的有效訓練算法。因此,到了上世紀70年代人工智能領域?qū)τ谏窠?jīng)網(wǎng)絡的研究陷入了第一次低谷。目錄/Contents8.18.2人工智能概念神經(jīng)元模型8.3多層神經(jīng)網(wǎng)絡8.4應用案例8.3多層神經(jīng)網(wǎng)絡1986年,Rumelhar和Hinton等人提出了反向傳播(Backpropagation,BP)算法,解決了兩層神經(jīng)網(wǎng)絡所需要的復雜計算量問題,從而帶動了業(yè)界使用兩層神經(jīng)網(wǎng)絡研究的熱潮。標準多層感知器(MLP)是由多個單層感知器連接在一起的,存在一層輸入節(jié)點、一層輸出節(jié)點和一個或多個中間層。中間層也被稱為“隱藏層”,因為它們不能直接從系統(tǒng)輸入和輸出中觀察到,如下圖:上圖中,輸入層中的只是提供輸入變量而沒有運算,所以輸入層不被計入神經(jīng)網(wǎng)絡的層數(shù),上圖所示為一個三層神經(jīng)網(wǎng)絡,含兩個隱藏層、一個輸出層,當網(wǎng)絡的隱藏層多于一層時又稱深層神經(jīng)網(wǎng)絡。8.3多層神經(jīng)網(wǎng)絡——模型表示以兩層神經(jīng)網(wǎng)絡為例說明多層神經(jīng)網(wǎng)絡的模型表示,網(wǎng)絡結構如下圖:

(8.4)(8.5)8.3多層神經(jīng)網(wǎng)絡——模型表示

(8.6)類似的,式(8.5)可簡寫為式(8.7)

(8.7)

8.3多層神經(jīng)網(wǎng)絡——模型表示多層神經(jīng)網(wǎng)絡中,使用逐層前向傳遞的方法寫出任意復雜的多層神經(jīng)網(wǎng)絡的輸入與輸出之間的映射關系。也就是說,如果整個神經(jīng)網(wǎng)絡的拓撲結構、激活函數(shù)、權值矩陣、輸入向量是確定的,那對應的輸出也就是確定的值。多層神經(jīng)網(wǎng)絡設計步驟:(1)確定網(wǎng)絡結構,包括層數(shù)、每一層的節(jié)點數(shù)、節(jié)點的激活函數(shù)、層與層間的連接方式等;(2)訓練神經(jīng)網(wǎng)絡,主要是通過訓練集確定各個連接上的權值。以階躍函數(shù)作為激活函數(shù),若適當調(diào)整權值和偏移量就可以得到想要的矩形信號,如左上圖。因此,只要是足夠多的神經(jīng)元構成的多層神經(jīng)網(wǎng)絡就可以擬合任意復雜的非線性函數(shù),且擬合的精度是可調(diào)的。

8.3多層神經(jīng)網(wǎng)絡——實現(xiàn)同或運算例8.3.1:用多層神經(jīng)網(wǎng)絡模型實現(xiàn)邏輯“同或”運算。001010100111真值表

可以通過邏輯與、邏輯非、邏輯或運算的組合可以求得邏輯同或運算,000110100010000111018.3多層神經(jīng)網(wǎng)絡——代價函數(shù)神經(jīng)元模型、神經(jīng)網(wǎng)絡模型都是單輸出的,用來解決二分類問題。如果是多分類問題,可以采用多輸出的神經(jīng)網(wǎng)絡。

(8.9)8.3多層神經(jīng)網(wǎng)絡——代價函數(shù)

神經(jīng)網(wǎng)絡的拓撲結構,選擇不多。它的輸入層的節(jié)點數(shù)是由樣本特征的數(shù)量決定的,而輸出層的節(jié)點數(shù)是由樣本點的分類個數(shù)決定的。對于隱藏層,單從分類效果來看當然是節(jié)點數(shù)越多效果越好,但是過多的隱藏層層數(shù)和節(jié)點數(shù)必然會增加計算復雜度,需要平衡分類效果和訓練復雜度。一般情況下,隱藏層的層數(shù)設置不多于3層,而隱藏層的節(jié)點數(shù)一般根據(jù)輸入層節(jié)點數(shù)逐層成倍遞增或遞減。常用的激活函數(shù)也是有限的幾個。在工程上,激活函數(shù)選擇一般是先嘗試ReLu函數(shù)的效果;如果ReLu不滿足需要再嘗試Leaky-ReLu或Maxout等變種;然后是嘗試tanh、sigmoid這一類的函數(shù)。各個連接線上的權值,這就像前面幾章講到的算法模型的參數(shù)一樣需要訓練來確定最優(yōu)參數(shù)。也需要通過算法來最小化代價函數(shù)(costfunction)來擬合神經(jīng)網(wǎng)絡的參數(shù)。與邏輯回歸中的代價函數(shù)類似,這個函數(shù)能夠反映神經(jīng)網(wǎng)絡對樣本特征的映射分類結果與樣本的分類的差距,然后反映這個差距的函數(shù)還要能夠較容易地找到一種通過調(diào)整權值使它最小化的算法。8.3多層神經(jīng)網(wǎng)絡——代價函數(shù)

(8.10)

為了防止過擬合會在代價函數(shù)中加入正則化項。(8.11)

8.3多層神經(jīng)網(wǎng)絡——BP算法

方向傳播相對于正向傳播而言,正向傳播(forwardpropagation)是指從輸入層開始怎樣通過逐層運算得到輸出層的輸出的。

8.3多層神經(jīng)網(wǎng)絡——BP算法

(8.12)正向傳播的過程:8.3多層神經(jīng)網(wǎng)絡——BP算法神經(jīng)網(wǎng)絡只有到達輸出層才知道神經(jīng)網(wǎng)絡的計算值和實際值的接近程度即代價函數(shù)的值,要根據(jù)最后的代價函數(shù)更新整個網(wǎng)絡的參數(shù)。在起始階段為神經(jīng)網(wǎng)絡每個連接上的權值設置一個隨機的初始值,利用梯度下降法根據(jù)公式(8.13)逐步更新權值,使代價函數(shù)取得最小值。(8.13)

(8.14)

8.3多層神經(jīng)網(wǎng)絡——BP算法(8.15)

(8.16)式(8.16)也都是已知的量,這樣對于神經(jīng)網(wǎng)絡第L層的權值更新(8.13)就可以求出來了。也就是說,確定代價函數(shù)、激活函數(shù)以及初始化的權值矩陣后,根據(jù)正向傳播公式計算出網(wǎng)絡的輸出,就可以算出第L層的權值更新公式(8.13)。8.3多層神經(jīng)網(wǎng)絡——BP算法

(8.17)

8.3多層神經(jīng)網(wǎng)絡——BP算法目錄/Contents8.18.2人工智能概念神經(jīng)元模型8.3多層神經(jīng)網(wǎng)絡8.4應用案例8.4應用案例——手寫數(shù)字識別例8.4.1:構建一個神經(jīng)網(wǎng)絡,實現(xiàn)手寫體數(shù)字識別。待識別圖像的結果可能為0~9中的某個數(shù)字,因此這是一個多元分類(10分類)問題,所以神經(jīng)網(wǎng)絡的輸出層有10個節(jié)點,每個序號節(jié)點的輸出對應于待識別圖片是這個數(shù)字序號的概率值。

隱藏層設置為3層,每層的節(jié)點數(shù)分別為512、256、128,結構如下圖8.4應用案例——手寫數(shù)字識別例8.4.1:構建一個神經(jīng)網(wǎng)絡,實現(xiàn)手寫體數(shù)字識別。將各連接上的權值初始化為一個在區(qū)間0,1上的隨機數(shù),選擇Sigmoid函數(shù)作為激活函數(shù),將輸入層、各隱藏層、輸出層的學習率都設置為0.1。將樣本集按照7:3分成訓練集和測試集。按照8.3節(jié)介紹的步驟訓練神經(jīng)網(wǎng)絡,將權值更新循環(huán)的結束條件設置為滿足以下條件中的一種:(1)最大循環(huán)次數(shù)500;(2)訓練集上的正確識別率大于95%;(3)權值更新后,訓練集上的正確率提升但測試集上的正確率下降。本章小結本章是神經(jīng)網(wǎng)絡算法的入門篇。介紹了神經(jīng)元模型、多層網(wǎng)絡模型以及BP算法。人工神經(jīng)元模型受生物神經(jīng)元啟發(fā),能夠解決一些簡單的線性分類問題,掀起第一波人工神經(jīng)網(wǎng)絡研究的高潮。但受限于當時的算法和算力限制,無法將復雜的多層神經(jīng)網(wǎng)絡用于實際,隨后人工神經(jīng)網(wǎng)絡的研究進入低谷期。計算機硬件能力提升及BP算法的提出掀起了人工神經(jīng)網(wǎng)絡研究的第二波高潮,多層神經(jīng)網(wǎng)絡在圖像識別、語音識別、自然語言處理、智能駕駛、智慧醫(yī)療等各領域有廣泛應用。但是多層神經(jīng)網(wǎng)絡也存在訓練耗時太長、容易陷入局部最優(yōu)等缺點。另外,上世紀90年代發(fā)明的支持向量機(SupportVectorMachine,SVM)也可以解決線性不可分問題,而且具備訓練速度更快、可以避免局部最優(yōu)、無需調(diào)參、泛化能力強等優(yōu)點,相比于當時的人工神經(jīng)網(wǎng)絡有明顯優(yōu)勢,因此神經(jīng)網(wǎng)絡的研究進入第二次低谷。謝謝卷積神經(jīng)網(wǎng)絡《機器學習簡明教程》高延增侯躍恩羅志堅機械工業(yè)出版社09本章目標?了解人類視覺系統(tǒng)對CNN的啟發(fā)?理解CNN算法原理?了解LeNet5、AlexNet、GoogleNet等幾種經(jīng)典的CNN框架上一章使用普通的多層神經(jīng)網(wǎng)絡識別手寫數(shù)字圖像的例子有很多不合理的地方:(1)把圖像直接展開成一維向量,會使圖像在空間上的關聯(lián)信息丟失,難以保存圖像原有特征;(2)直接展開使得輸入層節(jié)點過多,導致后續(xù)層級的權值過多,這樣必然帶來學習效率的低下;(3)大量的權值參數(shù)使得過擬合風險增加。而卷積神經(jīng)網(wǎng)絡(ConvolutionalNeuralNetworks,CNN)的出現(xiàn),極大地緩解了這些問題。CNN的處理方式更接近生物神經(jīng)網(wǎng)絡,它是特殊設計的多層神經(jīng)網(wǎng)絡,將卷積、池化運算與神經(jīng)網(wǎng)絡結合,可以充分利用待處理特征的內(nèi)部關聯(lián)信息。再加上CNN算法實現(xiàn)中將涉及到的大量矩陣運算可以交給GPU處理,大大提高了運算速度,CNN的這些特性使得它在計算機視覺領域得到廣泛應用?;綜NN結構包括輸入層、卷積層、池化層、全連接層及輸出層。本章首先詳細介紹一般CNN算法框架及其各層級實現(xiàn)原理,然后給出幾種較常用的CNN模型,最后通過一個案例演示CNN如何用于解決實際問題。目錄/Contents9.19.2人類視覺系統(tǒng)的啟發(fā)CNN算法原理9.3CNN應用9.1人類視覺系統(tǒng)的啟發(fā)增加神經(jīng)網(wǎng)絡的層數(shù)和節(jié)點數(shù)可以擬合更加復雜的函數(shù),含多個隱藏層的神經(jīng)網(wǎng)絡被稱為深度神經(jīng)網(wǎng)絡,深度學習就是在深度神經(jīng)網(wǎng)絡上發(fā)展而來的。而卷積神經(jīng)網(wǎng)絡又屬于深度學習算法中的一種,卷積神經(jīng)網(wǎng)絡在實際應用中又有多種具體的類型。深度學習、卷積神經(jīng)網(wǎng)絡(CNN)在人工智能中的地位如下圖:CNN與人工智能的關系相對于普通的多層網(wǎng)絡,卷積神經(jīng)網(wǎng)絡在將待識別目標給到全連接網(wǎng)絡之前先經(jīng)過了卷積層和池化層的處理,而這個設計模擬了生物大腦皮層對視覺信號的處理過程。9.1人類視覺系統(tǒng)的啟發(fā)——人類視覺系統(tǒng)1962年,DavidHubel和TorstenWiesel就通過對貓的視覺皮層細胞的研究發(fā)現(xiàn)了視覺系統(tǒng)的分層級信息處理機制,并因此獲得了1981年的諾貝爾醫(yī)學獎。而靈長類動物(包括人類)的視覺系統(tǒng)更為復雜,其多層級、遞進的視覺信號處理機制對卷積神經(jīng)網(wǎng)絡的發(fā)明有重要啟發(fā)作用。人的視覺系統(tǒng)主要包括眼睛(主要指視網(wǎng)膜retina)、外側膝狀體(簡稱外膝體LateralGeniculateNucleus,LGN)以及視皮層(cortex,包括初級視皮層以及紋外皮層)三部分。視網(wǎng)膜是人類視覺系統(tǒng)獲取外部光學信號的第一站,主要負責將光信號轉換成電信號并進行簡單預處理后傳遞給后方的腦區(qū)。外膝體是中轉站,將視網(wǎng)膜傳過來的信號分門別類后傳遞給后面的視皮層(視覺系統(tǒng)的中央處理器)。視皮層主要包括初級視皮層(又稱作紋狀皮層或視覺第一區(qū)域,即V1)和紋外皮層(例如視覺第二、第三、第四、第五區(qū)域等,即V2、V3、V4、V5),各個區(qū)域提取視覺信息的側重點不同,如方向、方位、顏色、空間頻率等信息分別由不同的視皮層區(qū)域重點處理。人類視覺系統(tǒng)進行信息識別提取的流程概括為下圖:9.1人類視覺系統(tǒng)的啟發(fā)——人類視覺系統(tǒng)把視網(wǎng)膜上的細胞看作像素,外界的視覺刺激首先組成視網(wǎng)膜色譜圖,經(jīng)過LGN以后依次來到大腦皮層的V1、V2、V4、IT區(qū)域;然后每個區(qū)域與視網(wǎng)膜形成不同的區(qū)域?qū)匦?,對輸入信號的表征空間也逐步發(fā)生變化,人們也就是由此進行的劃分,從而可以把視覺系統(tǒng)看作是一個深度分層網(wǎng)絡。另外,從V1層開始的視覺層都具有前饋和反饋功能。9.1人類視覺系統(tǒng)的啟發(fā)——卷積(9.1)

(9.2)9.1人類視覺系統(tǒng)的啟發(fā)——卷積卷積運算是對生活、科研中一些現(xiàn)象的符號化抽象以記英語單詞為例,假設一個學生每隔一段時間可以記住一個單詞,隨時間推移記住的單詞會越來越多;但是,時間長了,單詞也會逐漸忘記。那一段時間內(nèi),這個學生總共能記住多少單詞呢?

沒有遺忘的記憶曲線

(9.3)9.1人類視覺系統(tǒng)的啟發(fā)——卷積以記英語單詞為例,假設一個學生每隔一段時間可以記住一個單詞,隨時間推移記住的單詞會越來越多;但是,時間長了,單詞也會逐漸忘記。那一段時間內(nèi),這個學生總共能記住多少單詞呢?

遺忘曲線

9.1人類視覺系統(tǒng)的啟發(fā)——卷積以記英語單詞為例,假設一個學生每隔一段時間可以記住一個單詞,隨時間推移記住的單詞會越來越多;但是,時間長了,單詞也會逐漸忘記。那一段時間內(nèi),這個學生總共能記住多少單詞呢?下圖為卷積運算示意,從圖中可以看成,如果學生不復習,那他再怎么努力能記住的單詞總數(shù)也是有限的卷積是瞬時行為的持續(xù)性后果。而兩個函數(shù)的卷積運算,計算方法就是先將一個函數(shù)翻轉,然后進行滑動疊加。

也可以將卷積運算理解為把兩個函數(shù)變成一個函數(shù)的運算形式,實際上就是將兩維轉為一維,實現(xiàn)了實質(zhì)上的降維。CNN在卷積層對圖像的處理借鑒了卷積運算的原理但有區(qū)別,具體將在本章第2節(jié)介紹。目錄/Contents9.19.2人類視覺系統(tǒng)的啟發(fā)CNN算法原理9.3CNN應用9.2CNN算法原理——CNN框架受生物視覺系統(tǒng)實現(xiàn)機理啟發(fā),科學家通過模擬生物大腦皮層對視覺信號的處理過程設計開發(fā)出CNN。CNN分成輸入層、卷積層、池化層、全連接層等,又通過局部感受野、權重共享和降采樣等策略降低網(wǎng)絡模型的復雜度。上圖為一個圖形識別的CNN模型案例,模型最左邊圖像就是輸入的待識別圖像,常用的RGB、HSV、YUV圖像格式都是三通道的,在模型看來就是輸入了三個矩陣。9.2CNN算法原理——CNN框架

(9.5)9.2CNN算法原理——CNN框架陸上交通工具圖像CNN識別過程的簡單示意相對于普通多層神經(jīng)網(wǎng)絡,CNN的主要特點是增加了卷積層和池化層。因此,學習CNN原理的關鍵是對卷積層、池化層原理的掌握。9.2CNN算法原理——卷積層

9.2CNN算法原理——卷積層上頁圖中所示的卷積運算,從圖像矩陣的左上角選擇和卷積核同樣大小的矩陣將它們對應位置上相乘后求和,求和結果作為卷積結果矩陣上的第一個點;結果矩陣上第二個點求解類似,如式(9.6)、(9.7)所示。(9.6)(9.7)從卷積算式可以看出,只要合理選擇卷積核,就可以強化或弱化某個方向上的像素點差別,如下圖所示。圖中的卷積核是豎向敏感的,就是圖像中豎向的邊界點會被增強,而橫向的邊界點會被變?nèi)?。圖中,6×6的圖像矩陣的第3列和第4列是邊界,與豎向敏感的卷積核求卷積運算得到的結果矩陣在這個位置上像素值增加了。9.2CNN算法原理——卷積層豎向敏感的卷積核替換為橫向敏感的卷積核,那經(jīng)過卷積運算后圖像矩陣的豎向邊界就消失了9.2CNN算法原理——卷積層與之類似,還可以是對角線上敏感的卷積核,這類{-1,0,1}三個數(shù)按照一定方向構成的矩陣,被稱為Prewitt核。常用的還有Sobel核,它由Prewitt核的基礎上改進而來,在中心系數(shù)上使用一個權值2,相比較Prewitt算子,Sobel模板能夠較好的抑制(平滑)噪聲。Prewitt核、Sobel核可以用來增強圖像中的線形邊界。9.2CNN算法原理——卷積層若想增強圖像中的點,可以使用Laplace核對圖像上的邊界突變檢測實際上可以通過對圖像求微分實現(xiàn),如前面的Prewitt、Sobel核又稱為一階微分算子,但一階微分算子對噪聲較敏感,所以有時會使用二階微分核,如Laplace、LoG、DoG等。卷積運算后,一些像素點的值變成了負數(shù),所以一般在卷積層后面會加入ReLU激活函數(shù)。9.2CNN算法原理——卷積層例:分別使用Sobel垂直、水平、對角線核對下圖進行卷積處理分別使用水平、垂直、對角線卷積核對原始圖像進行卷積運算

通過Sobel算子對圖像進行卷積運算后,相應方向上的邊緣得到增強,可以實現(xiàn)輪廓提取的效果。經(jīng)過卷積處理后的圖像增強了輪廓特征,有利于后續(xù)層對圖像進行分類。實際應用中,圖像在多個方向上的輪廓都對最后的識別有意義,經(jīng)常使用多個卷積核,每個卷積核代表一種圖像模式,把本卷積層得到的所有卷積結果都給后續(xù)的層處理。此外,實用中CNN卷積核每個分量的具體值不是固定的,最優(yōu)參數(shù)是根據(jù)樣本集訓練而得。卷積操作會使原始圖像變小,可以根據(jù)卷積核大小對原始圖像外圍填充數(shù)據(jù)(如0)使卷積結果矩陣維度不變。9.2CNN算法原理——卷積層卷積核對圖像平移卷積運算時,每次移動的像素間隔數(shù)(稱為步幅)也是可調(diào)的,顯然步幅越大卷積結果矩陣維度就越小。綜上,卷積層的任務就是通過卷積核的過濾提取圖片的局部特征,類似于人類視覺的特征提取。但是,經(jīng)過卷積操作后,圖像的像素值并沒有減少,CNN模仿人類視覺系統(tǒng)在卷積層后加入池化層對圖像進行降維和抽象。9.2CNN算法原理——池化層池化(Pooling)層通過去掉卷積層輸出的特征結果矩陣(FeatureMap)中不重要的樣本,減少后續(xù)層級需要處理的特征數(shù)量,池化層還可以在一定程度上防止過擬合。如果輸入是圖像的話,那么池化層的最主要作用就是壓縮圖像,池化操作屬于降采樣的一種特殊形式,且是一種比較簡單的降采樣算法。圖像降采樣核心思想是,卷積后的圖像矩陣維度依然太大,我們想辦法使用一種算法讓這個圖像矩陣的維度降低又不損失圖像的重要信息,CNN中采用池化層來實現(xiàn)這一目標。一般的池化運算如下圖,池化濾波器的長寬需要事先指定(常用2×2),從被池化矩陣的左上角開始選擇一個和池化濾波器形狀相同的子集,選中的子集通過一定的規(guī)則轉變成池化結果矩陣上的一個元素值,緊接著池化濾波器向右平移步長個單位進行下一輪,直到池化完成。步長可以小于池化濾波器的寬,這時候相鄰兩次池化會有重疊。9.2CNN算法原理——池化層常用的池化運算規(guī)則有三種:(1)最大池化(maxpooling),取池化子區(qū)域的最大值作為結果元素;(2)均值池化(averagepooling),取平均值作為結果;(3)全局池化(globalpooling),這里的全局是針對卷積層輸出的特征結果矩陣(featuremap)的,多個卷積核可以產(chǎn)生多個卷積結果矩陣,將每個結果矩陣池化為一個值,就稱為全局池化,又分成全局最大池化、全局均值池化等。9.2CNN算法原理——池化層例9.2.2:對例9.2.1中的豎向Sobel核卷積結果進行池化操作。

池化層的本質(zhì)是一個特征選擇、降維的過程,這樣可以提高整個CNN網(wǎng)絡的運算效率,但池化操作也會損失一部分原圖信息,是兼顧識別效果和算力的一種折衷方案。9.2CNN算法原理——全連接層全連接層(FullyConnectedLayer,FC)是CNN的最后一層,本層的輸出結果就是CNN的輸出結果,也就是圖像識別的最終結果。全連接層的結構如下圖,全連接層首先將前面經(jīng)過卷積、池化后的特征進行一維化(flatten)處理,然后將這些特征最終識別為一組可能的分類值。此處的全連接層,就是上一章多層神經(jīng)網(wǎng)絡。CNN前半部分的卷積+ReLU激活+池化等一系列處理的結果,然后將這些結果一維化(flatten)后作為全連接層的輸入,全連接層起到一個分類器的作用。9.2CNN算法原理——全連接層整個CNN可以分成兩部分:由卷積、池化等組成的特征預處理,由全連接層充當?shù)姆诸惼?。前面兩個小節(jié)介紹可知,多個卷積核對圖像進行卷積運算可以將圖像按照感興趣的紋理特征對圖像進行濾波,而對應的池化操作可以一定程度防止過擬合并對卷積結果進行壓縮,但每一個卷積核都只是提取圖像的局部特征;而在全連接層相當于將前面的這些強化、壓縮后的局部特征又重新組合在一起了。因為此處的輸入層用到了前面得到的所有局部特征,所以叫做全連接層。而最后的Softmax處理得到概率值向量,使得CNN的輸出結果有較好的可解釋性,也讓后續(xù)取閾值等操作順理成章。如下圖所示為一個訓練好的寵物分類CNN對一張小狗的圖片進行分類的過程示意,CNN先對待識別圖像進行卷積、池化等操作,最后將圖像處理后的特征交由全連接層進行分類識別,識別的結果在代表狗的那個分量上的概率最高,所以CNN識別的結果是“這個圖像80%的可能是一張小狗的圖像”。CNN卷積核的權值、全連接層各神經(jīng)元的權值等都是通過訓練得到的,訓練算法與上一章多層神經(jīng)網(wǎng)絡類似。目錄/Contents9.19.2人類視覺系統(tǒng)的啟發(fā)CNN算法原理9.3CNN應用9.3CNN應用——LeNet5模型知道了CNN的原理后,針對具體的應用場景可以根據(jù)需要靈活設計具體的CNN架構,較出名的有LeNet、AlexNet、GoogleNet等。LeNet是最早的卷積神經(jīng)網(wǎng)絡之一,它的出現(xiàn)直接推動了深度學習領域的發(fā)展,因為前面經(jīng)過多次迭代優(yōu)化,又被稱為LeNet5,它主要被用于手寫圖像的識別。LeNet-5共有七層,每一層都有可訓練參數(shù),架構如下:9.3CNN應用——LeNet5模型C1是卷積層,有6個5×5的卷積核,輸入圖像和每個卷積核做卷積運算都可以得到一個卷積結果,共6個卷積結果,又因為沒對輸入圖像做填充,所以每個卷積后的結果大小為28×28,28=32-5+1。卷積核的每個分量都是需要訓練的參數(shù),此外每個卷積核都有一個偏置(bias),所以C1層總共有5×5+1×6=156需要訓練的參數(shù)。連接數(shù)的個數(shù)為28×28×6×5×5+1=122304,因為卷積層的輸出的每個像素點都對應26個連接,總共有28×28×6個像素點。P2是池化層,采用一個2×2的池化濾波器。池化方法是將池化矩陣中的分量相加再乘以可訓練系數(shù)(權重),然后加上可訓練偏差(bias),再將得到的結果通過S形函數(shù)傳遞。池化過程中感受域不重疊,所以P2中的特征圖大小為C1中的特征圖的一半。C1中的每個特征圖對應P2中的2個池化參數(shù),所以P2的總池化參數(shù)為2×6=12。P2中特征圖的每個像素點都對應有2×2個連接,所以P2總的連接數(shù)為2×2×14×14=4704。C3是卷積層,卷積核個數(shù)為16,包括6個5×5×3、9個5×5×4、1個5×5×6的卷積核。C3各個(0~15)特征圖是對P2層6個(0~5)池化輸出進行卷積運算的結果,卷積關系見下頁表格。例如:C3的第0個特征圖是使用一個5×5×3的卷積核對P2的第0~2個輸出進行卷積運算的結果,C3第0個特征圖的每個像素都是5×5×3個乘積再加一個偏置的運算結果。所以,C3層的訓練參數(shù)共有5×5×3+1×6+5×5×4+1×9+5×5×6+1=1516,而每個卷積參數(shù)都參與了10×10次(C3輸出特征圖的大?。┻\算,因此C3層的連接數(shù)為10×10×1516=151600。9.3CNN應用——LeNet5模型C3P201234567891011121314150×

×××

××××

××1××

×××

××××

×2×××

×××

×

×××3

×××

××××

×

××4

×××

××××

××

×5

×××

××××

×××9.3CNN應用——LeNet5模型

9.3CNN應用——AlexLeNetAlexNet在2012年的ImageNet競賽中取得冠軍,從此卷積神經(jīng)網(wǎng)絡開始吸引更多人的注意,因為第一作者是AlexKrizhevsky所以被稱為AlexNet,AlexNet掀起了神經(jīng)網(wǎng)絡研究的又一次高潮,確立了深度學習(深度卷積網(wǎng)絡)在機器視覺領域的統(tǒng)治地位,同時將深度學習拓展到了語音識別、自然語言處理等多個領域。AlexNet架構如下圖。AlexNet包含了6億3000萬個連接,6000萬個參數(shù)和65萬個神經(jīng)元,擁有5個卷積層,其中3個卷積層后面連接了池化層,最后還有3個全連接層。9.3CNN應用——AlexLeNetAlexNet的輸入是227×227的圖像,共有8個層級具有可訓練參數(shù)。第一層卷積層,是可訓練層。該層使用96個11×11的卷積核,滑動步長(stride)為4,輸出為96個55×55的特征圖。第二層使用5×5卷積核,卷積產(chǎn)生256個特征圖,并進行最大池化;第三、第四層均使用3×3卷積核,輸出384個特征圖;第五層使用3×3卷積層,輸出256個特征圖,并進行池化;第六、七層為全連接層,各包含4096個神經(jīng)元,從輸入的227×227的圖像到全連接層后只剩4096個特征值;第八層是有1000個輸出的全連接+Softmax,得到最終的分類結果。相對于LeNet5,AlexNet更深、更寬。AlexNet有幾個特點:(1)使用ReLU作為CNN的激活函數(shù),經(jīng)驗證其效果在較深的網(wǎng)絡中優(yōu)于Sigmoid。(2)訓練過程中使用Dropout機制,隨機忽略一部分神經(jīng)元,按照一定的概率將其暫時從網(wǎng)絡中丟棄,對于隨機梯度下降來說,由于是隨機丟棄,故而每一個mini-batch都在訓練不同的網(wǎng)絡。(3)池化層中使用重疊的最大池化,避免平均池化的模糊化效果,池化移動步長(stride)比池化核的尺寸小,這樣池化層的輸出之間會有重疊和覆蓋,提升了特征的豐富性。(4)提出了LRN層,對局部神經(jīng)元的活動創(chuàng)建競爭機制,使得其中響應比較大的值變得相對更大,并抑制其他反饋較小的神經(jīng)元,增強了模型的泛化能力。9.3CNN應用——GoogleNetGoogLeNet的第一個版本在2014年由Google團隊提出,是一種全新的深度學習架構。相對于LeNet5和AlexNet,GoogLeNet使用更多層級的同時采用稀疏連接,因此更深層的它參數(shù)反而比AlexNet更少,可訓練參數(shù)的數(shù)量只有500萬,是2012年AlexNet的十二分之一。GoogLeNet引入Inception模塊構建網(wǎng)絡,Inception模塊將串行處理改為并行處理,如下圖。通過控制各種卷積、池化操作的填充(padd

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論