網(wǎng)絡(luò)架構(gòu)發(fā)展

轉(zhuǎn)載https://www.cnblogs.com/skyfsm/p/8451834.html

先膜拜大神,講得太詳細(xì)了。

CNN網(wǎng)絡(luò)架構(gòu)演進(jìn):從LeNet到DenseNet

卷積神經(jīng)網(wǎng)絡(luò)可謂是現(xiàn)在深度學(xué)習(xí)領(lǐng)域中大紅大紫的網(wǎng)絡(luò)框架,尤其在計(jì)算機(jī)視覺(jué)領(lǐng)域更是一枝獨(dú)秀。CNN從90年代的LeNet開(kāi)始,21世紀(jì)初沉寂了10年,直到12年AlexNet開(kāi)始又再煥發(fā)第二春,從ZF Net到VGG,GoogLeNet再到ResNet和最近的DenseNet,網(wǎng)絡(luò)越來(lái)越深,架構(gòu)越來(lái)越復(fù)雜,解決反向傳播時(shí)梯度消失的方法也越來(lái)越巧妙。新年有假期,就好好總結(jié)一波CNN的各種經(jīng)典架構(gòu)吧,領(lǐng)略一下CNN的發(fā)展歷程中各路大神之間的智慧碰撞之美。

上面那圖是ILSVRC歷年的Top-5錯(cuò)誤率,我們會(huì)按照以上經(jīng)典網(wǎng)絡(luò)出現(xiàn)的時(shí)間順序?qū)λ麄冞M(jìn)行介紹。

本文將會(huì)談到以下經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò):

? ? 1. LeNet

? ? 2. AlexNet

? ? 3. ZF

? ? 4. VGG

? ? 5. GoogLeNet

? ? 6. ResNet

? ? 7. DenseNet

開(kāi)山之作:LeNet

閃光點(diǎn):定義了CNN的基本組件,是CNN的鼻祖。

LeNet是卷積神經(jīng)網(wǎng)絡(luò)的祖師爺LeCun在1998年提出,用于解決手寫(xiě)數(shù)字識(shí)別的視覺(jué)任務(wù)。自那時(shí)起,CNN的最基本的架構(gòu)就定下來(lái)了:卷積層、池化層、全連接層。如今各大深度學(xué)習(xí)框架中所使用的LeNet都是簡(jiǎn)化改進(jìn)過(guò)的LeNet-5(-5表示具有5個(gè)層),和原始的LeNet有些許不同,比如把激活函數(shù)改為了現(xiàn)在很常用的ReLu。

LeNet-5跟現(xiàn)有的conv->pool->ReLU的套路不同,它使用的方式是conv1->pool->conv2->pool2再接全連接層,但是不變的是,卷積層后緊接池化層的模式依舊不變。

以上圖為例,對(duì)經(jīng)典的LeNet-5做深入分析:

? ? 1. 首先輸入圖像是單通道的28*28大小的圖像,用矩陣表示就是[1,28,28]

? ? 2. 第一個(gè)卷積層conv1所用的卷積核尺寸為5*5,滑動(dòng)步長(zhǎng)為1,卷積核數(shù)目為20,那么經(jīng)過(guò)該層后圖像尺寸變?yōu)?4,28-5+1=24,輸出矩陣為[20,24,24]。

? ? 3. 第一個(gè)池化層pool核尺寸為2*2,步長(zhǎng)2,這是沒(méi)有重疊的max pooling,池化操作后,圖像尺寸減半,變?yōu)?2×12,輸出矩陣為[20,12,12]。

? ? 4. 第二個(gè)卷積層conv2的卷積核尺寸為5*5,步長(zhǎng)1,卷積核數(shù)目為50,卷積后圖像尺寸變?yōu)?,這是因?yàn)?2-5+1=8,輸出矩陣為[50,8,8].

? ? 5. 第二個(gè)池化層pool2核尺寸為2*2,步長(zhǎng)2,這是沒(méi)有重疊的max pooling,池化操作后,圖像尺寸減半,變?yōu)?×4,輸出矩陣為[50,4,4]。

? ? 6. pool2后面接全連接層fc1,神經(jīng)元數(shù)目為500,再接relu激活函數(shù)。

