上一篇文章我們引出了GoogLeNet InceptionV1的網(wǎng)絡(luò)結(jié)構(gòu),這篇文章中我們會(huì)詳細(xì)講到Inception V2/V3/V4的發(fā)展歷程以及它們的網(wǎng)絡(luò)結(jié)構(gòu)和亮點(diǎn)。
GoogLeNet Inception V2
GoogLeNet Inception V2在《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》出現(xiàn),最大亮點(diǎn)是提出了Batch Normalization方法,它起到以下作用:
使用較大的學(xué)習(xí)率而不用特別關(guān)心諸如梯度爆炸或消失等優(yōu)化問(wèn)題;
降低了模型效果對(duì)初始權(quán)重的依賴(lài);
可以加速收斂,一定程度上可以不使用Dropout這種降低收斂速度的方法,但卻起到了正則化作用提高了模型泛化性;
即使不使用ReLU也能緩解激活函數(shù)飽和問(wèn)題;
能夠?qū)W習(xí)到從當(dāng)前層到下一層的分布縮放( scaling (方差),shift (期望))系數(shù)。
在機(jī)器學(xué)習(xí)中,我們通常會(huì)做一種假設(shè):訓(xùn)練樣本獨(dú)立同分布(iid)且訓(xùn)練樣本與測(cè)試樣本分布一致,如果真實(shí)數(shù)據(jù)符合這個(gè)假設(shè)則模型效果可能會(huì)不錯(cuò),反之亦然,這個(gè)在學(xué)術(shù)上叫Covariate Shift,所以從樣本(外部)的角度說(shuō),對(duì)于神經(jīng)網(wǎng)絡(luò)也是一樣的道理。從結(jié)構(gòu)(內(nèi)部)的角度說(shuō),由于神經(jīng)網(wǎng)絡(luò)由多層組成,樣本在層與層之間邊提特征邊往前傳播,如果每層的輸入分布不一致,那么勢(shì)必造成要么模型效果不好,要么學(xué)習(xí)速度較慢,學(xué)術(shù)上這個(gè)叫InternalCovariate Shift。
假設(shè):y為樣本標(biāo)注,X={x1,x2,x3,......}為樣本x
通過(guò)神經(jīng)網(wǎng)絡(luò)若干層后每層的輸入;
理論上:p(x,y)的聯(lián)合概率分布應(yīng)該與集合X中任意一層輸入的聯(lián)合概率分布一致,如:p(x,y)=p(x1,y);
但是:p(x,y)=p(y|x)?p(x),其中條件概率p(y|x)是一致的,即p(y|x)=p(y|x1)=p(y|x1)=......,但由于神經(jīng)網(wǎng)絡(luò)每一層對(duì)輸入分布的改變,導(dǎo)致邊緣概率是不一致的,即p(x)≠p(x1)≠p(x2)......,甚至隨著網(wǎng)絡(luò)深度的加深,前面層微小的變化會(huì)導(dǎo)致后面層巨大的變化。
BN整個(gè)算法過(guò)程如下:
以batch的方式做訓(xùn)練,對(duì)m個(gè)樣本求期望和方差后對(duì)訓(xùn)練數(shù)據(jù)做白化,通過(guò)白化操作可以去除特征相關(guān)性并把數(shù)據(jù)縮放在一個(gè)球體上,這么做的好處既可以加快優(yōu)化算法的優(yōu)化速度也可能提高優(yōu)化精度,一個(gè)直觀的解釋?zhuān)?/p>
左邊是未做白化的原始可行域,右邊是做了白化的可行域;
當(dāng)原始輸入對(duì)模型學(xué)習(xí)更有利時(shí)能夠恢復(fù)原始輸入(和殘差網(wǎng)絡(luò)有點(diǎn)神似):
這里的參數(shù)γ和σ是需要學(xué)習(xí)的。
卷積神經(jīng)網(wǎng)絡(luò)中的BN
卷積網(wǎng)絡(luò)中采用權(quán)重共享策略,每個(gè)feature map只有一對(duì)γ和σ需要學(xué)習(xí)。
GoogLeNet Inception V3
GoogLeNet Inception V3在《Rethinking the Inception Architecture for Computer Vision》中提出(注意,在這篇論文中作者把該網(wǎng)絡(luò)結(jié)構(gòu)叫做v2版,我們以最終的v4版論文的劃分為標(biāo)準(zhǔn)),該論文的亮點(diǎn)在于:
提出通用的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)準(zhǔn)則
引入卷積分解提高效率
引入高效的feature map降維
網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)的準(zhǔn)則
前面也說(shuō)過(guò),深度學(xué)習(xí)網(wǎng)絡(luò)的探索更多是個(gè)實(shí)驗(yàn)科學(xué),在實(shí)驗(yàn)中人們總結(jié)出一些結(jié)構(gòu)設(shè)計(jì)準(zhǔn)則,但說(shuō)實(shí)話(huà)我覺(jué)得不一定都有實(shí)操性:
避免特征表示上的瓶頸,尤其在神經(jīng)網(wǎng)絡(luò)的前若干層
神經(jīng)網(wǎng)絡(luò)包含一個(gè)自動(dòng)提取特征的過(guò)程,例如多層卷積,直觀并符合常識(shí)的理解:如果在網(wǎng)絡(luò)初期特征提取的太粗,細(xì)節(jié)已經(jīng)丟了,后續(xù)即使結(jié)構(gòu)再精細(xì)也沒(méi)法做有效表示了;舉個(gè)極端的例子:在宇宙中辨別一個(gè)星球,正常來(lái)說(shuō)是通過(guò)由近及遠(yuǎn),從房屋、樹(shù)木到海洋、大陸板塊再到整個(gè)星球之后進(jìn)入整個(gè)宇宙,如果我們一開(kāi)始就直接拉遠(yuǎn)到宇宙,你會(huì)發(fā)現(xiàn)所有星球都是球體,沒(méi)法區(qū)分哪個(gè)是地球哪個(gè)是水星。所以feature map的大小應(yīng)該是隨著層數(shù)的加深逐步變小,但為了保證特征能得到有效表示和組合其通道數(shù)量會(huì)逐漸增加。
下圖違反了這個(gè)原則,剛開(kāi)就始直接從35×35×320被抽樣降維到了17×17×320,特征細(xì)節(jié)被大量丟失,即使后面有Inception去做各種特征提取和組合也沒(méi)用。
對(duì)于神經(jīng)網(wǎng)絡(luò)的某一層,通過(guò)更多的激活輸出分支可以產(chǎn)生互相解耦的特征表示,從而產(chǎn)生高階稀疏特征,從而加速收斂,注意下圖的1×3和3×1激活輸出:
合理使用維度縮減不會(huì)破壞網(wǎng)絡(luò)特征表示能力反而能加快收斂速度,典型的例如通過(guò)兩個(gè)3×3代替一個(gè)5×5的降維策略,不考慮padding,用兩個(gè)3×3代替一個(gè)5×5能節(jié)省1-(3×3+3×3)/(5×5)=28%的計(jì)算消耗。
以及一個(gè)n×n卷積核通過(guò)順序相連的兩個(gè)1×n和n×1做降維(有點(diǎn)像矩陣分解),如果n=3,計(jì)算性能可以提升1-(3+3)/9=33%,但如果考慮高性能計(jì)算性能,這種分解可能會(huì)造成L1 cache miss率上升。
通過(guò)合理平衡網(wǎng)絡(luò)的寬度和深度優(yōu)化網(wǎng)絡(luò)計(jì)算消耗(這句話(huà)尤其不具有實(shí)操性)。
抽樣降維,傳統(tǒng)抽樣方法為pooling+卷積操作,為了防止出現(xiàn)特征表示的瓶頸,往往需要更多的卷積核,例如輸入為n個(gè)d×d的feature map,共有k個(gè)卷積核,pooling時(shí)stride=2,為不出現(xiàn)特征表示瓶頸,往往k的取值為2n,通過(guò)引入inception module結(jié)構(gòu),即降低計(jì)算復(fù)雜度,又不會(huì)出現(xiàn)特征表示瓶頸,實(shí)現(xiàn)上有如下兩種方式:
平滑樣本標(biāo)注
對(duì)于多分類(lèi)的樣本標(biāo)注一般是one-hot的,例如[0,0,0,1],使用類(lèi)似交叉熵的損失函數(shù)會(huì)使得模型學(xué)習(xí)中對(duì)ground truth標(biāo)簽分配過(guò)于置信的概率,并且由于ground truth標(biāo)簽的logit值與其他標(biāo)簽差距過(guò)大導(dǎo)致,出現(xiàn)過(guò)擬合,導(dǎo)致降低泛化性。一種解決方法是加正則項(xiàng),即對(duì)樣本標(biāo)簽給個(gè)概率分布做調(diào)節(jié),使得樣本標(biāo)注變成“soft”的,例如[0.1,0.2,0.1,0.6],這種方式在實(shí)驗(yàn)中降低了top-1和top-5的錯(cuò)誤率0.2%。
網(wǎng)絡(luò)結(jié)構(gòu)
GoogLeNet Inception V4
GoogLeNet Inception V4/和ResNet V1/V2這三種結(jié)構(gòu)在《Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning》一文中提出,論文的亮點(diǎn)是:提出了效果更好的GoogLeNet Inception v4網(wǎng)絡(luò)結(jié)構(gòu);與殘差網(wǎng)絡(luò)融合,提出效果不遜于v4但訓(xùn)練速度更快的結(jié)構(gòu)。
GoogLeNet Inception V4網(wǎng)絡(luò)結(jié)構(gòu)
GoogLeNet Inception ResNet網(wǎng)絡(luò)結(jié)構(gòu)
代碼實(shí)踐
Tensorflow的代碼在slim模塊下有完整的實(shí)現(xiàn),paddlepaddle的可以參考上篇文章中寫(xiě)的inception v1的代碼來(lái)寫(xiě)。
總結(jié)
這篇文章比較偏理論,主要講了GoogLeNet的inception模塊的發(fā)展,包括在v2中提出的batch normalization,v3中提出的卷積分級(jí)與更通用的網(wǎng)絡(luò)結(jié)構(gòu)準(zhǔn)則,v4中的與殘差網(wǎng)絡(luò)結(jié)合等,在實(shí)際應(yīng)用過(guò)程中可以可以對(duì)同一份數(shù)據(jù)用不同的網(wǎng)絡(luò)結(jié)構(gòu)跑一跑,看看結(jié)果如何,實(shí)際體驗(yàn)一下不同網(wǎng)絡(luò)結(jié)構(gòu)的loss下降速率,對(duì)準(zhǔn)確率的提升等。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4814瀏覽量
103641 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8503瀏覽量
134632
原文標(biāo)題:【深度學(xué)習(xí)系列】用PaddlePaddle和Tensorflow實(shí)現(xiàn)GoogLeNet InceptionV2/V3/V4
文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛(ài)好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
僅采用四只N溝道場(chǎng)效應(yīng)管的全橋驅(qū)動(dòng)電路

淺析SDIO協(xié)議V2和V3版本的區(qū)別
請(qǐng)教下大神下面這個(gè)電路中V1,V2,V3之間的關(guān)系,最好有計(jì)算過(guò)程
NodeMCU V2 Amica&V3 Lolin的盾牌
ESP devkitc v3與v4和CAN網(wǎng)絡(luò)之間有什么不同?
采用兩只N溝道和兩只P溝道場(chǎng)效應(yīng)管的全橋驅(qū)動(dòng)電路

Open AI推出神經(jīng)元可視化庫(kù)Microscope
ProDOS ROM-Drive v3-替換為v4開(kāi)源分享

基于YOLO-V5的網(wǎng)絡(luò)結(jié)構(gòu)及實(shí)現(xiàn)行人社交距離風(fēng)險(xiǎn)提示
NodeMCU V2 Amica V3 Lolin的盾牌

Core 3399 JD4 V2文檔3D結(jié)構(gòu)圖

評(píng)論