摘要:卷積神經(jīng)網(wǎng)絡(luò)已經(jīng)斷斷續(xù)續(xù)的學(xué)了大半年了,卻發(fā)現(xiàn)自己還是一頭霧水,連基本的概念都沒搞清楚。將卷積神經(jīng)網(wǎng)絡(luò)的基本概念和原理理了一下,并整理出來,以供大家參考。
??卷積神經(jīng)網(wǎng)絡(luò)已經(jīng)斷斷續(xù)續(xù)的學(xué)了大半年了,卻發(fā)現(xiàn)自己還是一頭霧水,連基本的概念都沒搞清楚。這兩天在網(wǎng)上查了一些資料,看了一些教程。將卷積神經(jīng)網(wǎng)絡(luò)的基本概念和原理理了一下,并整理出來,以供大家參考。注:本文中有些結(jié)論是本人對卷積神經(jīng)網(wǎng)絡(luò)的理解和總結(jié),如有不正,還請各位大蝦指正!
1.卷積神經(jīng)網(wǎng)絡(luò)的概念??卷積神經(jīng)網(wǎng)絡(luò)是(Convolutional Neural Networks,CNN)是一類包含卷積計算且有深度結(jié)構(gòu)的前饋型神經(jīng)網(wǎng)絡(luò),是深度學(xué)習(xí)的代表算法之一。卷積神經(jīng)網(wǎng)絡(luò)是模仿生物神經(jīng)網(wǎng)絡(luò)的行為特征,他從信息處理的角度對人腦神經(jīng)元網(wǎng)絡(luò)進行抽象,建立某種簡單數(shù)學(xué)模型,按不同的連接方式組成不同的網(wǎng)絡(luò)。
??卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)成:
數(shù)據(jù)輸入/input-> 卷積層(卷積/CONV->激勵/RELU->池化/POOL ... n)->全連接/fullconnection->softmax/分類/歸一化->輸出2 數(shù)據(jù)輸入層
??數(shù)據(jù)輸入時,需要對原始數(shù)據(jù)圖像進行預(yù)處理,包括以下3各步驟:
??1.去均值;即將樣本的均值轉(zhuǎn)化為0.
??2.歸一化;即將樣本在各個維度上進行歸一化處理
??3.PCA/白化; PCA(principal components analysis),是一種降維和去除相關(guān)性的方法,它通過方差來評價特征的價值,認為方差大的特征包含信息多,應(yīng)予以保留。白化是將PCA去相關(guān)性之后將每一特征的方差歸一化到1
??在學(xué)習(xí)卷積層之前,先來了解一下卷積層相關(guān)的一些概念。
感受野(Receptive Field):
??卷積神經(jīng)網(wǎng)絡(luò)每一層輸出的特征圖(feature map)上的像素點在輸入圖片上映射的區(qū)域大小。通俗點講就是特征圖上一個點對應(yīng)輸入圖上的區(qū)域。
卷積核:
??卷積核就是圖像處理時,給定輸入圖像,在輸出圖像中每一個像素時輸入圖像中一個小區(qū)域中像素的加權(quán)平均,其中權(quán)值由一個函數(shù)定義,這個函數(shù)稱為卷積核,也就是下面說到的filter、濾波器
卷積深度:
??卷積層卷積的次數(shù)
卷積核大小:
??卷積核/濾波器做卷積時每次采樣的感受野的大小。卷積核大小可以指定為小于輸入圖像尺寸的任意值,卷積核越大,可提取的輸入特征越復(fù)雜。
步長/stride:
??定義了卷積核相鄰兩次掃過特征圖時位置的距離,卷積步長為1時,卷積核會逐個掃過特征圖的元素,步長為n時會在下一次掃描跳過n-1個像素。
填充/padding:
??對圖像做卷積時,nn的圖像每次卷積之后會生成(n-f+1)(n-f+1)特征,隨著卷積層數(shù)的增多,最終的卷積結(jié)果會一直縮小下去,最后變成0。這是因為在做卷積的時候邊緣像素使用的次數(shù)相對其它像素較少,導(dǎo)致卷積后邊緣特征的不斷弱化。為了解決這個問題,我們可以在圖片邊緣進行加0填充。稱為zero-padding。這樣padding操作就可以保證卷積前后寬高不變化。填充可以分為以下四種:
??1.有效填充(valid padding):即完全不使用填充,卷積核只允許訪問特征圖中包含完整感受野的位置。輸出的所有像素都是輸入中相同數(shù)量像素的函數(shù)。使用有效填充的卷積被稱為“窄卷積(narrow convolution)”,窄卷積輸出的特征圖尺寸為(L-f+1)/s。
??2.相同填充/半填充(same/half padding):只進行足夠的填充來保持輸出和輸入的特征圖尺寸相同。相同填充下特征圖的尺寸不會縮減但輸入像素中靠近邊界的部分相比于中間部分對于特征圖的影響更小,即存在邊界像素的欠表達。使用相同填充的卷積被稱為“等長卷積(equal-width convolution)”。
??3.全填充(full padding):進行足夠多的填充使得每個像素在每個方向上被訪問的次數(shù)相同。步長為1時,全填充輸出的特征圖尺寸為L+f-1,大于輸入值。使用全填充的卷積被稱為“寬卷積(wide convolution)”
??4.任意填充(arbitrary padding):介于有效填充和全填充之間,人為設(shè)定的填充,較少使用。
??卷積層參數(shù)包括卷積核大小、步長和填充,三者共同決定了卷積層輸出特征圖的尺寸,是卷積神經(jīng)網(wǎng)絡(luò)重要的超參數(shù)(注:超參數(shù)是在開始學(xué)習(xí)過程之前設(shè)置值的參數(shù))。
??1. 卷積的數(shù)學(xué)概念:
??卷積/convolution是通過兩個函數(shù)f和g生成第三個函數(shù)的一種數(shù)學(xué)方法,表征函數(shù)f與g經(jīng)過翻轉(zhuǎn)和和平移后重疊部分的面積,因此,卷積也就是具備了翻轉(zhuǎn)和平移不變性。
??2.卷積的作用
??通過指定大小的卷積核/濾波器(感受野大小通常為奇數(shù)1,3,5,7,...), 按一定步長對逐個掃描圖像做卷積,用來提取圖像特征。
??3.卷積操作
??做卷積時,使用卷積核ffNC的矩陣,NC為輸入圖像的channel數(shù),按固定步長s掃描輸入圖像進行卷積操作。如下圖所示,卷積核/濾波器將矩陣中的數(shù)據(jù)與掃描區(qū)域?qū)?yīng)的數(shù)據(jù)相乘,并累加得到的結(jié)果作為卷積輸出結(jié)果(栗子中輸入圖像和濾波器channel為1)。掃描完整個輸入圖像之后可以得到該圖像的卷積矩陣RW*RH。
??RW=[(NW+2p-f)/s + 1];
??RH=[(NH+2p-f)/s + 1];
??對一幅圖像進行特征提取的結(jié)果:
??從上圖可知,同樣的圖片,使用不同的卷積核,不同的卷積核/濾波器,會導(dǎo)致提取的特征點不一樣。
??1.池化的原理和作用
??在圖像中,相鄰位置的圖像像素具有很大的相關(guān)性。圖像在卷積之后圖像/特征的尺寸變化不大,由于圖像的相關(guān)性,導(dǎo)致卷積之后提取的圖像特征會有很大的相關(guān)性而導(dǎo)致產(chǎn)生很多冗余的特征。而池化則能夠?qū)μ卣鲌D像進行壓縮,一方面可以簡化網(wǎng)絡(luò)復(fù)雜度,另一方面可以保留圖像的主要特征。
??2.池化主要有兩種類型:
??最大池化
??池化時取區(qū)域像素的最大值作為該區(qū)域的池化結(jié)果,是目前比較通用的池化方法。
??平均池化
??池化時取區(qū)域像素的平均值作為該區(qū)域的池化結(jié)果,目前使用不多。
??3.池化的過程
??池化時,使用濾波器對輸入圖像進行掃描,在掃描區(qū)域內(nèi)取最大值(如果是平均池化則取區(qū)域內(nèi)的平均值)作為池化的結(jié)果,這樣不僅能壓縮特征圖像的大小,還能保留圖像的主要特征。濾波器使用給定的跨度對輸入圖像/特征進行掃描,并輸出結(jié)果區(qū)域內(nèi)的最大值作/平均值作為池化結(jié)果。如下圖所示:
??假設(shè)輸入圖像的寬是NW,高是NH,濾波器尺寸是ff,步長是s,池化輸出結(jié)果是RWRH。填充為P。那么
RW=[(NW-2p-f)/s+1];
RH=[(NH-2p-f)/s+1];
??如上圖所示,池化后圖像的特征數(shù)減少,可以有效的降低網(wǎng)絡(luò)的復(fù)雜度,同時保留圖像的主特征。有些類似于圖像的縮放,但有所不同的是,圖像縮放時所有的圖像特征都有有損失,但是最大池化會優(yōu)先保留圖像的主特征(最大值),從而到達更好的特征提取效果。
??激勵函數(shù)在神經(jīng)網(wǎng)絡(luò)的作用通俗上講就是將多個線性輸入轉(zhuǎn)換為非線性的關(guān)系。不使用激勵函數(shù)的話,神經(jīng)網(wǎng)絡(luò)每層都只做線性變換,多層輸入疊加后還是線性變化。因為線性模型的表達力不夠,激勵函數(shù)可以引入非線性因素。
??常見的激勵函數(shù):
??1.sigmoid
??如上圖所示,sigmoid函數(shù)將一個實數(shù)壓縮至0-1之間。當x非常大時,該函數(shù)無限接近1,當x為非常大的負數(shù)時,該函數(shù)無限接近0。sigmoid函數(shù)很好地解釋了神經(jīng)元受到刺激后是否會激活和向后傳遞的場景(0,沒有被激活,1,被完全激活),故在早期的神經(jīng)網(wǎng)絡(luò)中用得比較多。但是sigmoid函數(shù)容易出現(xiàn)梯度彌散(靠近輸出層的梯度大,參數(shù)更新快,靠近輸入層的梯度小,參數(shù)更新慢)或者梯度飽和(靠近輸出層的梯度小,參數(shù)更新慢,幾乎不再變化)。
??2.tanh
??如上圖所示,tanh(tanh(x)=sinh(x)/cosh(x))函數(shù)將輸入值壓縮至-1到1之間。tanh函數(shù)在特征相差明顯時會有很好的效果,在循環(huán)過程中會不斷擴大特征效果。該函數(shù)與sigmoid類似,也存在著梯度彌散或梯度飽和的缺點,它們的區(qū)別是,tanh函數(shù)是0均值的,因此在實際應(yīng)用中會比sigmoid更好。
??3.ReLU
??ReLU(Rectified Linear Unit),線性整流函數(shù),又叫修正線性單元。該函數(shù)被認為有一定的生物學(xué)原理,并且由于在實踐中通常有著比其他常用激活函數(shù)更好的效果,而被如今的深度神經(jīng)網(wǎng)絡(luò)廣泛使用于諸如圖像識別等計算機視覺人工智能領(lǐng)域。對于進入神經(jīng)元的輸入x,使用線性整流激活函數(shù)的神經(jīng)元會輸出max(0, wTx+b)。ReLU的缺點是比較脆弱,當一個非常大的梯度經(jīng)過ReLU神經(jīng)元時,更新參數(shù)后,這個神經(jīng)元再也不會被激活,導(dǎo)致所有流過這個神經(jīng)元的梯度都將變成0,造成ReLu神經(jīng)元的死亡。故在訓(xùn)練中學(xué)習(xí)率不宜設(shè)置得太高。
??4. LReLU
??LReLU(Leaky ReLU),帶泄漏線性整流函數(shù),是為了嘗試解決ReLU死亡問題而產(chǎn)生的一個變種。如上圖所示,其中ai是一個很小的常數(shù),i表示不同通道對于不同的ai。ReLU中,當x<0時,函數(shù)值為0,而Leaky ReLU則是給出了一個很小的負數(shù)梯度值。這樣保留了一些負軸的值,使得負軸的信息不會全部丟失。
??5.ELU
emsp;?ELU(The exponential Linear unit),指數(shù)線性單元。如上圖所示,ELU融合了sigmoid和RELU,左側(cè)具有軟飽和性,讓ELU對輸入變化或噪音更魯棒。右側(cè)無飽和性,能夠緩解ELU梯隊消失。
??6.Maxout
??Maxout時ReLU的一個泛化版本,如上圖所示,當w1、b1設(shè)置為0時,便轉(zhuǎn)換為ReLU公式。因此Maxout繼承了ReLU的優(yōu)點,有沒有“一不小心就死掉”的擔(dān)憂。該函數(shù)相當于在網(wǎng)絡(luò)中加入一個激活函數(shù)層,該函數(shù)層與其它激活函數(shù)的不同之處在于,該函數(shù)層增加了k個&神經(jīng)元,并輸出k個神經(jīng)元中最大的激活值。常見的隱含層輸出:
??hi(x)=sigmoid(xTW…i+bi)
??而Maxout網(wǎng)絡(luò)中輸出
??hi(x)=max(Zi1,Zi2,..., Zik);
??其中Zij=XTWij + bij,其中j取值范圍為[1,k]
??因此,Maxout是一個可學(xué)習(xí)的分段線性函數(shù)。實驗證明,Maxout可以擬合任何凸函數(shù),是一個通用的函數(shù)你擬合器。如下圖所示:
;優(yōu)點:
??1)、擬合能力非常強,可以擬合任意凸函數(shù)
??2)、具有ReLU的所有優(yōu)點,線性,不飽和性。
??3)、不會導(dǎo)致神經(jīng)元死亡
??缺點:
??每個神經(jīng)元有兩組(W,b)參數(shù),那么參數(shù)量就增加一倍,這就導(dǎo)致了整體參數(shù)的數(shù)量和運算量激增。
??全連接(Full Connection)層的每一個結(jié)點都與上一層的所有結(jié)點相連,用來把前邊提取到的特征綜合起來。它在整個卷積神經(jīng)網(wǎng)絡(luò)中起到分類器的作用。如果說卷積層、池化層和激活函數(shù)層等操作是將原始數(shù)據(jù)映射到隱層特征空間的話,全連接層則起到將學(xué)到的“分布式特征表示”映射到樣本標記空間的作用。全連接的核心操作就是矩陣向量乘積
y=Wx
??本質(zhì)就是由一個特征空間線性變換到另一個特征空間。如下圖所示:
??在CNN網(wǎng)絡(luò)中,經(jīng)過多個卷積層和池化層后,連接著1個或1個以上的全連接層。全連接層的每個神經(jīng)元與其前一層的所有神經(jīng)元進行全連接。全連接層可以整合卷積層或者池化層中具有類別區(qū)分的局部信息。為了提升CNN網(wǎng)絡(luò)性能,全連接層每個神經(jīng)元激勵函數(shù)一般采用ReLU函數(shù),最后一層全連接層的輸出值被傳遞給一個輸出,可以采用softmax邏輯回歸(softmax regression)進行分類,該層可以稱為softmax層。對于一個具體的分類任務(wù),選擇一個合適的損失函數(shù)是十分重要的,CNN網(wǎng)絡(luò)中幾種常用的損失函數(shù)并分析了它們各自的特點。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/19902.html
摘要:神經(jīng)網(wǎng)絡(luò)的補充前篇后篇數(shù)據(jù)預(yù)處理權(quán)重初始化經(jīng)典神經(jīng)網(wǎng)絡(luò)搞明白后,我們接下來看看他的變種,也是本系列的主角卷積神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)一個普通的卷積神經(jīng)網(wǎng)絡(luò)由各種層按順序堆疊而成,這些層主要分三類卷積層池化層和全連接層。 【DL-CV】神經(jīng)網(wǎng)絡(luò)的補充【DL-CV】數(shù)據(jù)預(yù)處理&權(quán)重初始化 經(jīng)典神經(jīng)網(wǎng)絡(luò)搞明白后,我們接下來看看他的變種,也是本系列的主角——卷積神經(jīng)網(wǎng)絡(luò)(Convolution...
閱讀 4838·2021-09-22 16:06
閱讀 2147·2021-09-22 15:22
閱讀 1490·2019-08-30 15:54
閱讀 2568·2019-08-30 15:44
閱讀 2403·2019-08-29 16:31
閱讀 2066·2019-08-29 16:26
閱讀 2394·2019-08-29 12:41
閱讀 804·2019-08-29 12:22