詳細地講解了CNN的基礎(chǔ)結(jié)構(gòu)與核心思想_第1頁
詳細地講解了CNN的基礎(chǔ)結(jié)構(gòu)與核心思想_第2頁
詳細地講解了CNN的基礎(chǔ)結(jié)構(gòu)與核心思想_第3頁
詳細地講解了CNN的基礎(chǔ)結(jié)構(gòu)與核心思想_第4頁
詳細地講解了CNN的基礎(chǔ)結(jié)構(gòu)與核心思想_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本文整理了網(wǎng)上幾位大牛的博客,詳細地講解了CNN的基礎(chǔ)結(jié)構(gòu)與核心思想,歡迎交流。1Deep learning簡介2Deep Learning訓(xùn)練過程3Deep Learning模型之:CNN卷積神經(jīng)網(wǎng)絡(luò)推導(dǎo)和實現(xiàn)4Deep Learning模型之:CNN的反向求導(dǎo)及練習(xí)5Deep Learning模型之:CNN卷積神經(jīng)網(wǎng)絡(luò)(一)深度解析CNN6Deep Learning模型之:CNN卷積神經(jīng)網(wǎng)絡(luò)(二)文字識別系統(tǒng)LeNet-57Deep Learning模型之:CNN卷積神經(jīng)網(wǎng)絡(luò)(三)CNN常見問題總結(jié)1.概述 卷積神經(jīng)網(wǎng)絡(luò)是一種特殊的深層的神經(jīng)網(wǎng)絡(luò)模型,它的特殊性體現(xiàn)在兩個方面,一方面它的神

2、經(jīng)元間的連接是非全連接的,另一方面同一層中某些神經(jīng)元之間的連接的權(quán)重是共享的(即相同的)。它的非全連接和權(quán)值共享的網(wǎng)絡(luò)結(jié)構(gòu)使之更類似于生物神經(jīng)網(wǎng)絡(luò),降低了網(wǎng)絡(luò)模型的復(fù)雜度(對于很難學(xué)習(xí)的深層結(jié)構(gòu)來說,這是非常重要的),減少了權(quán)值的數(shù)量。 回想一下BP神經(jīng)網(wǎng)絡(luò)。BP網(wǎng)絡(luò)每一層節(jié)點是一個線性的一維排列狀態(tài),層與層的網(wǎng)絡(luò)節(jié)點之間是全連接的。這樣設(shè)想一下,如果BP網(wǎng)絡(luò)中層與層之間的節(jié)點連接不再是全連接,而是局部連接的。這樣,就是一種最簡單的一維卷積網(wǎng)絡(luò)。如果我們把上述這個思路擴展到二維,這就是我們在大多數(shù)參考資料上看到的卷積神經(jīng)網(wǎng)絡(luò)。具體參看下圖: 上圖左:全連接網(wǎng)絡(luò)。如果我們有1000x1000像素

3、的圖像,有1百萬個隱層神經(jīng)元,每個隱層神經(jīng)元都連接圖像的每一個像素點,就有1000x1000x=1012個連接,也就是1012個權(quán)值參數(shù)。 上圖右:局部連接網(wǎng)絡(luò),每一個節(jié)點與上層節(jié)點同位置附件10x10的窗口相連接,則1百萬個隱層神經(jīng)元就只有100w乘以100,即108個參數(shù)。其權(quán)值連接個數(shù)比原來減少了四個數(shù)量級。 根據(jù)BP網(wǎng)絡(luò)信號前向傳遞過程,我們可以很容易計算網(wǎng)絡(luò)節(jié)點的輸出。例如,對于上圖中被標注為紅色節(jié)點的凈輸入,就等于所有與紅線相連接的上一層神經(jīng)元節(jié)點值與紅色線表示的權(quán)值之積的累加。這樣的計算過程,很多書上稱其為卷積。 事實上,對于數(shù)字濾波而言,其濾波器的系數(shù)通常是對稱的。否則,卷積的

