1.卷積神經(jīng)網(wǎng)絡(luò)(CNN)發(fā)展歷史
(1)CNN最早可以追溯到1968Hubel和Wiesel的論文,這篇論文講述貓和猴的視覺皮層含有對視野的小區(qū)域單獨(dú)反應(yīng)的神經(jīng)元,如果眼睛沒有移動,則視覺刺激影響單個(gè)神經(jīng)元的視覺空間區(qū)域被稱為其感受野(Receptive Field)。相鄰細(xì)胞具有相似和重疊的感受野。感受野大小和位置在皮層之間系統(tǒng)地變化,形成完整的視覺空間圖。這個(gè)為CNN的局部感知奠定了一個(gè)基礎(chǔ)。
(2)然后是1980年,神經(jīng)感知機(jī)(neocognitron)的提出,標(biāo)志了第一個(gè)初始的卷積神經(jīng)網(wǎng)絡(luò)的誕生,也是感受野概念在人工神經(jīng)網(wǎng)絡(luò)領(lǐng)域的首次應(yīng)用,神經(jīng)認(rèn)知機(jī)將一個(gè)視覺模式分解成許多子模式(特征),然后進(jìn)入分層遞階式相連的特征平面進(jìn)行處理。
(3)在然后1988年,時(shí)不變神經(jīng)網(wǎng)絡(luò)(Shift-invariant neural network)的提出,將卷積神經(jīng)網(wǎng)絡(luò)的功能進(jìn)行了一次提高,使其能夠在即使物體有位移或輕微變形的時(shí)候,也能完成識別。
(4)卷積神經(jīng)網(wǎng)絡(luò)的前饋架構(gòu)在神經(jīng)抽象金字塔(Neural abstraction pyramid)中被橫向和反饋連接擴(kuò)展。所產(chǎn)生的復(fù)現(xiàn)卷積網(wǎng)絡(luò)允許靈活地并入情景信息以迭代地解決局部模糊。與以前的模型相反,產(chǎn)生了最高分辨率的圖像輸出。
(5)最后,2005出現(xiàn)了一篇由Hinton教授等人實(shí)現(xiàn)CNN的paper,標(biāo)志了一種實(shí)現(xiàn)CNN更有效的方式,之后在2012年ImageNet大賽中CNN由于其高精確度脫穎而出,于是,深度學(xué)習(xí)正式進(jìn)入人們的視野[1]。
2.卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
? CNN由輸入和輸出層以及多個(gè)隱含層組成,以經(jīng)典的LeNet5卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)為例,隱含層可分為卷積層,池化層、RELU層、全連通層、Dropout層,LeNet5的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示,AlexNet的信號正向傳播過程為輸入層——>第一層卷積層——>第一層池化層——>第二層卷積層——>第二層池化層——>三層全連通層——>輸出層。

具體結(jié)構(gòu)單位如下:
(1)輸入層:與普通神經(jīng)網(wǎng)絡(luò)的輸入層大同小異,只不過CNN的輸出層一般是二維向量,可以有高度,RGB圖像也可以作為輸入。
(2)卷積層:卷積層作為卷積神經(jīng)網(wǎng)絡(luò)中的重要組成部分,其實(shí)在信號處理學(xué)科中已經(jīng)非常成熟,卷積過程很好地模擬了人的視覺神經(jīng)系統(tǒng)的過程,在卷積神經(jīng)網(wǎng)絡(luò)中,卷積操作主要是為了提取圖像具有代表性的特征。其主要參數(shù)為一組可學(xué)習(xí)的濾波器(filter)或者內(nèi)核(kernels)組成,卷積操作動圖如圖2所示:

? ? ? ?圖3是一個(gè)實(shí)例的整個(gè)卷積過程,從圖3中可以看出,我們定義了一個(gè)6*6的圖像輸出信號和一個(gè)3*3的卷積核(filter),以左上角藍(lán)色部分的卷積操作為例,此處的卷積操作為3*1+0*0+1*(-1)+1*1+5*0+8*(-1)+2*1+7*0+2*(-1)=-5,假設(shè)卷積的歩長為1(也就是第二次卷積的時(shí)候向右滑動一個(gè)單位),那下一步的卷積操作就是0*1+1*0+2*(-1)+1*5+8*0+9*(-1)+7*1+2*0+5*(-1)=-4,依次類推,可以得到等號后面的4*4的矩陣,輸出矩陣的大小計(jì)算由如下公式:假設(shè)輸出圖像大小為n*n與過濾器大小為f*f,輸出圖像大小則為(n?f+1)?(n?f+1)。

