問題導讀:
1.卷積神經(jīng)網(wǎng)絡的基本單元?
2.典型卷積神經(jīng)網(wǎng)絡有哪些凄鼻?
3.卷積神經(jīng)網(wǎng)絡Inception系列的啟發(fā)疲恢?
往期回顧
在上一篇文章中剪验,我們介紹了"Hugh技術(shù)分享"的整體流程惊豺。在這篇文章中馒过,我們將介紹深度學習典型的網(wǎng)絡結(jié)構(gòu)—卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network, CNN)。圍繞CNN系列座菠,我們將介紹Inception系列狸眼、ResNet系列和輕型網(wǎng)絡系列。內(nèi)容如下:
卷積神經(jīng)網(wǎng)絡是什么浴滴?
卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks, CNN)是一種前饋神經(jīng)網(wǎng)絡拓萌,對大型圖像處理、圖像分類有出色表現(xiàn)升略。如下圖所示微王,CNN包括卷積層、池化層品嚣、全連接層等模塊炕倘。
卷積層
不同的卷積核將提取圖像的不同特征。
卷積操作能起到特征增強翰撑,并降低噪聲的作用罩旋。
激勵層
????Sigmoid等激活函數(shù):應用于傳統(tǒng)的神經(jīng)網(wǎng)絡(NN),存在缺陷眶诈。
1)NN含多個全連接層涨醋,故求梯度計算量大;
2)其在深層網(wǎng)絡中逝撬,易出現(xiàn)梯度消失等浴骂。
????ReLu克服了其一些缺陷:
1)多用于卷積層后,求解梯度簡單宪潮,且具有稀疏激活性溯警;
2)收斂速度快趣苏,在一定程度上緩解梯度消失。
????但由于ReLu單側(cè)抑制造成負值被稀疏掉梯轻,導致信息丟失食磕。ReLU變體PReLU、RReLU喳挑、ELU芬为、SELU
使用經(jīng)驗:
1) 避免使用sigmoid,可以嘗試RELU蟀悦;
2) 若ReLu失效,可用Leaky ReLU或者Maxout等氧敢;
3) 在某些情況下日戈,tanh有不錯的結(jié)果,例如生成對抗網(wǎng)絡在G中的激活函數(shù)使用RELU孙乖,但在輸出層使用的是Tanh?浙炼。
池化層
? 相較于卷積層,池化層更能減少參數(shù)唯袄。
? 池化層選擇區(qū)域的最大值(或平均值)取代區(qū)域弯屈。
? ? ? ?池化具有平移不變性:
? ? ? ? ?池化具有旋轉(zhuǎn)不變性:
全連接層
????? ?在整個卷積神經(jīng)網(wǎng)絡中起到“分類器”的作用,但其權(quán)重矩陣的參數(shù)非常多恋拷,容易過擬合资厉。
FC可以用GlobalAverage Pooling的方法代替
? ? ? Global Average Pooling 計算每個通道的特征圖的均值,將不同通道的均值連接成一個一維張量蔬顾。
深度神經(jīng)網(wǎng)絡發(fā)展如下:
1 早期網(wǎng)絡
CNN的開端:Lenet1986:
????????它由兩個卷積層宴偿,兩個池化層,以及兩個全連接層組成诀豁。其缺點是當時計算資源有限窄刘,收斂速度慢。
?ILSVRC2012 年冠軍:AlexNet 2012
? ? ? ? 它的優(yōu)點包括:1)數(shù)據(jù)增強舷胜,能夠緩解過擬合娩践;2)首次采用激活函數(shù)ReLu,收斂速度加快烹骨;3)dropout翻伺;4)Norm層(LRN);5)多gpu并行處理
多GPU并行計算展氓。
????? ? ?缺點: 卷積核尺寸大(11x11)穆趴,網(wǎng)絡參數(shù)多。
VGGnet 2014
????????VGG克服了Alexnet的7x7濾波器遇汞,由多個小尺寸3x3濾波器級聯(lián)而成未妹。其中簿废,3x3濾波器更易獲取圖像上下左右和中心信息,且多個3x3濾波器級聯(lián)更有非線性络它。
盡管VGG比Alex-net有更多的參數(shù)族檬,更深的層次;但是VGG收斂快化戳,僅需要較少的迭代次數(shù)单料。
為什么VGG收斂快?
1)深度和小的filter尺寸点楼,起到了隱式的規(guī)則化的作用扫尖;?
2)一些層的pre-initialisation;隨機初始化訓練網(wǎng)絡A掠廓,將A的前4層與全連接層作為其他網(wǎng)絡(B换怖、C)初始值,未賦值的中間層隨機初始化蟀瞧。
VGG的Multi-scale訓練新在何處沉颂?
? ? ? ?把原始 image縮放到最小邊S>224;然后在圖像上提取224*224圖像悦污,進行訓練铸屉。
方法1:在S=256,和S=384上訓練兩個模型切端,然后求平均彻坛;
方法2:在[256,512]scale上,隨機選取一個scale帆赢,然后提取224*224的圖片小压,訓練一個網(wǎng)絡。這種方法類似圖片尺寸上的數(shù)據(jù)增益椰于。
2 Inception系列
Inception V1:
為了克服Alexnet和Vgg參數(shù)量多怠益、訓練等問題,Inception V1采用一系列策略瘾婿,性能優(yōu)越蜻牢。? ?
出發(fā)點:Inception網(wǎng)絡的一個動機就是通過稀疏連接進行近似成“l(fā)arge and dense layers”。
?在網(wǎng)絡結(jié)構(gòu)方面:采用Inception近似一個稀疏結(jié)構(gòu)偏陪。將1x1抢呆,3x3,5x5的conv和3x3的pooling堆疊在一起笛谦。在分類器模塊中抱虐,GoogleNet V1用Average pooling 替換傳統(tǒng)的FC,呈現(xiàn)(AvgPool-1x1Conv-FC-FC-Softmax)饥脑。
? ? ? Inception模塊優(yōu)點:
1)增加了網(wǎng)絡的寬度恳邀;2)增加了網(wǎng)絡對尺度的適應性懦冰,提高了網(wǎng)絡內(nèi)部計算資源的利用率;3)1x1減少網(wǎng)絡參數(shù)谣沸,且起到信息融合的作用刷钢。
Inception V1之Data augmentation:
? ? ?1)圖像各種尺寸patch的采樣,這些patch的size平均分布在圖像區(qū)域的8%到100%間乳附,長寬比例在3/4和4/3間内地;
? ? ?2)設置參數(shù)contrast,? brightness 和color,調(diào)節(jié)光照變化有利于緩解過擬合赋除;
? ? ?3)使用隨機差值(bilinear, area, nearest neighbor and cubicwith equal probability)進行圖像的resize阱缓。?
Inception-V2 2015
Inception-V2在v1的基礎上進行了兩個方面改進。
? ? ? ?1)加入了BN層举农,減少了Internal Covariate Shift(內(nèi)部neuron的數(shù)據(jù)分布發(fā)生變化)茬祷,使每一層的輸出都規(guī)范化到一個N(0, 1)的高斯。
? ? ? ?2)參考VGG用2個3x3的conv替代inception模塊中的5x5并蝗,既降低了參數(shù)數(shù)量,也加速計算秸妥;
Inception-V2?其他優(yōu)勢與思考:
1) 可以使用更高的學習率滚停;
? ? 解釋:如果每層的scale不一致,實際上每層需要的學習率不一致粥惧。同一層不同維度的scale往往也需要不同大小的學習率键畴,通常使用最小的那個學習率才能保證損失函數(shù)有效下降,Batch Normalization將每層突雪、每維的scale保持一致起惕,才可以直接使用較高的學習率進行優(yōu)化。
2) 移除或使用較低的dropout咏删;
? ? ?解釋:dropout是常用的防止overfit的方法惹想,而導致overfit的位置往往在數(shù)據(jù)邊界處,如果初始化權(quán)重就已經(jīng)落在數(shù)據(jù)內(nèi)部督函,overfit現(xiàn)象就可以得到一定的緩解嘀粱。在論文中,最后的模型分別使用10%辰狡、5%和0%的dropout訓練模型锋叨,與之前的40%-50%相比,可以大大提高訓練速度宛篇。
3) 降低L2權(quán)重衰減系數(shù)娃磺;
? ? 解釋:邊界處的局部最優(yōu)往往有幾維的權(quán)重(斜率)較大,使用L2衰減可以緩解這一問題叫倍,使用Batch Normalization偷卧,就可以把這個值降低了豺瘤,論文中降低為原來的5倍。
4) 取消Local Response Normalization層涯冠;
? ? 解釋:由于使用了一種Normalization炉奴,再使用LRN就顯得沒那么必要了。而且LRN實際上也沒那么work蛇更。
5) 減少圖像扭曲的使用瞻赶;
? ? 解釋:由于現(xiàn)在訓練epoch數(shù)降低,所以要對輸入數(shù)據(jù)少做一些扭曲派任,讓神經(jīng)網(wǎng)絡多看看真實的數(shù)據(jù)砸逊。
Inception-v3
Inception-v3一個最重要的改進是分解,將7x7分解成兩個一維的卷積(1x7,7x1)掌逛,3x3也是一樣(1x3,3x1).
優(yōu)點:
????1)加速計算(多余的計算能力可以用來加深網(wǎng)絡)师逸,將1個conv拆成2個conv,使得網(wǎng)絡深度進一步增加豆混,增加了網(wǎng)絡的非線性篓像;
????2)網(wǎng)絡輸入從224x224變?yōu)榱?99x299,更加精細設計了35x35/17x17/8x8的模塊皿伺。
細節(jié):
????1)在輔助層加入了BN-auxiliary
????2)全連接層后面也進行BN操作员辩。
Inception-v4
? ??在網(wǎng)絡結(jié)構(gòu)方面,Inception-v4的Inception模塊結(jié)合Residual Connection鸵鸥。
此外奠滑,它的訓練策略和v3一樣。
優(yōu)點:
? ? ?ResNet的結(jié)構(gòu)可以極大地加速訓練妒穴,同時性能也有提升宋税。