4、計算需要先反向?qū)φ?,然后進行乘累加的計算。上述神經(jīng)網(wǎng)絡(luò)權(quán)值滿足對稱嗎?我想答案是否定的!所以,上述稱其為卷積運算,顯然是有失偏頗的。但這并不重要,僅僅是一個名詞稱謂而已。只是,搞信號處理的人,在初次接觸卷積神經(jīng)網(wǎng)絡(luò)的時候,帶來了一些理解上的誤區(qū)。 卷積神經(jīng)網(wǎng)絡(luò)另外一個特性是權(quán)值共享。例如,就上面右邊那幅圖來說,權(quán)值共享,也就是說所有的紅色線標注的連接權(quán)值相同。這一點,初學(xué)者容易產(chǎn)生誤解。 上面描述的只是單層網(wǎng)絡(luò)結(jié)構(gòu),前A&TShannon Lab 的 Yann LeCun等人據(jù)此提出了基于卷積神經(jīng)網(wǎng)絡(luò)的一個文字識別系統(tǒng) LeNet-5。該系統(tǒng)90年代就被用于銀行手寫數(shù)字的識別。2、 CNN的結(jié)

5、構(gòu)卷積網(wǎng)絡(luò)是為識別二維形狀而特殊設(shè)計的一個多層感知器,這種網(wǎng)絡(luò)結(jié)構(gòu)對平移、比例縮放、傾斜或者共他形式的變形具有高度不變性。這些良好的性能是網(wǎng)絡(luò)在有監(jiān)督方式下學(xué)會的,網(wǎng)絡(luò)的結(jié)構(gòu)主要有稀疏連接和權(quán)值共享兩個特點,包括如下形式的約束:1、特征提取。每一個神經(jīng)元從上一層的局部接受域得到突觸輸人,因而迫使它提取局部特征。一旦一個特征被提取出來,只要它相對于其他特征的位置被近似地保留下來,它的精確位置就變得沒有那么重要了。2 、特征映射。網(wǎng)絡(luò)的每一個計算層都是由多個特征映射組成的,每個特征映射都是平面形式的。平面中單獨的神經(jīng)元在約束下共享相同的突觸權(quán)值集,這種結(jié)構(gòu)形式具有如下的有益效果:a.平移不變性。b

6、.自由參數(shù)數(shù)量的縮減(通過權(quán)值共享實現(xiàn))。3、子抽樣。每個卷積層后面跟著一個實現(xiàn)局部平均和子抽樣的計算層,由此特征映射的分辨率降低。這種操作具有使特征映射的輸出對平移和其他形式的變形的敏感度下降的作用。卷積神經(jīng)網(wǎng)絡(luò)是一個多層的神經(jīng)網(wǎng)絡(luò),每層由多個二維平面組成,而每個平面由多個獨立神經(jīng)元組成。 圖:卷積神經(jīng)網(wǎng)絡(luò)的概念示范:輸入圖像通過和三個可訓(xùn)練的濾波器和可加偏置進行卷積,卷積后在C1層產(chǎn)生三個特征映射圖,然后特征映射圖中每組的四個像素再進行求和,加權(quán)值,加偏置,通過一個Sigmoid函數(shù)得到三個S2層的特征映射圖。這些映射圖再進過濾波得到C3層。這個層級結(jié)構(gòu)再和S2一樣產(chǎn)生S4。最終,這些像素