? ? ?在卷積神經(jīng)網(wǎng)絡(luò)中把這些過濾器當(dāng)成我們要學(xué)習(xí)的參數(shù),卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的目標(biāo)就是去理解過濾器的參數(shù)。
3.池化層
? ? ? ?池化層又可以被稱為下采樣層,它的作用主要是用來減少數(shù)據(jù)的處理量,經(jīng)過池化層處理后,即能勾減少需要處理的數(shù)據(jù)量,又能很好地保存輸入信號的特征信息。
? ? ? ?通常池化層是每鄰域四個(gè)像素中的最大值變?yōu)橐粋€(gè)像素(這就是下一講要降的max_pooling),為什么可以這么做呢?這是因?yàn)榫矸e已經(jīng)提取出特征,相鄰區(qū)域的特征是類似,近乎不變,這是池化只是選出最能表征特征的像素,縮減了數(shù)據(jù)量,同時(shí)保留了特征,何樂而不為呢?池化層的作用可以描述為模糊圖像,丟掉了一些不是那么重要的特征[2],下面用圖3可以描述一個(gè)池化操作的過程。

? ? ? ?從圖3中可以看出原輸入信號為4*4的矩陣,左上角橘色的部分為2*2的一個(gè)子矩陣,將該子矩陣中的最大特征作為該子矩陣的代表特征,其他部分依次經(jīng)過池化處理后,最終得到了一個(gè)2*2的矩陣,這樣,就大大地減少了整個(gè)神經(jīng)網(wǎng)絡(luò)處理的數(shù)據(jù)量。
4.RELU層
? ? ? 線性整流函數(shù)(Rectified Linear Unit, ReLU),又稱修正線性單元, 是一種人工神經(jīng)網(wǎng)絡(luò)中常用的激活函數(shù)(activation function),通常指代以斜坡函數(shù)及其變種為代表的非線性函數(shù)。
? ? ? ? 比較常用的線性整流函數(shù)有斜坡函數(shù) f(x) = max(0, x),以及帶泄露整流函數(shù) (Leaky ReLU),其中為x神經(jīng)元(Neuron)的輸入。線性整流被認(rèn)為有一定的生物學(xué)原理,并且由于在實(shí)踐中通常有著比其他常用激活函數(shù)(譬如邏輯函數(shù))更好的效果,而被如今的深度神經(jīng)網(wǎng)絡(luò)廣泛使用于諸如圖像識別等計(jì)算機(jī)視覺人工智能領(lǐng)域,其函數(shù)曲線如圖4所示:

5.全連通層
? ? ? ?該層就是一個(gè)常規(guī)的神經(jīng)網(wǎng)絡(luò),它的作用是對經(jīng)過多次卷積層和多次池化層所得出來的高級特征進(jìn)行全連接(全連接就是常規(guī)神經(jīng)網(wǎng)絡(luò)的性質(zhì)),算出最后的預(yù)測值。
6.Dropout層(也稱為扔掉層)
? ? ? ?這個(gè)思路參考了人的大腦的實(shí)際運(yùn)行狀態(tài),研究表明大腦在分析圖像的過程中真正被激活的神經(jīng)元并不多,具體哪些被激活靠得就是先前的學(xué)習(xí),和留下來的記憶。那如果沒有這個(gè)dropout層,我們的CNN在判斷所有的圖像是相當(dāng)于所有的結(jié)點(diǎn)都激活了,這樣和現(xiàn)實(shí)的情況不符,所以我們要模擬大腦,把一下沒什么用的結(jié)點(diǎn)給扔掉[3]。
? ? ? ?這個(gè)層的作用是加快運(yùn)算速度,防止過擬合,讓網(wǎng)絡(luò)更加的普適,更加有所謂的“魯棒性”,Dropout是在訓(xùn)練過程中以一定概率1-p將隱含層節(jié)點(diǎn)的輸出值清0,而用bp更新權(quán)值時(shí),不再更新與該節(jié)點(diǎn)相連的權(quán)值。什么意思,就是這個(gè)就是個(gè)概率問題,和權(quán)值的大小,激活程度無關(guān)哦,被抽中的結(jié)點(diǎn)無條件被丟掉。圖5就是Dropout層的工作原理[4]。

7.輸出層
? ? ? ? 跟大部分的神經(jīng)網(wǎng)絡(luò)的輸出層一樣,此處不再過多介紹。
參考:
[1]?http://www.cnblogs.com/fydeblog/p/7450413.html
[2]https://www.cnblogs.com/alexanderkun/p/6918045.html
[3]https://blog.csdn.net/ice_actor/article/details/78648780
[4]https://blog.csdn.net/ln_ios/article/details/80538570
[5]https://en.wikipedia.org/wiki/Convolutional_neural_network