? ? 7. 再接fc2,神經(jīng)元個(gè)數(shù)為10,得到10維的特征向量,用于10個(gè)數(shù)字的分類(lèi)訓(xùn)練,送入softmaxt分類(lèi),得到分類(lèi)結(jié)果的概率output。

王者歸來(lái):AlexNet

AlexNet在2012年ImageNet競(jìng)賽中以超過(guò)第二名10.9個(gè)百分點(diǎn)的絕對(duì)優(yōu)勢(shì)一舉奪冠,從此深度學(xué)習(xí)和卷積神經(jīng)網(wǎng)絡(luò)名聲鵲起,深度學(xué)習(xí)的研究如雨后春筍般出現(xiàn),AlexNet的出現(xiàn)可謂是卷積神經(jīng)網(wǎng)絡(luò)的王者歸來(lái)。

閃光點(diǎn):

? ? 更深的網(wǎng)絡(luò)

? ? 數(shù)據(jù)增廣

? ? ReLU

? ? Dropout

? ? LRN

以上圖AlexNet架構(gòu)為例,這個(gè)網(wǎng)絡(luò)前面5層是卷積層,后面三層是全連接層,最終softmax輸出是1000類(lèi),取其前兩層進(jìn)行詳細(xì)說(shuō)明。

? ? 1. AlexNet共包含5層卷積層和三層全連接層,層數(shù)比LeNet多了不少,但卷積神經(jīng)網(wǎng)絡(luò)總的流程并沒(méi)有變化,只是在深度上加了不少。

? ? 2. AlexNet針對(duì)的是1000類(lèi)的分類(lèi)問(wèn)題,輸入圖片規(guī)定是256×256的三通道彩色圖片,為了增強(qiáng)模型的泛化能力,避免過(guò)擬合,作者使用了隨機(jī)裁剪的思路對(duì)原來(lái)256×256的圖像進(jìn)行隨機(jī)裁剪,得到尺寸為3×224×224的圖像,輸入到網(wǎng)絡(luò)訓(xùn)練。

? ? 1. 因?yàn)槭褂枚郍PU訓(xùn)練,所以可以看到第一層卷積層后有兩個(gè)完全一樣的分支,以加速訓(xùn)練。

? ? 2. 針對(duì)一個(gè)分支分析:第一層卷積層conv1的卷積核尺寸為11×11,滑動(dòng)步長(zhǎng)為4,卷積核數(shù)目為48。卷積后得到的輸出矩陣為[48,55,55]。這里的55是個(gè)難以理解的數(shù)字,作者也沒(méi)有對(duì)此說(shuō)明,如果按照正常計(jì)算的話(224-11)/4+1 != 55的,所以這里是做了padding再做卷積的,即先padiing圖像至227×227,再做卷積(227-11)/4+1 = 55。這些像素層經(jīng)過(guò)relu1單元的處理,生成激活像素層,尺寸仍為2組48×55×55的像素層數(shù)據(jù)。然后經(jīng)過(guò)歸一化處理,歸一化運(yùn)算的尺度為5*5。第一卷積層運(yùn)算結(jié)束后形成的像素層的規(guī)模為48×27×27。

? ? 3. 輸入矩陣是[48,55,55].接著是池化層,做max pooling操作,池化運(yùn)算的尺度為3*3,運(yùn)算的步長(zhǎng)為2,則池化后圖像的尺寸為(55-3)/2+1=27。所以得到的輸出矩陣是[48,27,27]。后面層不再重復(fù)敘述。

AlexNet用到訓(xùn)練技巧:

? ? 數(shù)據(jù)增廣技巧來(lái)增加模型泛化能力。

? ? 用ReLU代替Sigmoid來(lái)加快SGD的收斂速度

? ? Dropout:Dropout原理類(lèi)似于淺層學(xué)習(xí)算法的中集成算法,該方法通過(guò)讓全連接層的神經(jīng)元(該模型在前兩個(gè)全連接層引入Dropout)以一定的概率失去活性(比如0.5)失活的神經(jīng)元不再參與前向和反向傳播,相當(dāng)于約有一半的神經(jīng)元不再起作用。在測(cè)試的時(shí)候,讓所有神經(jīng)元的輸出乘0.5。Dropout的引用,有效緩解了模型的過(guò)擬合。