7、值被光柵化,并連接成一個向量輸入到傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),得到輸出。 一般地,C層為特征提取層,每個神經(jīng)元的輸入與前一層的局部感受野相連,并提取該局部的特征,一旦該局部特征被提取后,它與其他特征間的位置關(guān)系也隨之確定下來;S層是特征映射層,網(wǎng)絡(luò)的每個計算層由多個特征映射組成,每個特征映射為一個平面,平面上所有神經(jīng)元的權(quán)值相等。特征映射結(jié)構(gòu)采用影響函數(shù)核小的sigmoid函數(shù)作為卷積網(wǎng)絡(luò)的激活函數(shù),使得特征映射具有位移不變性。 此外,由于一個映射面上的神經(jīng)元共享權(quán)值,因而減少了網(wǎng)絡(luò)自由參數(shù)的個數(shù),降低了網(wǎng)絡(luò)參數(shù)選擇的復(fù)雜度。卷積神經(jīng)網(wǎng)絡(luò)中的每一個特征提取層(C-層)都緊跟著一個用來求局部平均與二次提取的

8、計算層(S-層),這種特有的兩次特征提取結(jié)構(gòu)使網(wǎng)絡(luò)在識別時對輸入樣本有較高的畸變?nèi)萑棠芰Α?.1稀疏連接(SparseConnectivity)卷積網(wǎng)絡(luò)通過在相鄰兩層之間強制使用局部連接模式來利用圖像的空間局部特性,在第m層的隱層單元只與第m-1層的輸入單元的局部區(qū)域有連接,第m-1層的這些局部區(qū)域被稱為空間連續(xù)的接受域。我們可以將這種結(jié)構(gòu)描述如下:設(shè)第m-1層為視網(wǎng)膜輸入層,第m層的接受域的寬度為3,也就是說該層的每個單元與且僅與輸入層的3個相鄰的神經(jīng)元相連,第m層與第m+1層具有類似的鏈接規(guī)則,如下圖所示。 可以看到m+1層的神經(jīng)元相對于第m層的接受域的寬度也為3,但相對于輸入層的接受域為

9、5,這種結(jié)構(gòu)將學(xué)習(xí)到的過濾器(對應(yīng)于輸入信號中被最大激活的單元)限制在局部空間模式(因為每個單元對它接受域外的variation不做反應(yīng))。從上圖也可以看出,多個這樣的層堆疊起來后,會使得過濾器(不再是線性的)逐漸成為全局的(也就是覆蓋到了更大的視覺區(qū)域)。例如上圖中第m+1層的神經(jīng)元可以對寬度為5的輸入進行一個非線性的特征編碼。2.2權(quán)值共享(SharedWeights)在卷積網(wǎng)絡(luò)中,每個稀疏過濾器hi通過共享權(quán)值都會覆蓋整個可視域,這些共享權(quán)值的單元構(gòu)成一個特征映射,如下圖所示。 在圖中,有3個隱層單元,他們屬于同一個特征映射。同種顏色的鏈接的權(quán)值是相同的,我們?nèi)匀豢梢允褂锰荻认陆档姆椒▉?/p>

10、學(xué)習(xí)這些權(quán)值,只需要對原始算法做一些小的改動,這里共享權(quán)值的梯度是所有共享參數(shù)的梯度的總和。我們不禁會問為什么要權(quán)重共享呢?一方面,重復(fù)單元能夠?qū)μ卣鬟M行識別,而不考慮它在可視域中的位置。另一方面,權(quán)值共享使得我們能更有效的進行特征抽取,因為它極大的減少了需要學(xué)習(xí)的自由變量的個數(shù)。通過控制模型的規(guī)模,卷積網(wǎng)絡(luò)對視覺問題可以具有很好的泛化能力。舉例講解: 上面聊到,好像CNN一個牛逼的地方就在于通過感受野和權(quán)值共享減少了神經(jīng)網(wǎng)絡(luò)需要訓(xùn)練的參數(shù)的個數(shù)。那究竟是啥的呢? 下圖左:如果我們有1000x1000像素的圖像,有1百萬個隱層神經(jīng)元,那么他們?nèi)B接的話(每個隱層神經(jīng)元都連接圖像的每一個像素點)

