概念
數(shù)據(jù)輸入的是一張圖片(輸入層)造烁,CONV表示卷積層,RELU表示激勵(lì)層午笛,POOL表示池化層惭蟋,F(xiàn)c表示全連接層
卷積神經(jīng)網(wǎng)絡(luò)由來(lái)
局部連接+權(quán)值共享
全連接神經(jīng)網(wǎng)絡(luò)需要非常多的計(jì)算資源才能支撐它來(lái)做反向傳播和前向傳播,所以說(shuō)全連接神經(jīng)網(wǎng)絡(luò)可以存儲(chǔ)非常多的參數(shù)药磺,如果你給它的樣本如果沒(méi)有達(dá)到它的量級(jí)的時(shí)候告组,它可以輕輕松松把你給他的樣本全部都記下來(lái),這會(huì)出現(xiàn)過(guò)擬合的情況癌佩。
所以我們應(yīng)該把神經(jīng)元和神經(jīng)元之間的連接的權(quán)重個(gè)數(shù)降下來(lái)惹谐,但是降下來(lái)我們又不能保證它有較強(qiáng)的學(xué)習(xí)能力,所以這是一個(gè)糾結(jié)的地方驼卖,所以有一個(gè)方法就是局部連接+權(quán)值共享,局部連接+權(quán)值共享不僅權(quán)重參數(shù)降下來(lái)了鸿秆,而且學(xué)習(xí)能力并沒(méi)有實(shí)質(zhì)的降低酌畜,除此之外還有其它的好處,下來(lái)看一下卿叽,下面的這幾張圖片:
一個(gè)圖像的不同表示方式
這幾張圖片描述的都是一個(gè)東西桥胞,但是有的大有的小,有的靠左邊考婴,有的靠右邊贩虾,有的位置不同,但是我們構(gòu)建的網(wǎng)絡(luò)識(shí)別這些東西的時(shí)候應(yīng)該是同一結(jié)果沥阱。為了能夠達(dá)到這個(gè)目的缎罢,我們可以讓圖片的不同位置具有相同的權(quán)重(權(quán)值共享),也就是上面所有的圖片考杉,我們只需要在訓(xùn)練集中放一張策精,我們的神經(jīng)網(wǎng)絡(luò)就可以識(shí)別出上面所有的,這也是權(quán)值共享的好處崇棠。
而卷積神經(jīng)網(wǎng)絡(luò)就是局部連接+權(quán)值共享的神經(jīng)網(wǎng)絡(luò)咽袜。
卷積神經(jīng)網(wǎng)絡(luò)
現(xiàn)在我們對(duì)卷積神經(jīng)網(wǎng)絡(luò)有一個(gè)初步認(rèn)識(shí)了,下面具體來(lái)講解一下卷積神經(jīng)網(wǎng)絡(luò)枕稀,卷積神經(jīng)網(wǎng)絡(luò)依舊是層級(jí)結(jié)構(gòu)询刹,但層的功能和形式做了改變谜嫉,卷積神經(jīng)網(wǎng)絡(luò)常用來(lái)處理圖片數(shù)據(jù),比如識(shí)別一輛汽車:
step1 卷積神經(jīng)網(wǎng)絡(luò)之輸入層
在圖片輸出到神經(jīng)網(wǎng)絡(luò)之前,常常先進(jìn)行圖像處理匕垫,有三種常見(jiàn)的圖像的處理方式:
- 均值化:把輸入數(shù)據(jù)各個(gè)維度都中心化到0僧鲁,所有樣本求和求平均,然后用所有的樣本減去這個(gè)均值樣本就是去均值象泵。
- 歸一化:數(shù)據(jù)幅度歸一化到同樣的范圍寞秃,對(duì)于每個(gè)特征而言,范圍最好是[-1,1]
- PCA/白化:用PCA降維偶惠,讓每個(gè)維度的相關(guān)度取消春寿,特征和特征之間是相互獨(dú)立的。白化是對(duì)數(shù)據(jù)每個(gè)特征軸上的幅度歸一化
均值化和歸一化
去相關(guān)和白化
step2 卷神網(wǎng)絡(luò)之卷積層:
圖片有一個(gè)性質(zhì)叫做局部關(guān)聯(lián)性質(zhì)厘线,一個(gè)圖片的像素點(diǎn)影響最大的是它周邊的像素點(diǎn),而距離這個(gè)像素點(diǎn)比較遠(yuǎn)的像素點(diǎn)二者之間關(guān)系不大出革。這個(gè)性質(zhì)意味著每一個(gè)神經(jīng)元我們不用處理全局的圖片了(和上一層全連接)造壮,我們的每一個(gè)神經(jīng)元只需要和上一層局部連接,相當(dāng)于每一個(gè)神經(jīng)元掃描一小區(qū)域骂束,然后許多神經(jīng)元(這些神經(jīng)元權(quán)值共享)合起來(lái)就相當(dāng)于掃描了全局耳璧,這樣就構(gòu)成一個(gè)特征圖,n個(gè)特征圖就提取了這個(gè)圖片的n維特征展箱,每個(gè)特征圖是由很多神經(jīng)元來(lái)完成的旨枯。
在卷積神經(jīng)網(wǎng)絡(luò)中,我們先選擇一個(gè)局部區(qū)域(filter)混驰,用這個(gè)局部區(qū)域(filter)去掃描整張圖片攀隔。 局部區(qū)域所圈起來(lái)的所有節(jié)點(diǎn)會(huì)被連接到下一層的一個(gè)節(jié)點(diǎn)上。我們拿灰度圖(只有一維)來(lái)舉例:
局部區(qū)域
圖片是矩陣式的,將這些以矩陣排列的節(jié)點(diǎn)展成了向量治泥。就能更好的看出來(lái)卷積層和輸入層之間的連接筹煮,并不是全連接的,我們將上圖中的紅色方框稱為filter居夹,它是2*2的败潦,這是它的尺寸本冲,這不是固定的,我們可以指定它的尺寸劫扒。
我們可以看出來(lái)當(dāng)前filter是2*2的小窗口檬洞,這個(gè)小窗口會(huì)將圖片矩陣從左上角滑到右下角,每滑一次就會(huì)一下子圈起來(lái)四個(gè)沟饥,連接到下一層的一個(gè)神經(jīng)元添怔,然后產(chǎn)生四個(gè)權(quán)重,這四個(gè)權(quán)重(w1贤旷、w2广料、w3、w4)構(gòu)成的矩陣就叫做卷積核幼驶。
卷積核是算法自己學(xué)習(xí)得到的艾杏,它會(huì)和上一層計(jì)算,比如盅藻,第二層的0節(jié)點(diǎn)的數(shù)值就是局部區(qū)域的線性組合(w10+w21+w34+w45)购桑,即被圈中節(jié)點(diǎn)的數(shù)值乘以對(duì)應(yīng)的權(quán)重后相加。
卷積核計(jì)算
卷積操作
我們前面說(shuō)過(guò)圖片不用向量表示是為了保留圖片平面結(jié)構(gòu)的信息元旬。 同樣的,卷積后的輸出若用上圖的向量排列方式則丟失了平面結(jié)構(gòu)信息守问。 所以我們依然用矩陣的方式排列它們,就得到了下圖所展示的連接坑资,每一個(gè)藍(lán)色結(jié)點(diǎn)連接四個(gè)黃色的結(jié)點(diǎn)耗帕。
卷積層的連接方式
圖片是一個(gè)矩陣然后卷積神經(jīng)網(wǎng)絡(luò)的下一層也是一個(gè)矩陣仿便,我們用一個(gè)卷積核從圖片矩陣左上角到右下角滑動(dòng),每滑動(dòng)一次攒巍,當(dāng)然被圈起來(lái)的神經(jīng)元們就會(huì)連接下一層的一個(gè)神經(jīng)元嗽仪,形成參數(shù)矩陣這個(gè)就是卷積核,每次滑動(dòng)雖然圈起來(lái)的神經(jīng)元不同柒莉,連接下一層的神經(jīng)元也不同闻坚,但是產(chǎn)生的參數(shù)矩陣確是一樣的,這就是權(quán)值共享兢孝。
卷積核會(huì)和掃描的圖片的那個(gè)局部矩陣作用產(chǎn)生一個(gè)值窿凤,比如第一次的時(shí)候仅偎,(w10+w21+w34+w45),所以雳殊,filter從左上到右下的這個(gè)過(guò)程中會(huì)得到一個(gè)矩陣(這就是下一層也是一個(gè)矩陣的原因)橘沥,具體過(guò)程如下所示:
卷積計(jì)算過(guò)程
上圖中左邊是圖矩陣座咆,我們使用的filter的大小是33的,第一次滑動(dòng)的時(shí)候仓洼,卷積核和圖片矩陣作用(11+10+11+00+11+10+01+00+11)=4介陶,會(huì)產(chǎn)生一個(gè)值,這個(gè)值就是右邊矩陣的第一個(gè)值衬潦,filter滑動(dòng)9次之后斤蔓,會(huì)產(chǎn)生9個(gè)值,也就是說(shuō)下一層有9個(gè)神經(jīng)元镀岛,這9個(gè)神經(jīng)元產(chǎn)生的值就構(gòu)成了一個(gè)矩陣弦牡,這矩陣叫做特征圖,表示image的某一維度的特征漂羊,當(dāng)然具體哪一維度可能并不知道驾锰,可能是這個(gè)圖像的顏色,也有可能是這個(gè)圖像的輪廓等等走越。
單通道圖片總結(jié):以上就是單通道的圖片的卷積處理椭豫,圖片是一個(gè)矩陣,我們用指定大小的卷積核從左上角到右下角來(lái)滑動(dòng)旨指,每次滑動(dòng)所圈起來(lái)的結(jié)點(diǎn)會(huì)和下一層的一個(gè)結(jié)點(diǎn)相連赏酥,連接之后就會(huì)形成局部連接,每一條連接都會(huì)產(chǎn)生權(quán)重谆构,這些權(quán)重就是卷積核裸扶,所以每次滑動(dòng)都會(huì)產(chǎn)生一個(gè)卷積核,因?yàn)闄?quán)值共享搬素,所以這些卷積核都是一樣的呵晨。卷積核會(huì)不斷和當(dāng)時(shí)卷積核所圈起來(lái)的局部矩陣作用,每次產(chǎn)生的值就是下一層結(jié)點(diǎn)的值了熬尺,這樣多次產(chǎn)生的值組合起來(lái)就是一個(gè)特征圖摸屠,表示某一維度的特征。也就是從左上滑動(dòng)到右下這一過(guò)程中會(huì)形成一個(gè)特征圖矩陣(共享一個(gè)卷積核)粱哼,再?gòu)淖笊匣瑒?dòng)到右下又會(huì)形成另一個(gè)特征圖矩陣(共享另一個(gè)卷積核)季二,這些特征圖都是表示特征的某一維度。
三個(gè)通道的圖片如何進(jìn)行卷積操作揭措?
至此我們應(yīng)該已經(jīng)知道了單通道的灰度圖是如何處理的戒傻,實(shí)際上我們的圖片都是RGB的圖像税手,有三個(gè)通道,那么此時(shí)圖像是如何卷積的呢需纳?
彩色圖像
filter窗口滑的時(shí)候不翩,我們只是從width和height的角度來(lái)滑動(dòng)的兵扬,并沒(méi)有考慮depth,所以每滑動(dòng)一次實(shí)際上是產(chǎn)生一個(gè)卷積核口蝠,共享這一個(gè)卷積核器钟,而現(xiàn)在depth=3了,所以每滑動(dòng)一次實(shí)際上產(chǎn)生了具有三個(gè)通道的卷積核(它們分別作用于輸入圖片的藍(lán)色妙蔗、綠色傲霸、紅色通道),卷積核的一個(gè)通道核藍(lán)色的矩陣作用產(chǎn)生一個(gè)值眉反,另一個(gè)和綠色的矩陣作用產(chǎn)生一個(gè)值昙啄,最后一個(gè)和紅色的矩陣作用產(chǎn)生一個(gè)值,然后這些值加起來(lái)就是下一層結(jié)點(diǎn)的值寸五,結(jié)果也是一個(gè)矩陣梳凛,也就是一張?zhí)卣鲌D。
三通道的計(jì)算過(guò)程
要想有多張?zhí)卣鲌D的話,我們可以再用新的卷積核來(lái)進(jìn)行左上到右下的滑動(dòng)十性,這樣就會(huì)形成新的特征圖叛溢。
三通道圖片的卷積過(guò)程
也就是說(shuō)增加一個(gè)卷積核雇初,就會(huì)產(chǎn)生一個(gè)特征圖,總的來(lái)說(shuō)就是輸入圖片有多少通道减响,我們的卷積核就需要對(duì)應(yīng)多少通道,而本層中卷積核有多少個(gè)郭怪,就會(huì)產(chǎn)生多少個(gè)特征圖支示。這樣卷積后輸出可以作為新的輸入送入另一個(gè)卷積層中處理,有幾個(gè)特征圖那么depth就是幾鄙才,那么下一層的每一個(gè)特征圖就得用相應(yīng)的通道的卷積核來(lái)對(duì)應(yīng)處理颂鸿,這個(gè)邏輯要清楚,我們需要先了解一下基本的概念:
- 深度depth(通道):由上一層濾波器的個(gè)數(shù)決定
- 步長(zhǎng)stride:每次滑動(dòng)幾步攒庵,步數(shù)越大得到的特征數(shù)越少嘴纺,上面的例子中每次滑動(dòng)1步败晴。
- 填充值z(mì)ero-padding:我們?cè)O(shè)置了步長(zhǎng)之后,很有可能某些位置滑不到栽渴,為了避免了邊緣信息被一步步舍棄的問(wèn)題尖坤,我們需要設(shè)置填充值來(lái)解決這個(gè)問(wèn)題。還有一個(gè)問(wèn)題闲擦,4x4的圖片被2x2的filter卷積后變成了3x3的圖片慢味,每次卷積后都會(huì)小一圈的話,經(jīng)過(guò)若干層后豈不是變的越來(lái)越惺洹纯路?zero padding就可以在這時(shí)幫助控制Feature Map的輸出尺寸,同時(shí)避免了邊緣信息被一步步舍棄的問(wèn)題寞忿。
卷積計(jì)算的公式
4x4的圖片在邊緣Zero padding一圈后腔彰,再用3x3的filter卷積后叫编,得到的Feature Map尺寸依然是4x4不變。
填充
當(dāng)然也可以使用5x5的filte和2的zero padding可以保持圖片的原始尺寸,3x3的filter考慮到了像素與其距離為1以內(nèi)的所有其他像素的關(guān)系上炎,而5x5則是考慮像素與其距離為2以內(nèi)的所有其他像素的關(guān)系恃逻。
規(guī)律: Feature Map的尺寸等于
(input_size + 2 * padding_size ? filter_size)/stride+1
我們可以把卷積層的作用總結(jié)一點(diǎn):卷積層其實(shí)就是在提取特征,卷積層中最重要的是卷積核(訓(xùn)練出來(lái)的)藕施,不同的卷積核可以探測(cè)特定的形狀寇损、顏色、對(duì)比度等裳食,然后特征圖保持了抓取后的空間結(jié)構(gòu)矛市,所以不同卷積核對(duì)應(yīng)的特征圖表示某一維度的特征,具體什么特征可能我們并不知道诲祸。特征圖作為輸入再被卷積的話浊吏,可以則可以由此探測(cè)到"更大"的形狀概念,也就是說(shuō)隨著卷積神經(jīng)網(wǎng)絡(luò)層數(shù)的增加救氯,特征提取的越來(lái)越具體化找田。
step3 卷積神經(jīng)網(wǎng)絡(luò)之激活層(激勵(lì)層)
激勵(lì)層的作用可以理解為把卷積層的結(jié)果做非線性映射。
激勵(lì)層
上圖中的f表示激勵(lì)函數(shù),常用的激勵(lì)函數(shù)幾下幾種:
常用的激勵(lì)函數(shù)
我們先來(lái)看一下激勵(lì)函數(shù)Sigmoid導(dǎo)數(shù)最小為0心铃,最大為1/4,
激勵(lì)函數(shù)Sigmoid
Tanh激活函數(shù):和sigmoid相似,它會(huì)關(guān)于x軸上下對(duì)應(yīng)暮顺,不至于朝某一方面偏向
Tanh激活函數(shù)
ReLU激活函數(shù)(修正線性單元):收斂快捶码,求梯度快羽氮,但較脆弱,左邊的梯度為0
ReLU激活函數(shù)
Leaky ReLU激活函數(shù):不會(huì)飽和或者掛掉,計(jì)算也很快祈纯,但是計(jì)算量比較大
Leaky ReLU激活函數(shù)
一些激勵(lì)函數(shù)的使用技巧:一般不要用sigmoid腕窥,首先試RELU粒没,因?yàn)榭欤⌒狞c(diǎn)簇爆,如果RELU失效癞松,請(qǐng)用Leaky ReLU,某些情況下tanh倒是有不錯(cuò)的結(jié)果入蛆。
這就是卷積神經(jīng)網(wǎng)絡(luò)的激勵(lì)層响蓉,它就是將卷積層的線性計(jì)算的結(jié)果進(jìn)行了非線性映射∩诨伲可以從下面的圖中理解枫甲。它展示的是將非線性操作應(yīng)用到一個(gè)特征圖中。這里的輸出特征圖也可以看作是"修正"過(guò)的特征圖扼褪。如下所示:
非線性操作
step4 卷積神經(jīng)網(wǎng)絡(luò)之池化層
池化層:降低了各個(gè)特征圖的維度话浇,但可以保持大分重要的信息脏毯。池化層夾在連續(xù)的卷積層中間,壓縮數(shù)據(jù)和參數(shù)的量凳枝,減小過(guò)擬合,池化層并沒(méi)有參數(shù),它只不過(guò)是把上層給它的結(jié)果做了一個(gè)下采樣(數(shù)據(jù)壓縮)岖瑰。下采樣有兩種常用的方式:
Max pooling:選取最大的叛买,我們定義一個(gè)空間鄰域(比如,2x2 的窗口)蹋订,并從窗口內(nèi)的修正特征圖中取出最大的元素率挣,最大池化被證明效果更好一些。
Average pooling:平均的露戒,我們定義一個(gè)空間鄰域(比如椒功,2x2 的窗口),并從窗口內(nèi)的修正特征圖算出平均值
Max pooling
我們要注意一點(diǎn)的是:pooling在不同的depth上是分開(kāi)執(zhí)行的,也就是depth=5的話荠锭,pooling進(jìn)行5次旱眯,產(chǎn)生5個(gè)池化后的矩陣,池化不需要參數(shù)控制证九。池化操作是分開(kāi)應(yīng)用到各個(gè)特征圖的删豺,我們可以從五個(gè)輸入圖中得到五個(gè)輸出圖。
池化操作
無(wú)論是max pool還是average pool都有分信息被舍棄,那么部分信息被舍棄后會(huì)損壞識(shí)別結(jié)果嗎拥坛?
因?yàn)榫矸e后的Feature Map中有對(duì)于識(shí)別物體不必要的冗余信息蓬蝶,我們下采樣就是為了去掉這些冗余信息,所以并不會(huì)損壞識(shí)別結(jié)果渴逻。
我們來(lái)看一下卷積之后的冗余信息是怎么產(chǎn)生的疾党?
我們知道卷積核就是為了找到特定維度的信息,比如說(shuō)某個(gè)形狀惨奕,但是圖像中并不會(huì)任何地方都出現(xiàn)這個(gè)形狀雪位,但卷積核在卷積過(guò)程中沒(méi)有出現(xiàn)特定形狀的圖片位置卷積也會(huì)產(chǎn)生一個(gè)值,但是這個(gè)值的意義就不是很大了梨撞,所以我們使用池化層的作用雹洗,將這個(gè)值去掉的話,自然也不會(huì)損害識(shí)別結(jié)果了卧波。
比如下圖中时肿,假如卷積核探測(cè)"橫折"這個(gè)形狀。 卷積后得到3x3的Feature Map中港粱,真正有用的就是數(shù)字為3的那個(gè)節(jié)點(diǎn)螃成,其余數(shù)值對(duì)于這個(gè)任務(wù)而言都是無(wú)關(guān)的旦签。 所以用3x3的Max pooling后,并沒(méi)有對(duì)"橫折"的探測(cè)產(chǎn)生影響寸宏。 試想在這里例子中如果不使用Max pooling宁炫,而讓網(wǎng)絡(luò)自己去學(xué)習(xí)。 網(wǎng)絡(luò)也會(huì)去學(xué)習(xí)與Max pooling近似效果的權(quán)重氮凝。因?yàn)槭墙菩Ч岢玻黾恿烁嗟膮?shù)的代價(jià),卻還不如直接進(jìn)行最大池化處理罩阵。
最大池化處理
step5 卷積神經(jīng)網(wǎng)絡(luò)之全連接層
在全連接層中所有神經(jīng)元都有權(quán)重連接稿壁,通常全連接層在卷積神經(jīng)網(wǎng)絡(luò)尾部幽钢。當(dāng)前面卷積層抓取到足以用來(lái)識(shí)別圖片的特征后,接下來(lái)的就是如何進(jìn)行分類常摧。 通常卷積網(wǎng)絡(luò)的最后會(huì)將末端得到的長(zhǎng)方體平攤成一個(gè)長(zhǎng)長(zhǎng)的向量搅吁,并送入全連接層配合輸出層進(jìn)行分類。比如落午,在下面圖中我們進(jìn)行的圖像分類為四分類問(wèn)題谎懦,所以卷積神經(jīng)網(wǎng)絡(luò)的輸出層就會(huì)有四個(gè)神經(jīng)元。
四分類問(wèn)題
我們從卷積神經(jīng)網(wǎng)絡(luò)的輸入層、卷積層梗劫、激活層享甸、池化層以及全連接層來(lái)講解卷積神經(jīng)網(wǎng)絡(luò),我們可以認(rèn)為全連接層之間的在做特征提取梳侨,而全連接層在做分類蛉威,這就是卷積神經(jīng)網(wǎng)絡(luò)的核心。
內(nèi)容重新編排原版文章內(nèi)容參考如下
轉(zhuǎn)載于: https://www.toutiao.com/a6609148733269475848/?wid=1636131765561