? ? Local Responce Normalization:局部響應(yīng)歸一層的基本思路是,假如這是網(wǎng)絡(luò)的一塊,比如是 13×13×256, LRN 要做的就是選取一個(gè)位置,比如說(shuō)這樣一個(gè)位置,從這個(gè)位置穿過(guò)整個(gè)通道,能得到 256 個(gè)數(shù)字,并進(jìn)行歸一化。進(jìn)行局部響應(yīng)歸一化的動(dòng)機(jī)是,對(duì)于這張 13×13 的圖像中的每個(gè)位置來(lái)說(shuō),我們可能并不需要太多的高激活神經(jīng)元。但是后來(lái),很多研究者發(fā)現(xiàn) LRN 起不到太大作用,因?yàn)椴⒉恢匾?,而且我們現(xiàn)在并不用 LRN 來(lái)訓(xùn)練網(wǎng)絡(luò)。

穩(wěn)步前行:ZF-Net

ZFNet是2013ImageNet分類(lèi)任務(wù)的冠軍,其網(wǎng)絡(luò)結(jié)構(gòu)沒(méi)什么改進(jìn),只是調(diào)了調(diào)參,性能較Alex提升了不少。ZF-Net只是將AlexNet第一層卷積核由11變成7,步長(zhǎng)由4變?yōu)?,第3,4,5卷積層轉(zhuǎn)變?yōu)?84,384,256。這一年的ImageNet還是比較平靜的一屆,其冠軍ZF-Net的名堂也沒(méi)其他屆的經(jīng)典網(wǎng)絡(luò)架構(gòu)響亮。

越走越深:VGG-Nets

VGG-Nets是由牛津大學(xué)VGG(Visual Geometry Group)提出,是2014年ImageNet競(jìng)賽定位任務(wù)的第一名和分類(lèi)任務(wù)的第二名的中的基礎(chǔ)網(wǎng)絡(luò)。VGG可以看成是加深版本的AlexNet. 都是conv layer + FC layer,在當(dāng)時(shí)看來(lái)這是一個(gè)非常深的網(wǎng)絡(luò)了,因?yàn)閷訑?shù)高達(dá)十多層,我們從其論文名字就知道了(《Very Deep Convolutional Networks for Large-Scale Visual Recognition》),當(dāng)然以現(xiàn)在的目光看來(lái)VGG真的稱(chēng)不上是一個(gè)very deep的網(wǎng)絡(luò)。

上面一個(gè)表格是描述的是VGG-Net的網(wǎng)絡(luò)結(jié)構(gòu)以及誕生過(guò)程。為了解決初始化(權(quán)重初始化)等問(wèn)題,VGG采用的是一種Pre-training的方式,這種方式在經(jīng)典的神經(jīng)網(wǎng)絡(luò)中經(jīng)常見(jiàn)得到,就是先訓(xùn)練一部分小網(wǎng)絡(luò),然后再確保這部分網(wǎng)絡(luò)穩(wěn)定之后,再在這基礎(chǔ)上逐漸加深。表1從左到右體現(xiàn)的就是這個(gè)過(guò)程,并且當(dāng)網(wǎng)絡(luò)處于D階段的時(shí)候,效果是最優(yōu)的,因此D階段的網(wǎng)絡(luò)也就是VGG-16了!E階段得到的網(wǎng)絡(luò)就是VGG-19了!VGG-16的16指的是conv+fc的總層數(shù)是16,是不包括max pool的層數(shù)!

下面這個(gè)圖就是VGG-16的網(wǎng)絡(luò)結(jié)構(gòu)。

由上圖看出,VGG-16的結(jié)構(gòu)非常整潔,深度較AlexNet深得多,里面包含多個(gè)conv->conv->max_pool這類(lèi)的結(jié)構(gòu),VGG的卷積層都是same的卷積,即卷積過(guò)后的輸出圖像的尺寸與輸入是一致的,它的下采樣完全是由max pooling來(lái)實(shí)現(xiàn)。

VGG網(wǎng)絡(luò)后接3個(gè)全連接層,filter的個(gè)數(shù)(卷積后的輸出通道數(shù))從64開(kāi)始,然后沒(méi)接一個(gè)pooling后其成倍的增加,128、512,VGG的注意貢獻(xiàn)是使用小尺寸的filter,及有規(guī)則的卷積-池化操作。

閃光點(diǎn):