11、,就有1000x1000x=1012個連接,也就是1012個權(quán)值參數(shù)。然而圖像的空間聯(lián)系是局部的,就像人是通過一個局部的感受野去感受外界圖像一樣,每一個神經(jīng)元都不需要對全局圖像做感受,每個神經(jīng)元只感受局部的圖像區(qū)域,然后在更高層,將這些感受不同局部的神經(jīng)元綜合起來就可以得到全局的信息了。這樣,我們就可以減少連接的數(shù)目,也就是減少神經(jīng)網(wǎng)絡(luò)需要訓(xùn)練的權(quán)值參數(shù)的個數(shù)了。如下圖右:假如局部感受野是10x10,隱層每個感受野只需要和這10x10的局部圖像相連接,所以1百萬個隱層神經(jīng)元就只有一億個連接,即108個參數(shù)。比原來減少了四個0(數(shù)量級),這樣訓(xùn)練起來就沒那么費力了,但還是感覺很多的啊,那還有啥辦

12、法沒? 我們知道,隱含層的每一個神經(jīng)元都連接10x10個圖像區(qū)域,也就是說每一個神經(jīng)元存在10x10=100個連接權(quán)值參數(shù)。那如果我們每個神經(jīng)元這100個參數(shù)是相同的呢?也就是說每個神經(jīng)元用的是同一個卷積核去卷積圖像。這樣我們就只有多少個參數(shù)?只有100個參數(shù)??!親!不管你隱層的神經(jīng)元個數(shù)有多少,兩層間的連接我只有100個參數(shù)??!親!這就是權(quán)值共享??!親!這就是卷積神經(jīng)網(wǎng)絡(luò)的主打賣點??!親!(有點煩了,呵呵)也許你會問,這樣做靠譜嗎?為什么可行呢?這個共同學(xué)習(xí)。 好了,你就會想,這樣提取特征也忒不靠譜吧,這樣你只提取了一種特征?。繉α?,真聰明,我們需要提取多種特征對不?假如一種濾波器,也就是一

13、種卷積核就是提出圖像的一種特征,例如某個方向的邊緣。那么我們需要提取不同的特征,怎么辦,加多幾種濾波器不就行了嗎?對了。所以假設(shè)我們加到100種濾波器,每種濾波器的參數(shù)不一樣,表示它提出輸入圖像的不同特征,例如不同的邊緣。這樣每種濾波器去卷積圖像就得到對圖像的不同特征的放映,我們稱之為Feature Map。所以100種卷積核就有100個Feature Map。這100個Feature Map就組成了一層神經(jīng)元。到這個時候明了了吧。我們這一層有多少個參數(shù)了?100種卷積核x每種卷積核共享100個參數(shù)=100x100=10K,也就是1萬個參數(shù)。才1萬個參數(shù)啊!親?。ㄓ謥砹?,受不了了?。┮娤聢D右:

14、不同的顏色表達不同的濾波器。 嘿喲,遺漏一個問題了。剛才說隱層的參數(shù)個數(shù)和隱層的神經(jīng)元個數(shù)無關(guān),只和濾波器的大小和濾波器種類的多少有關(guān)。那么隱層的神經(jīng)元個數(shù)怎么確定呢?它和原圖像,也就是輸入的大小(神經(jīng)元個數(shù))、濾波器的大小和濾波器在圖像中的滑動步長都有關(guān)!例如,我的圖像是1000x1000像素,而濾波器大小是10x10,假設(shè)濾波器沒有重疊,也就是步長為10,這樣隱層的神經(jīng)元個數(shù)就是(1000x1000 )/ (10x10)=100x100個神經(jīng)元了,假設(shè)步長是8,也就是卷積核會重疊兩個像素,那么我就不算了,思想懂了就好。注意了,這只是一種濾波器,也就是一個Feature Map的神經(jīng)元個數(shù)哦

