三個模型對CNN結(jié)構(gòu)演變進(jìn)行總結(jié)
導(dǎo)言:
自2012年AlexNet在ImageNet比賽上獲得冠軍,卷積神經(jīng)網(wǎng)絡(luò)逐漸取代傳統(tǒng)算法成為了處理計算機視覺任務(wù)的核心。
在這幾年,研究人員從提升特征提取能力,改進(jìn)回傳梯度更新效果,縮短訓(xùn)練時間,可視化內(nèi)部結(jié)構(gòu),減少網(wǎng)絡(luò)參數(shù)量,模型輕量化, 自動設(shè)計網(wǎng)絡(luò)結(jié)構(gòu)等這些方面,對卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)有了較大的改進(jìn),逐漸研究出了AlexNet、ZFNet、VGG、NIN、GoogLeNet和Inception系列、ResNet、WRN和DenseNet等一系列經(jīng)典模型,MobileNet系列、ShuffleNet系列、SqueezeNet和Xception等輕量化模型。
在本文將對這些經(jīng)典模型的結(jié)構(gòu)設(shè)計演變做一個總結(jié),旨在讓讀者了解一些結(jié)構(gòu)的設(shè)計原理,產(chǎn)生效果的原因。在面對一個具體任務(wù)時能夠準(zhǔn)確地選擇一個合理的特征提取網(wǎng)絡(luò),而不是隨便選擇一個。在自主設(shè)計網(wǎng)絡(luò)時,也能根據(jù)總結(jié)的原則和經(jīng)驗設(shè)計出合理的結(jié)構(gòu),避免隨心設(shè)計。
本文來源于公眾號CV技術(shù)指南的技術(shù)總結(jié)系列。
更多內(nèi)容請關(guān)注公眾號CV技術(shù)指南,專注于計算機視覺的技術(shù)總結(jié),最新技術(shù)跟蹤。
CNN結(jié)構(gòu)演變總結(jié)
在這個系列將按照以下三個部分對CNN結(jié)構(gòu)演變進(jìn)行總結(jié)。
一、經(jīng)典模型,對AlexNet、VGG、NIN、GoogLeNet和Inception系列、ResNet、WRN和DenseNet這些模型的結(jié)構(gòu)設(shè)計部分進(jìn)行總結(jié)。
二、輕量化模型,對MobileNet系列、ShuffleNet系列、SqueezeNet和Xception等輕量化模型總結(jié)介紹輕量化的原理,設(shè)計原則。
三、對前面經(jīng)典模型、輕量化模型中一些經(jīng)典設(shè)計進(jìn)行總結(jié)。如1x1卷積的作用、兩種池化的應(yīng)用場合、降低過擬合的方法、歸一化方法、卷積層大小尺寸的設(shè)計原則和卷積核的作用等。
注:本系列沒有對自動化結(jié)構(gòu)網(wǎng)絡(luò)設(shè)計的模型進(jìn)行總結(jié),主要原因是模型是由算法根據(jù)具體任務(wù)自主設(shè)計而來,并非人工設(shè)計,因此并不知道其設(shè)計原理,對其總結(jié)的意義不大。
這些模型的詳細(xì)解讀,包括實驗,實際效果,完整結(jié)構(gòu),大部分都可在公眾號CV技術(shù)指南的模型解讀部分看到,少數(shù)模型的解讀將在后續(xù)更新。相關(guān)模型的原論文以及所有模型解讀的總結(jié)pdf,可關(guān)注公眾號 CV技術(shù)指南 回復(fù)“CNN模型”獲取。
LeNet
第一個卷積神經(jīng)網(wǎng)絡(luò)出現(xiàn)在1989年,這個網(wǎng)絡(luò)沒有名字,對讀者來說這個結(jié)構(gòu)沒什么新穎的,但其作為第一個卷積神經(jīng)網(wǎng)絡(luò),值得致敬。其結(jié)構(gòu)由卷積層和全連接層組成,激活函數(shù)使用tanh函數(shù),損失函數(shù)使用的是均方誤差MSE,使用了反向傳播算法和隨機梯度下降。值得一提的是,在這篇論文中還出現(xiàn)了權(quán)重共享和特征圖像的概念。
LeNet是同作者LeCun在另一篇論文中提出的,用于手寫數(shù)字識別。其結(jié)構(gòu)圖如下:
AlexNet(2012)
AlexNet是第一個深度神經(jīng)網(wǎng)絡(luò),結(jié)構(gòu)圖如下:
其創(chuàng)新之處有五處:
1. 使用ReLU作為激活函數(shù)。
2. 提出在全連接層使用Dropout避免過擬合。注:當(dāng)BN提出后,Dropout就被BN替代了。
3. 由于GPU顯存太小,使用了兩個GPU,做法是在通道上分組。這算不上創(chuàng)新,之所以在這里寫上這一點,是因為它是ShuffleNet_v1使用分組卷積想法的來源。關(guān)于ShuffleNet_v1在公眾號CV技術(shù)指南的模型解讀中有詳細(xì)解讀。
4. 使用局部響應(yīng)歸一化(Local Response Normalization --LRN),在生物中存在側(cè)抑制現(xiàn)象,即被激活的神經(jīng)元會抑制周圍的神經(jīng)元。在這里的目的是讓局部響應(yīng)值大的變得相對更大,并抑制其它響應(yīng)值相對比較小的卷積核。例如,某特征在這一個卷積核中響應(yīng)值比較大,則在其它相鄰卷積核中響應(yīng)值會被抑制,這樣一來卷積核之間的相關(guān)性會變小。LRN結(jié)合ReLU,使得模型提高了一點多個百分點。
注:LRN后自Batch-Normalization出現(xiàn)后就再也沒用過了,我印象中只有FstCN 2015年(使用分解時空卷積的行為識別)中用了一次,因此讀者對這個可以不用去了解。
5. 使用重疊池化。作者認(rèn)為使用重疊池化會提升特征的豐富性,且相對來說會更難過擬合。注:使用重疊池化會出現(xiàn)棋盤格效應(yīng)。
NiN(2014)
創(chuàng)新之處有二:
1. 使用MLPconv,后來在其它模型中就演變成了1x1卷積。
2. 提出全局平均池化代替全連接層。
這樣做的好處有以下幾點:
1. 相比于使用全連接層,參數(shù)量極大地減少,相對來說沒那么容易過擬合。
2. 使得feature map直接映射到類別信息,這樣更符合卷積網(wǎng)絡(luò)的結(jié)構(gòu)。
3. 全局平均池化綜合了空間所有的信息,使得對輸入的空間轉(zhuǎn)換更魯棒。
也有一個缺點:必須固定輸入大小。
VGG(2014)
創(chuàng)新之處有二:
1. 使用了多個小尺寸的卷積核堆疊來代替一個大的卷積核,這樣參數(shù)更少,而感受野卻是一樣的。全部使用了3X3的尺寸,池化都是2x2,步長都為2。
2. 去掉了LRN。作者發(fā)現(xiàn)它效果不明顯。
GoogLeNet(2014)
GoogLeNet也稱為Inception_V1, 其后續(xù)還有三個改進(jìn)版,合稱Inception系列,對這個系列的解讀在模型解讀部分有詳細(xì)解讀,這里只介紹新穎之處。
創(chuàng)新之處有二:
1. 提出Inception Module。大家發(fā)現(xiàn)網(wǎng)絡(luò)越深越寬的效果越好,然而這樣會帶來以下幾個問題:
1) 參數(shù)量,計算量越來越大,在有限內(nèi)存和算力的設(shè)備上,其應(yīng)用也就越難以落地。
2) 對于一些數(shù)據(jù)集較少的場景,太大的模型反而容易過擬合,但模型太小則泛化能力不夠。
3) 容易出現(xiàn)梯度消失的問題。
解決這些問題比較直觀的方法就是采用稀疏連接來代替全連接層,但很明顯,由于底層是通過矩陣計算的,稀疏連接在參數(shù)量上減少了,但并沒有減少計算量。因此設(shè)計了如下左圖的結(jié)構(gòu)。
使用上面這個結(jié)構(gòu)又會出現(xiàn)一個問題,由于使用了在通道上拼接的方式,導(dǎo)致通道數(shù)很大,因此使用NiN中1x1卷積的方式降低通道數(shù)。最終決定使用如右圖所示的結(jié)構(gòu)
2. 使用了輔助分類函數(shù),如下圖所示,有3個softmax輸出位置,有兩個是在中間位置,這樣方便在中間層輸出分類,同時通過加權(quán)(中間0.3)的方式加到最終的分類結(jié)果中。作者認(rèn)為這樣能給模型增加反向傳播的梯度信號,緩解了梯度消失問題,在一定程度上也有正則化的效果。在推理階段,這兩個softmax將會去除。
注:后面的InceptionV2-V3論文中會發(fā)現(xiàn)這玩意沒用,但讀者可以在自己的方向上嘗試一下,也許會有用呢。
完整的結(jié)構(gòu)圖如下:
Inception_v2和Inception_v3
這兩者是出現(xiàn)在同一篇論文中,作者提出了很多改進(jìn)技術(shù),使用了其中一部分的稱為V2, 全部都使用的是V3。
創(chuàng)新之處有四:
1. 提出分解卷積。如將5x5卷積核分解為1x5和5x1的非對稱卷積堆疊。
最終還衍生出了下面這種混合式的模塊。(個人感覺沒必要這么干,意義不大)
2. 使用了批歸一化Batch-Normalization (BN), 關(guān)于BN,完整的介紹出現(xiàn)在另一篇論文中,公眾號CV技術(shù)指南中也有對其完整的解讀,感興趣的讀者可在模型解讀中的《Inception系列之Inception_v2》中看到。注:當(dāng)BN提出后,Dropout就被BN替代了。
3. 提出一種高效降低特征圖大小的方法。
在降低特征圖尺寸時,若按下圖這兩種方式設(shè)計,第一種會出現(xiàn)瓶頸,違背模型設(shè)計原則。(關(guān)于這些設(shè)計原則將會總結(jié)在《CNN結(jié)構(gòu)演變總結(jié)》的第三篇中),第二種方式則參數(shù)量巨大。
因此就出現(xiàn)了下面這種
4. 提出標(biāo)簽平滑化。如果模型在訓(xùn)練過程中學(xué)習(xí)使得全部概率值給ground truth標(biāo)簽,或者使得最大的Logit輸出值與其他的值差別盡可能地大,直觀來說就是模型預(yù)測的時候更自信,這樣將會出現(xiàn)過擬合,不能保證泛化能力。因此標(biāo)簽平滑化很有必要。
平滑化的方式是使得標(biāo)簽值小于1,而其它值大于0,如5個類,使得標(biāo)簽值為{0.05,0.05,0.8,0.05,0.05}。具體是由狄拉克函數(shù)函數(shù)實現(xiàn)的。感興趣的可看該論文的解讀。
完整的結(jié)構(gòu)如下:
Inception_v4, Inception_ResNet_v1和v2
在Inception系列的第四篇論文里,提出了三種結(jié)構(gòu),這三種結(jié)構(gòu)沒什么創(chuàng)新點,作者在論文中也沒有介紹為什么這么設(shè)計。
如果一定要說有創(chuàng)新點的話,主要就是在上面Inception_v2-v3的基礎(chǔ)上,第一種Inception_v4在Inception模塊上改了一些參數(shù),提出了幾個不同參數(shù)的Inception block,與v2和v3沒有本質(zhì)上的改變。第二第三種結(jié)構(gòu)在Inception模塊中加入了殘差連接,同樣是沒有本質(zhì)上的改變,且比較少見有用這三種作為特征提取網(wǎng)絡(luò)的,因此這里不多介紹。感興趣的看該論文的解讀,里面有完整的結(jié)構(gòu)。
ResNet(2015)
一般而言,網(wǎng)絡(luò)越深越寬會有更好的特征提取能力,但當(dāng)網(wǎng)絡(luò)達(dá)到一定層數(shù)后,隨著層數(shù)的增加反而導(dǎo)致準(zhǔn)確率下降,網(wǎng)絡(luò)收斂速度更慢。
針對這個問題,ResNet的創(chuàng)新之處有二:
1. 提出shortcut connection, 右邊直接連接的部分稱為identity mapping。該方法靈感來源于Highway Networks。
注:剛開始認(rèn)為殘差連接可以緩解梯度消失問題,但在后續(xù)的論文中經(jīng)過實驗證明它似乎并不能。
2. 提出瓶頸模塊( bottleneck block )。這個瓶頸模塊在MobileNet v2中有所應(yīng)用并調(diào)整。
使用瓶頸模塊構(gòu)建出了ResNet34, ResNet50, ResNet101, ResNet152等深層
神經(jīng)網(wǎng)絡(luò)。
WRN(2017)
使用identity mapping的殘差塊使我們可以訓(xùn)練一個非常深的網(wǎng)絡(luò),但與此同時,殘差塊也是殘差網(wǎng)絡(luò)的一個缺點。當(dāng)梯度流通過整個網(wǎng)絡(luò)時,網(wǎng)絡(luò)不會強迫梯度流過權(quán)重層(這會導(dǎo)致訓(xùn)練中學(xué)習(xí)不到什么)。所以很有可能少量的塊能夠?qū)W習(xí)有用的表達(dá),或者很多的塊分享非常少的信息,對最終結(jié)果影響很小。
創(chuàng)新之處有二:
1. 提出加寬殘差塊的方式,這種方式可以更加高效地提高殘差網(wǎng)絡(luò)性能,而不是增加網(wǎng)絡(luò)深度,使用這種方式構(gòu)建了wider residual networks (WRN)。
2. 提出在殘差塊中使用Dropout。前人的研究中,dropout被插入到了殘差網(wǎng)絡(luò)中的identity連接上,這導(dǎo)致性能下降。而WRN提出dropout插入到卷積層之間的方式使性能有所提升。
DenseNet(2018)
傳統(tǒng)的卷積網(wǎng)絡(luò)在一個前向過程中每層只有一個連接,ResNet增加了殘差連接從而增加了信息從一層到下一層的流動。FractalNets重復(fù)組合幾個有不同卷積塊數(shù)量的并行層序列,增加名義上的深度,卻保持著網(wǎng)絡(luò)前向傳播短的路徑。相類似的操作還有Stochastic depth和Highway Networks等。
這些模型都顯示一個共有的特征,縮短前面層與后面層的路徑,其主要的目的都是為了增加不同層之間的信息流動。
基于信息流動的方式,DenseNet創(chuàng)新之處有一:
1. 傳統(tǒng)L層的網(wǎng)絡(luò)僅有L個連接,在DenseNet中使用了L(L+1)/2個連接。這樣做有幾個明顯的優(yōu)點:避免了梯度消失問題,加強了特征傳播,實現(xiàn)特征復(fù)用(feature reuse),以及實質(zhì)上減少了參數(shù)量。
使用這個密集連接構(gòu)建了Dense Block
總結(jié):本文對比較經(jīng)典的一些模型在結(jié)構(gòu)上的創(chuàng)新之處進(jìn)行了總結(jié),讓讀者對目前特征提取網(wǎng)絡(luò)有一個比較全面的了解,通過對創(chuàng)新之處的總結(jié)概括,相信讀者對于CNN這種特征提取網(wǎng)絡(luò)的作用機制有了清晰的認(rèn)識。
本文來源于公眾號CV技術(shù)指南的技術(shù)總結(jié)系列。
更多內(nèi)容請關(guān)注公眾號CV技術(shù)指南,專注于計算機視覺的技術(shù)總結(jié),最新技術(shù)跟蹤。
在公眾號CV技術(shù)指南 中回復(fù)“CNN模型”可獲得以上模型的詳細(xì)解讀pdf以及論文原文,注:少部分模型沒有解讀。
在下一篇將對目前的輕量化網(wǎng)絡(luò)進(jìn)行總結(jié),在下篇中讀者將了解到,目前降低神經(jīng)網(wǎng)絡(luò)計算量的方式有哪些,設(shè)計這樣的方式的原理何在。
在第三篇中我們將對經(jīng)典模型和輕量化模型中涉及到的一些方法進(jìn)行總結(jié),介紹原理作用,總結(jié)在這些模型論文中提到的網(wǎng)絡(luò)設(shè)計原則,讓讀者可以根據(jù)具體任務(wù)自主設(shè)計網(wǎng)絡(luò)或選擇合適的網(wǎng)絡(luò),避免設(shè)計時胡亂選擇參數(shù)或隨意選擇網(wǎng)絡(luò)。

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達(dá)AI統(tǒng)治的開始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 “AI寒武紀(jì)”爆發(fā)至今,五類新物種登上歷史舞臺
- 4 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 5 國產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計算迎來商業(yè)化突破,但落地仍需時間
- 7 東陽光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開成長空間
- 8 地平線自動駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營收大增主靠小件,虧損繼續(xù)又逢關(guān)稅,能否乘機器人東風(fēng)翻身?