? ? 卷積層使用更小的filter尺寸和間隔

與AlexNet相比,可以看出VGG-Nets的卷積核尺寸還是很小的,比如AlexNet第一層的卷積層用到的卷積核尺寸就是11*11,這是一個(gè)很大卷積核了。而反觀VGG-Nets,用到的卷積核的尺寸無(wú)非都是1×1和3×3的小卷積核,可以替代大的filter尺寸。

3×3卷積核的優(yōu)點(diǎn):

? ? 1. 多個(gè)3×3的卷基層比一個(gè)大尺寸filter卷基層有更多的非線性,使得判決函數(shù)更加具有判決性

? ? 2. 多個(gè)3×3的卷積層比一個(gè)大尺寸的filter有更少的參數(shù),假設(shè)卷基層的輸入和輸出的特征圖大小相同為C,那么三個(gè)3×3的卷積層參數(shù)個(gè)數(shù)3×(3×3×C×C)=27CC;一個(gè)7×7的卷積層參數(shù)為49CC;所以可以把三個(gè)3×3的filter看成是一個(gè)7×7filter的分解(中間層有非線性的分解)

1*1卷積核的優(yōu)點(diǎn):

? ? 作用是在不影響輸入輸出維數(shù)的情況下,對(duì)輸入進(jìn)行線性形變,然后通過(guò)Relu進(jìn)行非線性處理,增加網(wǎng)絡(luò)的非線性表達(dá)能力。

大浪推手:GoogLeNet

GoogLeNet在2014的ImageNet分類(lèi)任務(wù)上擊敗了VGG-Nets奪得冠軍,其實(shí)力肯定是非常深厚的,GoogLeNet跟AlexNet,VGG-Nets這種單純依靠加深網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)而改進(jìn)網(wǎng)絡(luò)性能的思路不一樣,它另辟幽徑,在加深網(wǎng)絡(luò)的同時(shí)(22層),也在網(wǎng)絡(luò)結(jié)構(gòu)上做了創(chuàng)新,引入Inception結(jié)構(gòu)代替了單純的卷積+激活的傳統(tǒng)操作(這思路最早由Network in Network提出)。GoogLeNet進(jìn)一步把對(duì)卷積神經(jīng)網(wǎng)絡(luò)的研究推上新的高度。

閃光點(diǎn):

? ? 1. 引入Inception結(jié)構(gòu)

? ? 2. 中間層的輔助LOSS單元

? ? 3. 后面的全連接層全部替換為簡(jiǎn)單的全局平均pooling

上圖結(jié)構(gòu)就是Inception,結(jié)構(gòu)里的卷積stride都是1,另外為了保持特征響應(yīng)圖大小一致,都用了零填充。最后每個(gè)卷積層后面都立刻接了個(gè)ReLU層。在輸出前有個(gè)叫concatenate的層,直譯的意思是“并置”,即把4組不同類(lèi)型但大小相同的特征響應(yīng)圖一張張并排疊起來(lái),形成新的特征響應(yīng)圖。Inception結(jié)構(gòu)里主要做了兩件事:1. 通過(guò)3×3的池化、以及1×1、3×3和5×5這三種不同尺度的卷積核,一共4種方式對(duì)輸入的特征響應(yīng)圖做了特征提取。2. 為了降低計(jì)算量。同時(shí)讓信息通過(guò)更少的連接傳遞以達(dá)到更加稀疏的特性,采用1×1卷積核來(lái)實(shí)現(xiàn)降維。

這里想再詳細(xì)談?wù)?×1卷積核的作用,它究竟是怎么實(shí)現(xiàn)降維的?,F(xiàn)在運(yùn)算如下:下面圖1是3×3卷積核的卷積,圖2是1×1卷積核的卷積過(guò)程。對(duì)于單通道輸入,1×1的卷積確實(shí)不能起到降維作用,但對(duì)于多通道輸入,就不不同了。假設(shè)你有256個(gè)特征輸入,256個(gè)特征輸出,同時(shí)假設(shè)Inception層只執(zhí)行3×3的卷積。這意味著總共要進(jìn)行 256×256×3×3的卷積(589000次乘積累加(MAC)運(yùn)算)。這可能超出了我們的計(jì)算預(yù)算,比方說(shuō),在Google服務(wù)器上花0.5毫秒運(yùn)行該層。作為替代,我們決定減少需要卷積的特征的數(shù)量,比如減少到64(256/4)個(gè)。在這種情況下,我們首先進(jìn)行256到64的1×1卷積,然后在所有Inception的分支上進(jìn)行64次卷積,接著再使用一個(gè)64到256的1×1卷積。