15、,如果100個Feature Map就是100倍了。由此可見,圖像越大,神經(jīng)元個數(shù)和需要訓(xùn)練的權(quán)值參數(shù)個數(shù)的貧富差距就越大。需要注意的一點是,上面的討論都沒有考慮每個神經(jīng)元的偏置部分。所以權(quán)值個數(shù)需要加1 。這個也是同一種濾波器共享的。 總之,卷積網(wǎng)絡(luò)的核心思想是將:局部感受野、權(quán)值共享(或者權(quán)值復(fù)制)以及時間或空間亞采樣這三種結(jié)構(gòu)思想結(jié)合起來獲得了某種程度的位移、尺度、形變不變性。2.3TheFullModel 卷積神經(jīng)網(wǎng)絡(luò)是一個多層的神經(jīng)網(wǎng)絡(luò),每層由多個二維平面組成,而每個平面由多個獨立神經(jīng)元組成。網(wǎng)絡(luò)中包含一些簡單元和復(fù)雜元,分別記為S-元和C-元。S-元聚合在一起組成S-面,S-面聚合

16、在一起組成S-層,用Us表示。C-元、C-面和C-層(Us)之間存在類似的關(guān)系。網(wǎng)絡(luò)的任一中間級由S-層與C-層串接而成,而輸入級只含一層,它直接接受二維視覺模式,樣本特征提取步驟已嵌入到卷積神經(jīng)網(wǎng)絡(luò)模型的互聯(lián)結(jié)構(gòu)中。一般地,Us為特征提取層(子采樣層),每個神經(jīng)元的輸入與前一層的局部感受野相連,并提取該局部的特征,一旦該局部特征被提取后,它與其他特征間的位置關(guān)系也隨之確定下來;Uc是特征映射層(卷積層),網(wǎng)絡(luò)的每個計算層由多個特征映射組成,每個特征映射為一個平面,平面上所有神經(jīng)元的權(quán)值相等。特征映射結(jié)構(gòu)采用影響函數(shù)核小的sigmoid函數(shù)作為卷積網(wǎng)絡(luò)的激活函數(shù),使得特征映射具有位移不變性。此

17、外,由于一個映射面上的神經(jīng)元共享權(quán)值,因而減少了網(wǎng)絡(luò)自由參數(shù)的個數(shù),降低了網(wǎng)絡(luò)參數(shù)選擇的復(fù)雜度。卷積神經(jīng)網(wǎng)絡(luò)中的每一個特征提取層(S-層)都緊跟著一個用來求局部平均與二次提取的計算層(C-層),這種特有的兩次特征提取結(jié)構(gòu)使網(wǎng)絡(luò)在識別時對輸入樣本有較高的畸變?nèi)萑棠芰?。下圖是一個卷積網(wǎng)絡(luò)的實例,在博文”Deep Learning模型之:CNN卷積神經(jīng)網(wǎng)絡(luò)(二)文字識別系統(tǒng)LeNet-5“中有詳細講解: 圖中的卷積網(wǎng)絡(luò)工作流程如下,輸入層由3232個感知節(jié)點組成,接收原始圖像。然后,計算流程在卷積和子抽樣之間交替進行,如下所述: 第一隱藏層進行卷積,它由8個特征映射組成,每個特征映射由2828個神經(jīng)

18、元組成,每個神經(jīng)元指定一個55的接受域; 第二隱藏層實現(xiàn)子抽樣和局部平均,它同樣由8個特征映射組成,但其每個特征映射由1414個神經(jīng)元組成。每個神經(jīng)元具有一個22的接受域,一個可訓(xùn)練系數(shù),一個可訓(xùn)練偏置和一個sigmoid激活函數(shù)。可訓(xùn)練系數(shù)和偏置控制神經(jīng)元的操作點。 第三隱藏層進行第二次卷積,它由20個特征映射組成,每個特征映射由1010個神經(jīng)元組成。該隱藏層中的每個神經(jīng)元可能具有和下一個隱藏層幾個特征映射相連的突觸連接,它以與第一個卷積層相似的方式操作。 第四個隱藏層進行第二次子抽樣和局部平均汁算。它由20個特征映射組成,但每個特征映射由55個神經(jīng)元組成,它以與第一次抽樣相似的方式操作。

