卷积神经网络基础:(6)卷积神经网络原理
目錄
1、卷積網(wǎng)絡(luò)與傳統(tǒng)網(wǎng)絡(luò)的區(qū)別
2、整體架構(gòu)
?3、卷積操作?
?4、卷積涉及的參數(shù)
5、卷積計(jì)算公式:
6、卷積參數(shù)中的重要特點(diǎn)
7、池化層作用
?8、整體網(wǎng)絡(luò)架構(gòu)
?9、特征圖變化
10、感受野
1、卷積網(wǎng)絡(luò)與傳統(tǒng)網(wǎng)絡(luò)的區(qū)別
?上圖中左邊是NN傳統(tǒng)網(wǎng)絡(luò),右邊是CNN卷積網(wǎng)絡(luò)。
傳統(tǒng)網(wǎng)絡(luò)輸入比如784表示784個(gè)像素點(diǎn),這只是一列特征;
在CNN當(dāng)中輸入的不是784個(gè)像素點(diǎn),而是原始的一張圖像28x28x1是個(gè)三維的,當(dāng)使用卷積網(wǎng)絡(luò)做事情的時(shí)候,我們得把思想再抬高一個(gè)維度,現(xiàn)在的數(shù)據(jù)他就不是一列,不是一個(gè)向量,不是一個(gè)特征,而是一個(gè)長(zhǎng)方體矩陣,它是一個(gè)三維的,所以接下來(lái)我們處理的矩陣都是三維的,HxWxC的我不會(huì)先把數(shù)據(jù)拉成一個(gè)向量,而是直接對(duì)這個(gè)樣本,圖像數(shù)據(jù)進(jìn)行一個(gè)特征提取。PS:注意這里的輸入是一個(gè)HxWxC的;這里還涉及一個(gè)depth信息;
2、整體架構(gòu)
?簡(jiǎn)單的理解:卷積是提取特征,池化是壓縮特征。
?3、卷積操作
?右邊綠色的叫做一個(gè)特征圖,表示當(dāng)前得到的一個(gè)結(jié)果。最后把三個(gè)通道的值相加。
首先把圖像分成一個(gè)個(gè)小區(qū)域,目的是對(duì)于不同的區(qū)域我得到的特征他是不一樣的,然后接下來(lái)我要選擇一種計(jì)算的方法,對(duì)于每一個(gè)小區(qū)域的計(jì)算他應(yīng)該的特征值是等于多少的,這個(gè)是卷積他做的一件事。?
三通道計(jì)算:
?PS:必須保證你的輸入的第三個(gè)維度即通道數(shù)C,必須和Filter當(dāng)中第三個(gè)維度他倆必須是一樣的。使用了幾個(gè)Filter進(jìn)行計(jì)算,最后就會(huì)得到多少個(gè)特征圖。
內(nèi)積和計(jì)算3=0+2+0+b(小b=1是一個(gè)偏置項(xiàng)),最后別忘記加上一個(gè)偏置項(xiàng)。
?4、卷積涉及的參數(shù)
?(1)步長(zhǎng)
步長(zhǎng)為1:表示在滑動(dòng)的過(guò)程中移動(dòng)一個(gè)單元格。
步長(zhǎng)為2:表示在滑動(dòng)的過(guò)程中移動(dòng)兩個(gè)單元格。
步長(zhǎng)越小得到的特征圖越大,得到的特征比較豐富,計(jì)算效率越慢。
?(2)卷積核尺寸
卷積核越小,越細(xì)粒度進(jìn)行提取。
(3)邊緣填充(一般使用zero padding)
在進(jìn)行卷積計(jì)算的時(shí)候,中間的點(diǎn)參與運(yùn)算的次數(shù)較多,邊界的點(diǎn)較少;為了公平一些,讓邊界點(diǎn)也參與運(yùn)算的次數(shù)多一些。所以進(jìn)行邊緣填充,加上一圈數(shù)(比如0,添加0是為了避免在對(duì)結(jié)果進(jìn)行計(jì)算的時(shí)候?qū)Y(jié)果產(chǎn)生影響,0乘任何數(shù)都等于0,所以最外層只是擴(kuò)充,不會(huì)對(duì)結(jié)果產(chǎn)生任何影響),原來(lái)是邊界的點(diǎn),他就不是邊界了,它能被利用的次數(shù)就會(huì)變多,代表了我一定程度上彌補(bǔ)了一些邊界信息缺失的問(wèn)題,邊界提取特征利用不充分的問(wèn)題,讓網(wǎng)絡(luò)能夠更公平的對(duì)待一下邊界特征。
添加的圈數(shù)自己控制,一般一圈。
?(4)卷積核個(gè)數(shù)
卷積核個(gè)數(shù)說(shuō)白了就是我最后要得到多少個(gè)特征圖,如果要得到10個(gè)特征圖,那么卷積核個(gè)數(shù)就是10。PS:每個(gè)卷積核里邊的數(shù)字是不一樣的,一開(kāi)始進(jìn)行隨機(jī)初始化要分別進(jìn)行各自的參數(shù)更新。
5、卷積計(jì)算公式:
6、卷積參數(shù)中的重要特點(diǎn)
卷積參數(shù)共享?
?比如說(shuō)現(xiàn)在有一個(gè)卷積核,那么他要對(duì)圖像中的每一個(gè)區(qū)域做卷積;
Q1:對(duì)于不同的區(qū)域,我是不是應(yīng)該選擇卷積核里邊的區(qū)域也應(yīng)該不同呢?這樣效果會(huì)更好。
A1:其實(shí)理論上應(yīng)該是這樣的;但是如果你對(duì)每一個(gè)區(qū)域都選擇不同的filter核去做,那總共參數(shù)的個(gè)數(shù)會(huì)需要很多;之前說(shuō)過(guò)傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的缺點(diǎn)是參數(shù)太多,缺點(diǎn)是不容易訓(xùn)練,效率較慢,過(guò)擬合現(xiàn)象比較大,卷積神經(jīng)網(wǎng)絡(luò)就是要解決這樣的問(wèn)題,他提出的一點(diǎn)就是參數(shù)共享,比如當(dāng)前我有一個(gè)卷積核,我用這個(gè)卷積核對(duì)每一個(gè)區(qū)域進(jìn)行特征提取的時(shí)候,它里邊的每一個(gè)值都是一樣的,也就是說(shuō)用同樣一個(gè)卷積核對(duì)圖像中每一個(gè)小區(qū)域進(jìn)行特征提取,在對(duì)圖像中每一個(gè)小區(qū)域進(jìn)行特征提取的時(shí)候,核里邊的每一個(gè)值都是不變的。
上圖中的參數(shù)一共是760個(gè),要比之前全連接時(shí)候的參數(shù)少的多了。??
7、池化層作用
池化層是做壓縮的,或者說(shuō)叫做下采樣。在你原始得到特征的基礎(chǔ)上進(jìn)行一個(gè)篩選。只能去做一個(gè)縮減,但是不能修改我的特征圖的個(gè)數(shù)(即最后的通道數(shù))。池化層沒(méi)有涉及任何的矩陣計(jì)算,他只是一個(gè)特征的篩選,只是一個(gè)壓縮過(guò)濾的東西。
最大池化:?
?8、整體網(wǎng)絡(luò)架構(gòu)
最后得到的特征圖它是一個(gè)立體的,在這個(gè)立體中我怎么樣對(duì)他進(jìn)行一個(gè)分類任務(wù),如何把這個(gè)立體轉(zhuǎn)化成5個(gè)概率的分類值呢?PS:前邊的卷積和池化只是做特征提取的,最后當(dāng)你想得到一個(gè)結(jié)果還得靠全連接(FC)層;
全連接層的矩陣大小,比如最后是5分類的,那么就是[?n, 5],前邊的n是連接前邊提取出來(lái)的特征,但是對(duì)于全連接層他不能連接三維的東西,所以我們需要把之前提取出來(lái)的三維特征圖(比如32x32x10)你得給我拉成一個(gè)特征向量,非常非常長(zhǎng)的特征向量,特征向量就是里邊每一個(gè)他都是一個(gè)值,特征向量長(zhǎng)度是32x32x10=10240,所以最后全連接層得到的結(jié)果n=10240,即[10240,5]相當(dāng)于得到全連接層的結(jié)果,相當(dāng)于把這個(gè)10240個(gè)特征轉(zhuǎn)化成我預(yù)測(cè)的5個(gè)類別的概率值,所以在最后的pooling層和FC之間還存在一個(gè)拉長(zhǎng)的操作(就是把一個(gè)圖拉成一個(gè)特征向量,把之前所有的結(jié)果都總結(jié)在一起了,通過(guò)全連接層得到我們最終的一個(gè)分類結(jié)果了);
幾層神經(jīng)網(wǎng)絡(luò)中的層是指:帶參數(shù)計(jì)算的才能叫做一層。?
卷積層帶參數(shù)計(jì)算:要乘權(quán)重內(nèi)積再加偏置的。
Relu層不帶參數(shù)計(jì)算:沒(méi)有權(quán)重參數(shù),沒(méi)有偏置,也不用更新什么;所以激活層統(tǒng)統(tǒng)不帶,因?yàn)樗挥萌ジ率裁礀|西。
池化層不帶參數(shù)計(jì)算:沒(méi)有w和b,不需要更新。
全連接層帶參數(shù)計(jì)算:有權(quán)重矩陣。
只有帶參數(shù)的東西才能稱作神經(jīng)網(wǎng)絡(luò)的一層,不帶參數(shù)的統(tǒng)統(tǒng)不叫做層。
?9、特征圖變化
轉(zhuǎn)換就是拉伸(把長(zhǎng)方體特征轉(zhuǎn)化成一條向量特征)?,向量才能連接全連接層,最終得到分類的結(jié)果。
10、感受野
?首先理解感受這個(gè)詞,下圖是一個(gè)5x5的原始輸入當(dāng)中,在這個(gè)區(qū)域中比如說(shuō)我現(xiàn)在拿到一個(gè)小區(qū)域3x3(就是綠色部分)要對(duì)他進(jìn)行卷積,卷積之后得到一個(gè)值5,這個(gè)5這個(gè)值對(duì)應(yīng)的原始就是前邊的值是多大呢?就是前邊綠色3x3的區(qū)域,因?yàn)檫@個(gè)值它是由前邊的3x3的區(qū)域得到的,說(shuō)白了就是我當(dāng)前這個(gè)值就是卷積結(jié)果5這個(gè)值,能看到能感受到前邊的輸入是3x3的。
第二次卷積得到結(jié)果1,是對(duì)前邊的輸入進(jìn)行卷積,他能感受到前一層是3x3的,前邊這個(gè)3x3他能感受到前邊一層(原始輸入數(shù)據(jù))的5x5的,比如就做兩次,那么我就說(shuō)最后一次的卷積結(jié)果是1,他當(dāng)前的感受野是5x5的;說(shuō)白了就是當(dāng)前最后得到的值他能看到前邊的是多少,或者說(shuō)最后這個(gè)值他是由前邊原始輸入數(shù)據(jù)中多少個(gè)值參與計(jì)算得到的。
?一般情況下希望感受野越大越好(我目前得到的值既與前景有關(guān)也與背景有關(guān))。
上邊所需參數(shù)的計(jì)算參見(jiàn)圖:?
2個(gè)3x3x3的Filter。?
總結(jié)
以上是生活随笔為你收集整理的卷积神经网络基础:(6)卷积神经网络原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 神经网络基础:(3)神经网络整体架构
- 下一篇: 卷积神经网络基础:(7)经典的网络架构