? ? 256×64×1×1 = 16000

? ? 64×64×3×3 = 36000

? ? 64×256×1×1 = 16000

現(xiàn)在的計(jì)算量大約是70000(即16000+36000+16000),相比之前的約600000,幾乎減少了10倍。這就通過(guò)小卷積核實(shí)現(xiàn)了降維。

現(xiàn)在再考慮一個(gè)問(wèn)題:為什么一定要用1×1卷積核,3×3不也可以嗎?考慮[50,200,200]的矩陣輸入,我們可以使用20個(gè)1×1的卷積核進(jìn)行卷積,得到輸出[20,200,200]。有人問(wèn),我用20個(gè)3×3的卷積核不是也能得到[20,200,200]的矩陣輸出嗎,為什么就使用1×1的卷積核?我們計(jì)算一下卷積參數(shù)就知道了,對(duì)于1×1的參數(shù)總數(shù):20×200×200×(1×1),對(duì)于3×3的參數(shù)總數(shù):20×200×200×(3×3),可以看出,使用1×1的參數(shù)總數(shù)僅為3×3的總數(shù)的九分之一!所以我們使用的是1×1卷積核。

GoogLeNet網(wǎng)絡(luò)結(jié)構(gòu)中有3個(gè)LOSS單元,這樣的網(wǎng)絡(luò)設(shè)計(jì)是為了幫助網(wǎng)絡(luò)的收斂。在中間層加入輔助計(jì)算的LOSS單元,目的是計(jì)算損失時(shí)讓低層的特征也有很好的區(qū)分能力,從而讓網(wǎng)絡(luò)更好地被訓(xùn)練。在論文中,這兩個(gè)輔助LOSS單元的計(jì)算被乘以0.3,然后和最后的LOSS相加作為最終的損失函數(shù)來(lái)訓(xùn)練網(wǎng)絡(luò)。

GoogLeNet還有一個(gè)閃光點(diǎn)值得一提,那就是將后面的全連接層全部替換為簡(jiǎn)單的全局平均pooling,在最后參數(shù)會(huì)變的更少。而在AlexNet中最后3層的全連接層參數(shù)差不多占總參數(shù)的90%,使用大網(wǎng)絡(luò)在寬度和深度允許GoogleNet移除全連接層,但并不會(huì)影響到結(jié)果的精度,在ImageNet中實(shí)現(xiàn)93.3%的精度,而且要比VGG還要快。

里程碑式創(chuàng)新:ResNet

2015年何愷明推出的ResNet在ISLVRC和COCO上橫掃所有選手,獲得冠軍。ResNet在網(wǎng)絡(luò)結(jié)構(gòu)上做了大創(chuàng)新,而不再是簡(jiǎn)單的堆積層數(shù),ResNet在卷積神經(jīng)網(wǎng)絡(luò)的新思路,絕對(duì)是深度學(xué)習(xí)發(fā)展歷程上里程碑式的事件。

閃光點(diǎn):

? ? 層數(shù)非常深,已經(jīng)超過(guò)百層

? ? 引入殘差單元來(lái)解決退化問(wèn)題

從前面可以看到,隨著網(wǎng)絡(luò)深度增加,網(wǎng)絡(luò)的準(zhǔn)確度應(yīng)該同步增加,當(dāng)然要注意過(guò)擬合問(wèn)題。但是網(wǎng)絡(luò)深度增加的一個(gè)問(wèn)題在于這些增加的層是參數(shù)更新的信號(hào),因?yàn)樘荻仁菑暮笙蚯皞鞑サ模黾泳W(wǎng)絡(luò)深度后,比較靠前的層梯度會(huì)很小。這意味著這些層基本上學(xué)習(xí)停滯了,這就是梯度消失問(wèn)題。深度網(wǎng)絡(luò)的第二個(gè)問(wèn)題在于訓(xùn)練,當(dāng)網(wǎng)絡(luò)更深時(shí)意味著參數(shù)空間更大,優(yōu)化問(wèn)題變得更難,因此簡(jiǎn)單地去增加網(wǎng)絡(luò)深度反而出現(xiàn)更高的訓(xùn)練誤差,深層網(wǎng)絡(luò)雖然收斂了,但網(wǎng)絡(luò)卻開(kāi)始退化了,即增加網(wǎng)絡(luò)層數(shù)卻導(dǎo)致更大的誤差,比如下圖,一個(gè)56層的網(wǎng)絡(luò)的性能卻不如20層的性能好,這不是因?yàn)檫^(guò)擬合(訓(xùn)練集訓(xùn)練誤差依然很高),這就是煩人的退化問(wèn)題。殘差網(wǎng)絡(luò)ResNet設(shè)計(jì)一種殘差模塊讓我們可以訓(xùn)練更深的網(wǎng)絡(luò)。