19、第五個隱藏層實現(xiàn)卷積的最后階段,它由120個神經(jīng)元組成,每個神經(jīng)元指定一個55的接受域。 最后是個全連接層,得到輸出向量。 相繼的計算層在卷積和抽樣之間的連續(xù)交替,我們得到一個“雙尖塔”的效果,也就是在每個卷積或抽樣層,隨著空間分辨率下降,與相應(yīng)的前一層相比特征映射的數(shù)量增加。卷積之后進行子抽樣的思想是受到動物視覺系統(tǒng)中的“簡單的”細胞后面跟著“復(fù)雜的”細胞的想法的啟發(fā)而產(chǎn)生的。圖中所示的多層感知器包含近似個突觸連接,但只有大約2600個自由參數(shù)(每個特征映射為一個平面,平面上所有神經(jīng)元的權(quán)值相等)。自由參數(shù)在數(shù)量上顯著地減少是通過權(quán)值共享獲得的,學(xué)習(xí)機器的能力(以VC維的形式度量)因而下降,

20、這又提高它的泛化能力。而且它對自由參數(shù)的調(diào)整通過反向傳播學(xué)習(xí)的隨機形式來實現(xiàn)。另一個顯著的特點是使用權(quán)值共享使得以并行形式實現(xiàn)卷積網(wǎng)絡(luò)變得可能。這是卷積網(wǎng)絡(luò)對全連接的多層感知器而言的另一個優(yōu)點。3、 CNN的訓(xùn)練 神經(jīng)網(wǎng)絡(luò)用于模式識別的主流是有指導(dǎo)學(xué)習(xí)網(wǎng)絡(luò),無指導(dǎo)學(xué)習(xí)網(wǎng)絡(luò)更多的是用于聚類分析。對于有指導(dǎo)的模式識別,由于任一樣本的類別是已知的,樣本在空間的分布不再是依據(jù)其自然分布傾向來劃分,而是要根據(jù)同類樣本在空間的分布及不同類樣本之間的分離程度找一種適當?shù)目臻g劃分方法,或者找到一個分類邊界,使得不同類樣本分別位于不同的區(qū)域內(nèi)。這就需要一個長時間且復(fù)雜的學(xué)習(xí)過程,不斷調(diào)整用以劃分樣本空間的分類邊

21、界的位置,使盡可能少的樣本被劃分到非同類區(qū)域中。 卷積網(wǎng)絡(luò)在本質(zhì)上是一種輸入到輸出的映射,它能夠?qū)W習(xí)大量的輸入與輸出之間的映射關(guān)系,而不需要任何輸入和輸出之間的精確的數(shù)學(xué)表達式,只要用已知的模式對卷積網(wǎng)絡(luò)加以訓(xùn)練,網(wǎng)絡(luò)就具有輸入輸出對之間的映射能力。卷積網(wǎng)絡(luò)執(zhí)行的是有導(dǎo)師訓(xùn)練,所以其樣本集是由形如:(輸入向量,理想輸出向量)的向量對構(gòu)成的。所有這些向量對,都應(yīng)該是來源于網(wǎng)絡(luò)即將模擬的系統(tǒng)的實際“運行”結(jié)果。它們可以是從實際運行系統(tǒng)中采集來的。在開始訓(xùn)練前,所有的權(quán)都應(yīng)該用一些不同的小隨機數(shù)進行初始化。“小隨機數(shù)”用來保證網(wǎng)絡(luò)不會因權(quán)值過大而進入飽和狀態(tài),從而導(dǎo)致訓(xùn)練失?。弧安煌庇脕肀WC網(wǎng)絡(luò)可

