卷积神经网络经典模型要点
文章目錄
- 一、對(duì)比
- 二、AlexNet
- 三、ZFNet
- 四、VGGNet
- 五、GoogLeNet
- 1、Inception-v1模型
- 2、Inception-v2模型
- 3、Inception-v3模型
- 4、Inception-v4模型
- 5、GoogLeNet模型
- 六、ResNet
一、對(duì)比
二、AlexNet
2012年ImageNet比賽分類(lèi)任務(wù)的冠軍,Top-5錯(cuò)誤率為16.4%,讓深度學(xué)習(xí)受到矚目。
該網(wǎng)絡(luò)輸入為2272273(原始數(shù)據(jù)為2242243,經(jīng)過(guò)預(yù)處理變?yōu)?27),由5個(gè)“卷積+relu+pooling”和3個(gè)全連接層構(gòu)成。
為什么將224預(yù)處理為227大小的圖像:如果為(224*224)的,(224-11)/4不等于整數(shù),而227的話剛好是整數(shù),利于計(jì)算和更多信息的保留,通過(guò)resize將224變?yōu)?27的
網(wǎng)絡(luò)特點(diǎn):
- 使用1500多萬(wàn)個(gè)代標(biāo)記的圖像訓(xùn)練,兩臺(tái)GPU,訓(xùn)練的5-6天
- 激活函數(shù):Relu,防止梯度消失,加速訓(xùn)練網(wǎng)絡(luò)
- 使用了數(shù)據(jù)增強(qiáng),如鏡像、裁剪、轉(zhuǎn)化等
- 使用dropout在全連接層,防止了過(guò)擬合問(wèn)題
- 采用了局部響應(yīng)歸一化,提高了精度
- 卷積核大小為11-5-3-3-3大小
深層網(wǎng)絡(luò)學(xué)習(xí)出來(lái)的特征是什么樣子的:
-
第一層:都是一些填充的塊狀物和邊界等特征
-
中間層:學(xué)習(xí)一些紋理特征
-
更高層:接近于分類(lèi)器的層級(jí),可以明顯的看到物體的形狀特征
-
最后一層:分類(lèi)層,完全是物體的不同的姿態(tài),根據(jù)不同的物體展現(xiàn)出不同姿態(tài)的特征了。
為什么使用全連接:
-
在CNN中全連接起到分類(lèi)器的作用,將前面提取的數(shù)據(jù)映射到標(biāo)記空間,將學(xué)習(xí)到的特征整合,也就是矩陣乘法
-
一般都是使用softmax函數(shù),將前面提取特征和權(quán)值乘積的得分函數(shù)映射到0-1之間的概率值
全連接為什么會(huì)被全局平均池化代替:
-
全連接參數(shù)眾多,約占網(wǎng)絡(luò)的80%,對(duì)計(jì)算機(jī)硬件要求很高,且網(wǎng)絡(luò)容易過(guò)擬合
-
GPA:對(duì)輸出的10個(gè)特征圖分別求取平均,得到一個(gè)1*10的特征向量,在經(jīng)過(guò)softmax映射,減少很多參數(shù)。
三、ZFNet
2013年冠軍,整體架構(gòu)和AlexNet很像,錯(cuò)誤率為11.2%,也是一個(gè)8層的網(wǎng)絡(luò)。
- ZFNet只用了130萬(wàn)張訓(xùn)練,AlexNet用了1500多萬(wàn)張
- 激活函數(shù):Relu
- 損失函數(shù):交叉熵?fù)p失
- 訓(xùn)練方式:小批量梯度下降
- 一臺(tái)GPU訓(xùn)練12天
- 開(kāi)發(fā)了可視化技術(shù)“解卷積網(wǎng)絡(luò)”,有助于窺探CNN內(nèi)部機(jī)理,提供了直觀信息。
- ZFNet濾波器大小為77(步長(zhǎng)為2),AlexNet濾波器為1111(步長(zhǎng)為4),對(duì)于輸入數(shù)據(jù)來(lái)說(shuō)第一層卷積有助于保留大量的原始像素信息,大的濾波器會(huì)過(guò)濾掉大量相關(guān)信息。
四、VGGNet
2014年識(shí)別任務(wù)亞軍,定位任務(wù)冠軍。構(gòu)建了16~19層的深層網(wǎng)絡(luò),分類(lèi)錯(cuò)誤率達(dá)到了7.3%,適合做遷移學(xué)習(xí)。
該網(wǎng)絡(luò)全部使用了33卷積核做卷積,22的卷積核做池化,通過(guò)不斷加深網(wǎng)絡(luò)結(jié)構(gòu)來(lái)提升性能,
D組參數(shù)的效果最好,詳細(xì)介紹如下:
VGG-16比VGG-19少了三個(gè)卷積層。
VGGNet網(wǎng)絡(luò)結(jié)構(gòu)特點(diǎn):
-
拋棄了LRN層
-
使用的卷積核都是33的(s=1,p=1),拋棄了大的卷積核,3個(gè)33卷積核的組合可以達(dá)到77感受野,可以使用更多的Relu函數(shù),增加非線性,而且減少了參數(shù),池化層都采用22的maxpooling(s=2)。
-
更加驗(yàn)證了網(wǎng)絡(luò)越深,效果越好
-
使用小批量梯度下降,批尺寸為256
-
采用L2正則化
-
dropout:用在前兩個(gè)全連接層之后,p=0.5
-
參數(shù)初始化:w~N(0,0.01),偏置為0
-
數(shù)據(jù)增強(qiáng)
五、GoogLeNet
2014年圖像分類(lèi)任務(wù)的冠軍,錯(cuò)誤率降低至6.7%,是一個(gè)22層的網(wǎng)絡(luò)。
- VGGNet的參數(shù)量是AlexNet的三倍多,GoogLeNet考慮了內(nèi)存和計(jì)算資源,只有五百萬(wàn)個(gè)參數(shù),比六千萬(wàn)參數(shù)的AlexNet少12倍。
GoogLeNet出來(lái)之前,主流的網(wǎng)絡(luò)結(jié)構(gòu)是使網(wǎng)絡(luò)更深更寬,但是這樣會(huì)存在一些缺點(diǎn):
-
訓(xùn)練集有限時(shí),參數(shù)過(guò)多,出現(xiàn)過(guò)擬合
-
網(wǎng)絡(luò)越大,計(jì)算復(fù)雜度越大,設(shè)計(jì)起來(lái)困難
-
網(wǎng)絡(luò)層數(shù)增多的是,梯度消失越嚴(yán)重
GoogLeNet的優(yōu)勢(shì):更適合大量數(shù)據(jù)的處理,尤其是內(nèi)存或計(jì)算資源有限制的場(chǎng)合,計(jì)算效率有優(yōu)勢(shì)且分類(lèi)準(zhǔn)確率很高。
1、Inception-v1模型
一般的卷積層只是一味的增加卷積層的深度,且每層卷積核只有一種大小,特征提取能力較弱,GoogLeNet提出的Inception模型,在同一層并行的使用不同大小的卷積核對(duì)經(jīng)過(guò)padding的輸入圖像進(jìn)行卷積,對(duì)不同的特征圖在深度方向進(jìn)行組合。
Inception-v1使用11、33、5*5的卷積核分別進(jìn)行特征提取,之后將其進(jìn)行組合。
下圖表示了Inception-v1的模型:
原本的形式是未添加11的卷積核的,但是如果所有的卷積核都在上一層的所有輸出層來(lái)做,那么55的卷積核計(jì)算量太大,所以添加了1*1的卷積核來(lái)起到降維的作用。
模型特點(diǎn):
-
去除了全連接層,用平均池化來(lái)代替
-
Inception模型提高了參數(shù)利用率,可以反復(fù)堆疊形成一個(gè)大網(wǎng)絡(luò)
2、Inception-v2模型
改進(jìn):
-
添加了BN層,減少了由數(shù)據(jù)分布不同而導(dǎo)致學(xué)習(xí)能力下降,和計(jì)算復(fù)雜增大的情況,使每層的輸入都?xì)w一化。
-
用兩個(gè)33的卷積核代替v1模型的55,降低了參數(shù)數(shù)量,加速了計(jì)算
3、Inception-v3模型
改進(jìn):最重要的改進(jìn)就是分解,將33的分解為13和3*1的卷積
既然將大的卷積核分解為小的卷積核可以實(shí)現(xiàn)等效的效果,那么說(shuō)明大的卷積核的部分參數(shù)是冗余的,也就是不需要5*5的卷積核提供的25個(gè)參數(shù)特征,可能是因?yàn)閳D像區(qū)域的關(guān)聯(lián)性很強(qiáng),卷積核參的關(guān)聯(lián)性也很強(qiáng),可以進(jìn)一步壓縮,相當(dāng)于緊密網(wǎng)絡(luò)到稀疏網(wǎng)絡(luò)的轉(zhuǎn)換。
Inception-v3提出了上圖的分解方式,先用13的卷積核卷積,再接一個(gè)31的卷積核,可以明顯的降低參數(shù)量和計(jì)算量。所以Inception-v3將所有的nn的卷積核都分解為 n1和1*n的疊加。
3×3的卷積使用3×1卷積和1×3卷積代替,這種結(jié)構(gòu)在前幾層效果不太好,但對(duì)特征圖大小為12~20的中間層效果明顯。
Inception-v3模型總共有46層,由11個(gè)Inception模塊組成。其架構(gòu)如所示:
圖中每個(gè)多通道的集合就是一個(gè)inception模塊,共96個(gè)卷積層,一般遷移學(xué)習(xí)就會(huì)保留瓶頸層及其之前的參數(shù),僅僅替換最后一層全連接層,重新進(jìn)行微調(diào)來(lái)適應(yīng)自己的項(xiàng)目。
4、Inception-v4模型
Inception-v3到inception-v4網(wǎng)絡(luò)變得更深了,在GAP前Inception-v3包括了4個(gè)卷積模塊運(yùn)算(1個(gè)常規(guī)卷積塊+3個(gè)inception結(jié)構(gòu)),Inception-v4變成了6個(gè)卷積模塊。對(duì)比兩者的卷積核的個(gè)數(shù),Inception-v4比Inception-v3也增多了許多。
5、GoogLeNet模型
訓(xùn)練過(guò)程:先訓(xùn)練得到一組權(quán)重參數(shù),也就是第一個(gè)分支softmax0,再用這些參數(shù)作為初始化參數(shù),訓(xùn)練第二部分網(wǎng)絡(luò),得到第二個(gè)分支softmax1,再用這些參數(shù)作為初始化參數(shù),訓(xùn)練第三部分網(wǎng)絡(luò),得到softmax2。
目的:為了避免梯度消失,網(wǎng)絡(luò)額外增加兩個(gè)輔助的softmax用于前向傳播梯度,文章中說(shuō)這兩個(gè)輔助的分類(lèi)器的loss應(yīng)該加一個(gè)衰減系數(shù),實(shí)際測(cè)試的時(shí)候,這兩個(gè)額外的softmax會(huì)被去掉。
網(wǎng)絡(luò)特點(diǎn):
- 引入Inception模塊,利用同層多種不同大小的卷積核提取特征并進(jìn)行組合的方式提高了每層網(wǎng)絡(luò)的特征提取能力
- 利用小卷積核疊加的方式實(shí)現(xiàn)大卷積核的作用,減少了參數(shù)量,可以使用更多的relu,引入更多的非線性
- 使用了BN,將輸入歸一化為標(biāo)準(zhǔn)的高斯分布,提高網(wǎng)絡(luò)訓(xùn)練能力和訓(xùn)練速度
- 使用分支訓(xùn)練結(jié)構(gòu),輔助梯度傳播,避免梯度消失
六、ResNet
2015年分類(lèi)任務(wù)的第一名,錯(cuò)誤率降低到3.57%,152層網(wǎng)絡(luò)。
網(wǎng)絡(luò)深度提高,帶來(lái)的影響:常規(guī)的網(wǎng)絡(luò)越來(lái)越深的情況下,會(huì)出現(xiàn)梯度消失
可以看出,隨著網(wǎng)絡(luò)層級(jí)的不斷增加,模型精度不斷得到提升,但是提升到20層以后的時(shí)候,訓(xùn)練精度和測(cè)試精度迅速下降,更加難訓(xùn)練。說(shuō)明網(wǎng)絡(luò)并不是越深越好。
ResNet網(wǎng)絡(luò)的思想來(lái)源:假設(shè)有一個(gè)較淺的網(wǎng)絡(luò)達(dá)到了飽和的準(zhǔn)確率,這時(shí)在它后面追加幾個(gè)恒等映射,這樣就增加了網(wǎng)絡(luò)深度,且誤差不會(huì)增加,也就是更深的網(wǎng)絡(luò)不會(huì)帶來(lái)訓(xùn)練集上誤差的上升。
ResNet就是利用恒等映射將前一層的輸出傳遞到后面層
假設(shè)網(wǎng)絡(luò)的輸入為x,期望輸出為H(x),如果直接學(xué)習(xí)的話,訓(xùn)練難度會(huì)很大,上圖的殘差網(wǎng)絡(luò)是通過(guò)捷徑連接,將本層的輸入x直接傳到本層輸出,假設(shè)輸入x和期望輸出H(x)的殘差為F(x),當(dāng)F(x)=0的時(shí)候,輸入和期望相等,也就是恒等變換,所以ResNet網(wǎng)絡(luò)的訓(xùn)練目標(biāo)就是將F(x)逼近于0,使網(wǎng)絡(luò)深度加深,準(zhǔn)確率不變。
訓(xùn)練目標(biāo):將目標(biāo)和輸入的殘差逼近于0,使網(wǎng)絡(luò)加深而準(zhǔn)確率不降
為什么要很深的網(wǎng)絡(luò):圖像是層次非常深的數(shù)據(jù),所以要深層次的網(wǎng)絡(luò)進(jìn)行特征提取,網(wǎng)絡(luò)深度對(duì)深層特征提取很有意義。
各條路線的意義:
-
**第一條直接向下的網(wǎng)絡(luò):**試圖從x中直接學(xué)習(xí)殘差F(x)
-
**第二條捷徑網(wǎng)絡(luò):**直接傳遞x
-
**整合:**將兩者相加,就是要求的輸出映射H(x)
**為什么要添加捷徑網(wǎng)絡(luò):**只有一條通路的反向傳播會(huì)導(dǎo)致連乘的梯度消失,兩條路會(huì)使得變?yōu)榍蠛偷男问?#xff0c;避免梯度消失。后面的層可以看見(jiàn)輸入,不會(huì)因?yàn)樾畔p失而失去學(xué)習(xí)能力。
和傳統(tǒng)網(wǎng)絡(luò)的不同:傳統(tǒng)網(wǎng)絡(luò)每次會(huì)學(xué)習(xí)x->H(x)的完整映射,ResNet只學(xué)習(xí)殘差的映射
反向傳播的時(shí)候,捷徑連接的梯度為1,傳到前一層的梯度就會(huì)多一個(gè)1,更加有效的訓(xùn)練。
ResNet34(左)和ResNet50/101/152(右)示意圖:
右邊的結(jié)構(gòu)可以用第一個(gè)11的卷積核將厚度為256的輸入降到64維,然后再通過(guò)第二個(gè)11的卷積核恢復(fù)
總結(jié)
以上是生活随笔為你收集整理的卷积神经网络经典模型要点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 小米集团全球副总裁Manu Kumar
- 下一篇: [深度学习]CNN--卷积神经网络中用1