這里詳細(xì)分析一下殘差單元來(lái)理解ResNet的精髓。

從下圖可以看出,數(shù)據(jù)經(jīng)過(guò)了兩條路線,一條是常規(guī)路線,另一條則是捷徑(shortcut),直接實(shí)現(xiàn)單位映射的直接連接的路線,這有點(diǎn)類(lèi)似與電路中的“短路”。通過(guò)實(shí)驗(yàn),這種帶有shortcut的結(jié)構(gòu)確實(shí)可以很好地應(yīng)對(duì)退化問(wèn)題。我們把網(wǎng)絡(luò)中的一個(gè)模塊的輸入和輸出關(guān)系看作是y=H(x),那么直接通過(guò)梯度方法求H(x)就會(huì)遇到上面提到的退化問(wèn)題,如果使用了這種帶shortcut的結(jié)構(gòu),那么可變參數(shù)部分的優(yōu)化目標(biāo)就不再是H(x),若用F(x)來(lái)代表需要優(yōu)化的部分的話,則H(x)=F(x)+x,也就是F(x)=H(x)-x。因?yàn)樵趩挝挥成涞募僭O(shè)中y=x就相當(dāng)于觀測(cè)值,所以F(x)就對(duì)應(yīng)著殘差,因而叫殘差網(wǎng)絡(luò)。為啥要這樣做,因?yàn)樽髡哒J(rèn)為學(xué)習(xí)殘差F(X)比直接學(xué)習(xí)H(X)簡(jiǎn)單!設(shè)想下,現(xiàn)在根據(jù)我們只需要去學(xué)習(xí)輸入和輸出的差值就可以了,絕對(duì)量變?yōu)橄鄬?duì)量(H(x)-x 就是輸出相對(duì)于輸入變化了多少),優(yōu)化起來(lái)簡(jiǎn)單很多。

考慮到x的維度與F(X)維度可能不匹配情況,需進(jìn)行維度匹配。這里論文中采用兩種方法解決這一問(wèn)題(其實(shí)是三種,但通過(guò)實(shí)驗(yàn)發(fā)現(xiàn)第三種方法會(huì)使performance急劇下降,故不采用):

? ? 1. zero_padding:對(duì)恒等層進(jìn)行0填充的方式將維度補(bǔ)充完整。這種方法不會(huì)增加額外的參數(shù)

? ? 2. projection:在恒等層采用1x1的卷積核來(lái)增加維度。這種方法會(huì)增加額外的參數(shù)?

下圖展示了兩種形態(tài)的殘差模塊,左圖是常規(guī)殘差模塊,有兩個(gè)3×3卷積核卷積核組成,但是隨著網(wǎng)絡(luò)進(jìn)一步加深,這種殘差結(jié)構(gòu)在實(shí)踐中并不是十分有效。針對(duì)這問(wèn)題,右圖的“瓶頸殘差模塊”(bottleneck residual block)可以有更好的效果,它依次由1×1、3×3、1×1這三個(gè)卷積層堆積而成,這里的1×1的卷積能夠起降維或升維的作用,從而令3×3的卷積可以在相對(duì)較低維度的輸入上進(jìn)行,以達(dá)到提高計(jì)算效率的目的。?

繼往開(kāi)來(lái):DenseNet