22、以正常地學(xué)習(xí)。實際上,如果用相同的數(shù)去初始化權(quán)矩陣,則網(wǎng)絡(luò)無能力學(xué)習(xí)。 訓(xùn)練算法與傳統(tǒng)的BP算法差不多。主要包括4步,這4步被分為兩個階段:第一階段,向前傳播階段:a)從樣本集中取一個樣本(X,Yp),將X輸入網(wǎng)絡(luò);b)計算相應(yīng)的實際輸出Op。 在此階段,信息從輸入層經(jīng)過逐級的變換,傳送到輸出層。這個過程也是網(wǎng)絡(luò)在完成訓(xùn)練后正常運行時執(zhí)行的過程。在此過程中,網(wǎng)絡(luò)執(zhí)行的是計算(實際上就是輸入與每層的權(quán)值矩陣相點乘,得到最后的輸出結(jié)果): Op=Fn(F2(F1(XpW(1)W(2)W(n)第二階段,向后傳播階段a)算實際輸出Op與相應(yīng)的理想輸出Yp的差;b)按極小化誤差的方法反向傳播調(diào)整權(quán)矩陣。

23、4、 CNN的學(xué)習(xí)總體而言,卷積網(wǎng)絡(luò)可以簡化為下圖所示模型: 其中,input到C1、S4到C5、C5到output是全連接,C1到S2、C3到S4是一一對應(yīng)的連接,S2到C3為了消除網(wǎng)絡(luò)對稱性,去掉了一部分連接,可以讓特征映射更具多樣性。需要注意的是C5卷積核的尺寸要和S4的輸出相同,只有這樣才能保證輸出是一維向量。4.1卷積層的學(xué)習(xí)卷積層的典型結(jié)構(gòu)如下圖所示:卷積層的前饋運算是通過如下算法實現(xiàn)的:卷積層的輸出=Sigmoid(Sum(卷積)+偏移量)其中卷積核和偏移量都是可訓(xùn)練的。下面是其核心代碼:ConvolutionLayer:fprop(input,output) /取得卷積核的個數(shù)

24、 int n=kernel.GetDim(0); for (int i=0;in;i+) /第i個卷積核對應(yīng)輸入層第a個特征映射,輸出層的第b個特征映射 /這個卷積核可以形象的看作是從輸入層第a個特征映射到輸出層的第b個特征映射的一個鏈接 int a=tablei0, b=tablei1; /用第i個卷積核和輸入層第a個特征映射做卷積 convolution = Conv(inputa,kerneli); /把卷積結(jié)果求和 sumb +=convolution; for (i=0;i(int)bias.size();i+) /加上偏移量 sumi += biasi; /調(diào)用Sigmoid函數(shù)

25、output = Sigmoid(sum); 其中,input是n1n2n3的矩陣,n1是輸入層特征映射的個數(shù),n2是輸入層特征映射的寬度,n3是輸入層特征映射的高度。output,sum,convolution,bias是n1(n2-kw+1)(n3-kh+1)的矩陣,kw,kh是卷積核的寬度高度(圖中是55)。kernel是卷積核矩陣。table是連接表,即如果第a輸入和第b個輸出之間有連接,table里就會有a,b這一項,而且每個連接都對應(yīng)一個卷積核。卷積層的反饋運算的核心代碼如下:ConvolutionLayer:bprop(input,output,in_dx,out_dx) /梯度

26、通過DSigmoid反傳 sum_dx = DSigmoid(out_dx); /計算bias的梯度 for (i=0;ibias.size();i+) bias_dxi = sum_dxi; /取得卷積核的個數(shù) int n=kernel.GetDim(0); for (int i=0;in;i+) int a=tablei0,b=tablei1; /用第i個卷積核和第b個輸出層反向卷積(即輸出層的一點乘卷積模板返回給輸入層),并把結(jié)果累加到第a個輸入層 input_dxa += DConv(sum_dxb,kerneli); /用同樣的方法計算卷積模板的梯度 kernel_dxi += DC

27、onv(sum_dxb,inputa); 其中in_dx,out_dx的結(jié)構(gòu)和input,output相同,代表的是相應(yīng)點的梯度。4.2子采樣層的學(xué)習(xí)子采樣層的典型結(jié)構(gòu)如下圖所示:類似的子采樣層的輸出的計算式為:輸出=Sigmoid(采樣*權(quán)重+偏移量)其核心代碼如下:SubSamplingLayer:fprop(input,output) int n1= input.GetDim(0); int n2= input.GetDim(1); int n3= input.GetDim(2); for (int i=0;in1;i+) for (int j=0;jn2;j+) for (int k=

28、0;kn3;k+) /coeff 是可訓(xùn)練的權(quán)重,sw 、sh 是采樣窗口的尺寸。 subij/swk/sh += inputijk*coeffi; for (i=0;in1;i+) /加上偏移量 sumi = subi + biasi; output = Sigmoid(sum);子采樣層的反饋運算的核心代碼如下:SubSamplingLayer:bprop(input,output,in_dx,out_dx) /梯度通過DSigmoid反傳 sum_dx = DSigmoid(out_dx); /計算bias和coeff的梯度 for (i=0;in1;i+) coeff_dxi = 0;

29、 bias_dxi = 0; for (j=0;jn2/sw;j+) for (k=0;kn3/sh;k+) coeff_dxi += subjk*sum_dxijk; bias_dxi += sum_dxijk); for (i=0;in1;i+) for (j=0;jn2;j+) for (k=0;kn3;k+) in_dxijk = coeffi*sum_dxij/swk/sh; 5、CNN的優(yōu)點卷積神經(jīng)網(wǎng)絡(luò)CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。由于CNN的特征檢測層通過訓(xùn)練數(shù)據(jù)進行學(xué)習(xí),所以在使用CNN時,避免了顯式的特征抽取,而隱式地從訓(xùn)練數(shù)據(jù)中進行學(xué)習(xí);再者由

