卷积神经网络CNN---权值共享
1、權值共享的由來:
權值共享這個詞最開始其實是由LeNet5模型提出來,在1998年,LeCun發(fā)布了LeNet網(wǎng)絡架構,就是下面這個:
雖然現(xiàn)在大多數(shù)的說法是2012年的AlexNet網(wǎng)絡是深度學習的開端,但是CNN的開端最早其實可以追溯到LeNet5模型,它的幾個特性在2010年初的卷積神經(jīng)網(wǎng)絡研究中被廣泛的使用——其中一個就是權值共享。
2、什么是權值共享?
所謂權值共享就是說給定一張輸入圖片,用一個卷積核來卷積這張圖,卷積核里的值叫做權重,這張圖的每個位置是被同一個卷積核掃的,即卷積的時候所用的權重是一樣的。其實權值共享這個詞說全了就是整張圖片在使用同一個卷積核內(nèi)的參數(shù),比如一個3*3*1的卷積核,這個卷積核內(nèi)9個的參數(shù)被整張圖共享,而不會因為圖像內(nèi)位置的不同而改變卷積核內(nèi)的權系數(shù)。說的再直白一些,就是用一個卷積核不改變其內(nèi)權系數(shù)的情況下卷積處理整張圖片(當然CNN中每一層不會只有一個卷積核的,這樣說只是為了方便解釋而已)。
作用:大大減少網(wǎng)絡訓練參數(shù)的同時,還可以實現(xiàn)并行訓練。
PS:大白話就是給你一張圖片,用一個filter去卷積操作這張圖,filter里邊的數(shù)就叫做權重,這張圖的每個位置是被同樣的filter進行卷積操作的,所以權重都是一樣的,也就是實現(xiàn)的共享。
3、作用:大減少網(wǎng)絡訓練參數(shù)的同時,還可以實現(xiàn)并行訓練
把局部連接(感受野)中的每一個卷積核中對應的權值進行共享,就可以進一步減少網(wǎng)絡中參數(shù)的個數(shù),即下一層每一個像素點是由上一層對應位置的N×N的局部區(qū)域圖片(也就是感受野)與同一卷積核N×N的權值做內(nèi)積,加偏置后再經(jīng)過非線性映射而來的,至此,網(wǎng)絡訓練參數(shù)的數(shù)量不再受原始輸入圖片大小的影響(因為卷積核固定了,里邊的權值多少也就固定了)。此處需要注意,一組卷積核N×N的權值只能得到一張Feature map,為更好的表示圖像特征,需要使用不同的多組卷積核(過濾器)來使學得的圖像特征更豐富。
?
LeNet首次把卷積的思想加入到神經(jīng)網(wǎng)絡模型中,這是一項開創(chuàng)性的工作,而在此之前,傳統(tǒng)的神經(jīng)網(wǎng)絡輸入的都是提取到的特征而已,就比如想要做一個房價預測,我們選取了房屋面積,臥室個數(shù)等等數(shù)據(jù)作為特征。而將卷積核引入到了神經(jīng)網(wǎng)絡去處理圖片后(也就是卷積神經(jīng)網(wǎng)絡),自然而然就會出現(xiàn)一個問題,神經(jīng)網(wǎng)絡的輸入是什么?如果還是一個個像素點上的像素值的話,那就意味著每一個像素值都會對應一個權系數(shù),這樣就帶來了兩個問題:
1.每一層都會有大量的參數(shù)
2.將像素值作為輸入特征本質上和傳統(tǒng)的神經(jīng)網(wǎng)絡沒有區(qū)別,并沒有利用到圖像空間上的局部相關性。
所以卷積神經(jīng)網(wǎng)絡是在局部感受野上進行一步步卷積操作的。
而權值共享的卷積操作有效解決了這個問題,無論圖像的尺寸是多大,都可以選擇固定尺寸的卷積核,LeNet中最大的卷積核只有5*5*1,而在AlexNet中最大的卷積核也不過是11*11*3。而卷積操作保證了每一個像素都有一個權系數(shù),只是這些系數(shù)是被整個圖片共享的,這大大減少了卷積核中的參數(shù)量。此外卷積操作利用了圖片空間上的局部相關性,這也就是CNN與傳統(tǒng)神經(jīng)網(wǎng)絡或機器學習的一個最大的不同點,特征的自動提取。
這也就是為什么卷積層往往會有多個卷積核(甚至幾十個,上百個),因為權值共享后意味著每一個卷積核只能提取到一種特征(即每一個卷積核只能提取到到一個特征。所以,卷積層會有多個卷積核,來提取不同種類的特征。),為了增加CNN的表達能力,當然需要多個核,不幸的是,它是一個Hyper-Parameter。
切記不要忘記卷積操作最后的偏置項b
4、根據(jù)LeNet網(wǎng)絡示意圖,分析每一層的參數(shù)個數(shù)
eNet-5上圖已經(jīng)清晰的標明了各層神經(jīng)網(wǎng)絡的參數(shù)了,即?C1,C3為卷積層,S2,S4為降采樣層,C5、F6為全連接層,還有一個輸出層。
| layer name | kernel size | output size |
| 輸入層 | 無 | 32x32 |
| C1 | 6x5x5 | 6x28x28 |
| max pooling S2 | 2x2? ?stride=2 | 6x14x14 |
| C3 | 16x5x5 | 16x10x10 |
| max pooling S4 | 2x2? ?stride=2 | 16x5x5 |
| C5 | 120x5x5 | 120 |
| F6 | 120 | 84 |
| Output | 84 | 10 |
解讀:
對于卷積層,它的超參數(shù)就是對應的 kernel 的值和偏置項。
C1:
C1 是一個卷積層,有6個卷積核,由6個Feature Map組成。 每一個Feature Map中的每個神經(jīng)元與輸入中5*5的區(qū)域相連(也就是Filter的大小),Feature Map的大小為28*28,
?C1一共有156個參數(shù),因為5*5個參數(shù)加上一個bias,一共又有6個Filter,所以為:(5*5+1)*6=156個參數(shù),(這里的1是偏置,每一個filter都對應一個偏置b,所以也要乘以6)。
總的計算數(shù)目:
相當于是卷積核卷積一次會得到feature的一個像素點,相當于是每一個卷積核計算的次數(shù),再乘以這一個feature map是28x28的像素,然后再乘6個。一共有156*(28*28) = 122304個連接。(因為輸出是28x28,所以應該進行了28x28次卷積操作)
(5*5+1)是說我在這個卷積核內(nèi)進行了多少次操作,(因為你卷積核是要進行相乘相加操作的),你卷積一次會得到一個像素點,你要在這個上邊滑動操作,得到28x28個像素點,一個有6個28x28,所以計算數(shù)目就是這樣算出來的。
S2:
(所以pooling層到底有沒有參數(shù),還要根據(jù)具體的網(wǎng)絡來分析,有的網(wǎng)絡可能在計算的時候加入了參數(shù),有的沒有?我是這樣認為的)(對于最大池化操作來說,沒有超參數(shù)。)
C1到S2這里是做了一個采樣(采樣方式是我在4個輸入也就是2x2的區(qū)域,然后把這4個區(qū)域相加乘以一個可訓練參數(shù),相當于我把這里面4個像素點加和了乘以一個w再加上一個偏置b,所以每一個相當于是有2個這樣的參數(shù),一共是有6個feature map,他就是2x6也就是6+6一共是12個參數(shù))
總計算數(shù)目是:因為每一個2x2的區(qū)域對應feature map上的一個像素,有6個feature map,每個feature map一共有14x14個像素。每個2x2的區(qū)域要進行相加相乘再加上一個偏置。
上圖說明了卷積過程子采樣過程。卷積過程中,用一個可訓練的過濾器f?x?去卷積一個輸入圖像,然后添加一個偏置bx??,得到卷積層Cx?。子采樣過程就是:每個鄰域4個像素變?yōu)橐粋€像素,然后加上標量Wx?加權,最后再增加偏置bx+1?,接著通過一個sigmoid激活函數(shù),產(chǎn)生一個大概縮小了4倍的特征映射圖Sx+1。
C3:
這一層是S2到C3,實際上是從6個這樣的feature map把它擴展到了16個feature map。
0到15分別代表C3層的feature map,0到5分別代表S2層的feature map;C3層的前6個是把S2層相鄰的3個做卷積(即他不是把這深度為6的6個全部做卷積),然后6到11他是把S2中4個相鄰的做了卷積。剩余的3個他是把S2中不相鄰的做了卷積,還剩下最后一個就是第15個他就做了一個全卷積。
這里從S2到C3不是單純的我拿所有的深度去做卷積,而是把其中的某一些相鄰的或者不相鄰的取出來做卷積操作。
S4:
C3到S4同C1到S2。
C5:
從S2到C5
4. 小結
- LeNet-5 是一個5層卷積神經(jīng)網(wǎng)絡
- 總共有約6萬(60790)個超參數(shù)
- 隨著網(wǎng)絡越來越深,圖像的高度和寬度在縮小,與此同時,圖像的 channel 數(shù)量一直在增加。
參考鏈接:https://blog.csdn.net/Genius_zz/article/details/52804585?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=1328641.9440.16155302984251095&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control
https://cuijiahua.com/blog/2018/01/dl_3.html
https://www.cnblogs.com/fengff/p/10173071.html
https://www.cnblogs.com/monologuesmw/p/11872269.html
總結
以上是生活随笔為你收集整理的卷积神经网络CNN---权值共享的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Anaconda中pytorch环境搭建
- 下一篇: 深蓝学院的深度学习理论与实践课程:第四章