自Resnet提出以后,ResNet的變種網(wǎng)絡(luò)層出不窮,都各有其特點(diǎn),網(wǎng)絡(luò)性能也有一定的提升。本文介紹的最后一個(gè)網(wǎng)絡(luò)是CVPR 2017最佳論文DenseNet,論文中提出的DenseNet(Dense Convolutional Network)主要還是和ResNet及Inception網(wǎng)絡(luò)做對(duì)比,思想上有借鑒,但卻是全新的結(jié)構(gòu),網(wǎng)絡(luò)結(jié)構(gòu)并不復(fù)雜,卻非常有效,在CIFAR指標(biāo)上全面超越ResNet??梢哉f(shuō)DenseNet吸收了ResNet最精華的部分,并在此上做了更加創(chuàng)新的工作,使得網(wǎng)絡(luò)性能進(jìn)一步提升。

閃光點(diǎn):

密集連接:緩解梯度消失問(wèn)題,加強(qiáng)特征傳播,鼓勵(lì)特征復(fù)用,極大的減少了參數(shù)量

DenseNet 是一種具有密集連接的卷積神經(jīng)網(wǎng)絡(luò)。在該網(wǎng)絡(luò)中,任何兩層之間都有直接的連接,也就是說(shuō),網(wǎng)絡(luò)每一層的輸入都是前面所有層輸出的并集,而該層所學(xué)習(xí)的特征圖也會(huì)被直接傳給其后面所有層作為輸入。下圖是 DenseNet 的一個(gè)dense block示意圖,一個(gè)block里面的結(jié)構(gòu)如下,與ResNet中的BottleNeck基本一致:BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3) ,而一個(gè)DenseNet則由多個(gè)這種block組成。每個(gè)DenseBlock的之間層稱(chēng)為transition layers,由BN?>Conv(1×1)?>averagePooling(2×2)組成

密集連接不會(huì)帶來(lái)冗余嗎?不會(huì)!密集連接這個(gè)詞給人的第一感覺(jué)就是極大的增加了網(wǎng)絡(luò)的參數(shù)量和計(jì)算量。但實(shí)際上 DenseNet 比其他網(wǎng)絡(luò)效率更高,其關(guān)鍵就在于網(wǎng)絡(luò)每層計(jì)算量的減少以及特征的重復(fù)利用。DenseNet則是讓l層的輸入直接影響到之后的所有層,它的輸出為:xl=Hl([X0,X1,…,xl?1]),其中[x0,x1,...,xl?1]就是將之前的feature map以通道的維度進(jìn)行合并。并且由于每一層都包含之前所有層的輸出信息,因此其只需要很少的特征圖就夠了,這也是為什么DneseNet的參數(shù)量較其他模型大大減少的原因。這種dense connection相當(dāng)于每一層都直接連接input和loss,因此就可以減輕梯度消失現(xiàn)象,這樣更深網(wǎng)絡(luò)不是問(wèn)題

需要明確一點(diǎn),dense connectivity 僅僅是在一個(gè)dense block里的,不同dense block 之間是沒(méi)有dense connectivity的,比如下圖所示。

但內(nèi)存占用極大。

?

垃圾博客太不好編輯了!?。?/p>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 大半夜被蚊子咬醒,真想把它滅了,一個(gè)夏天家里沒(méi)蚊子,夏天結(jié)束了居然有蚊子了
    畫(huà)畫(huà)的兔兒閱讀 213評(píng)論 0 0
  • 一只小蚊子不小心掉到了蛛網(wǎng)上。 一只蜘蛛緩慢的爬過(guò)來(lái),朝著它吐著絲。 要不要反抗?小蚊子想著。 但是它是一只很懂得...
    離生和阿穎閱讀 517評(píng)論 0 1
  • 理財(cái)計(jì)劃帶給了我一些潛移默化的改變,以前消費(fèi)是需要~獲取,金錢(qián)交易,不太在乎過(guò)程,現(xiàn)在漸漸的開(kāi)始體會(huì)消費(fèi)的過(guò)程,享...
    因猿際會(huì)閱讀 442評(píng)論 0 2
  • 論從社會(huì)管理到社會(huì)治理 傳統(tǒng)的社會(huì)管理,是計(jì)劃經(jīng)濟(jì)時(shí)代的政府對(duì)社會(huì)的全方位管理,政府具有權(quán)威性,管理責(zé)任的唯一性。...
    熏莉閱讀 218評(píng)論 0 0

友情鏈接更多精彩內(nèi)容