30、于同一特征映射面上的神經(jīng)元權(quán)值相同,所以網(wǎng)絡(luò)可以并行學(xué)習(xí),這也是卷積網(wǎng)絡(luò)相對于神經(jīng)元彼此相連網(wǎng)絡(luò)的一大優(yōu)勢。卷積神經(jīng)網(wǎng)絡(luò)以其局部權(quán)值共享的特殊結(jié)構(gòu)在語音識別和圖像處理方面有著獨特的優(yōu)越性,其布局更接近于實際的生物神經(jīng)網(wǎng)絡(luò),權(quán)值共享降低了網(wǎng)絡(luò)的復(fù)雜性,特別是多維輸入向量的圖像可以直接輸入網(wǎng)絡(luò)這一特點避免了特征提取和分類過程中數(shù)據(jù)重建的復(fù)雜度。 流的分類方式幾乎都是基于統(tǒng)計特征的,這就意味著在進行分辨前必須提取某些特征。然而,顯式的特征提取并不容易,在一些應(yīng)用問題中也并非總是可靠的。卷積神經(jīng)網(wǎng)絡(luò),它避免了顯式的特征取樣,隱式地從訓(xùn)練數(shù)據(jù)中進行學(xué)習(xí)。這使得卷積神經(jīng)網(wǎng)絡(luò)明顯有別于其他基于神經(jīng)網(wǎng)絡(luò)的分類器,通過結(jié)構(gòu)重組和減少權(quán)值將特征提取功能融合進多層感知器。它可以直接處理灰度圖片,能夠直接用于處理基于圖像的分類。 卷積網(wǎng)絡(luò)較一般神經(jīng)網(wǎng)絡(luò)在圖像處理方面有如下優(yōu)點: a)輸入圖像和網(wǎng)絡(luò)的拓撲結(jié)構(gòu)能很好的吻合;b)特征提取和模式分類同時進行,并同時在訓(xùn)練中產(chǎn)生;c)權(quán)重共享可以減少網(wǎng)絡(luò)的訓(xùn)練參數(shù),使神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)變得更簡單,適應(yīng)性更強

溫馨提示

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

評論

0/150

提交評論