深度學(xué)習(xí)之GoogLeNet解讀
提出背景
本文引用地址:http://butianyuan.cn/article/201705/359304.htm?始于LeNet-5,一個(gè)有著標(biāo)準(zhǔn)的堆疊式卷積層冰帶有一個(gè)或多個(gè)全連接層的結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)。通常使用dropout來(lái)針對(duì)過(guò)擬合問(wèn)題。
?為了提出一個(gè)更深的網(wǎng)絡(luò),GoogLeNet做到了22層,利用inception結(jié)構(gòu),這個(gè)結(jié)構(gòu)很好地利用了網(wǎng)絡(luò)中的計(jì)算資源,并且在不增加計(jì)算負(fù)載的情況下,增加網(wǎng)絡(luò)的寬度和深度。同時(shí),為了優(yōu)化網(wǎng)絡(luò)質(zhì)量,采用了Hebbian原理和多尺度處理。GoogLeNet在分類(lèi)和檢測(cè)上都取得了不錯(cuò)的效果。
?最近深度學(xué)習(xí)的發(fā)展,大多來(lái)源于新的想法,算法以及網(wǎng)絡(luò)結(jié)構(gòu)的改善,而不是依賴(lài)于硬件,新的數(shù)據(jù)集,更深的網(wǎng)絡(luò),并且深度學(xué)習(xí)的研究不應(yīng)該完全專(zhuān)注于精確度的問(wèn)題上,而更應(yīng)該關(guān)注與網(wǎng)絡(luò)結(jié)構(gòu)的改善方面的工作。
相關(guān)工作
?GoogLeNet參考Robust object recognition with cortex-like mechanisms.中利用固定的多個(gè)Gabor濾波器來(lái)進(jìn)行多尺度處理的方法,對(duì)inception結(jié)構(gòu)中的所有濾波器都進(jìn)行學(xué)習(xí),并運(yùn)用至整個(gè)22層網(wǎng)絡(luò)。
?GoogLeNet參考Network in network.中對(duì)1x1卷積的使用來(lái)增加網(wǎng)絡(luò)深度的做法,GoogLeNet也利用了1x1卷積來(lái)進(jìn)行降維和限制網(wǎng)絡(luò)尺寸的作用。
?GoogLeNet參考Rich feature hierarchies for accurate object detection and semantic segmentation.即R-CNN將整個(gè)檢測(cè)任務(wù)分為兩個(gè)子問(wèn)題的做法,即首先利用底層特征如顏色,文本等來(lái)進(jìn)行提取與類(lèi)別無(wú)關(guān)的proposals,然后將這些proposals放入CNN中進(jìn)行訓(xùn)練來(lái)確定類(lèi)別信息的做法。GoogLeNet也借鑒這種方式,并對(duì)兩個(gè)階段都進(jìn)行了改進(jìn),第一個(gè)階段使用多邊框預(yù)測(cè),第二個(gè)階段則是使用更好的CNN網(wǎng)絡(luò)結(jié)構(gòu)。
基本思想及過(guò)程
?GoogLeNet提出最直接提升深度神經(jīng)網(wǎng)絡(luò)的方法就是增加網(wǎng)絡(luò)的尺寸,包括寬度和深度。深度也就是網(wǎng)絡(luò)中的層數(shù),寬度指每層中所用到的神經(jīng)元的個(gè)數(shù)。但是這種簡(jiǎn)單直接的解決方式存在的兩個(gè)重大的缺點(diǎn)。
(1) 網(wǎng)絡(luò)尺寸的增加也意味著參數(shù)的增加,也就使得網(wǎng)絡(luò)更加容易過(guò)擬合。
(2) 計(jì)算資源的增加。
?因此想到將全連接的方式改為稀疏連接來(lái)解決這兩個(gè)問(wèn)題。由Provable bounds for learning some deep representations.提到數(shù)據(jù)集的概率分布由大又稀疏的深度神經(jīng)網(wǎng)絡(luò)表達(dá)時(shí),網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)可由逐層分析與輸出高度相關(guān)的上一層的激活值和聚類(lèi)神經(jīng)元的相關(guān)統(tǒng)計(jì)信息來(lái)優(yōu)化。但是這有非常多的限制條件。因此提出運(yùn)用Hebbian原理,它可以使得上述想法在少量限制條件下就變得實(shí)際可行。
?通常全連接是為了更好的優(yōu)化并行計(jì)算,而稀疏連接是為了打破對(duì)稱(chēng)來(lái)改善學(xué)習(xí),傳統(tǒng)常常利用卷積來(lái)利用空間域上的稀疏性,但卷積在網(wǎng)絡(luò)的早期層中的與patches的連接也是稠密連接,因此考慮到能不能在濾波器層面上利用稀疏性,而不是神經(jīng)元上。但是在非均勻稀疏數(shù)據(jù)結(jié)構(gòu)上進(jìn)行數(shù)值計(jì)算效率很低,并且查找和緩存未定義的開(kāi)銷(xiāo)很大,而且對(duì)計(jì)算的基礎(chǔ)設(shè)施要求過(guò)高,因此考慮到將稀疏矩陣聚類(lèi)成相對(duì)稠密子空間來(lái)傾向于對(duì)稀疏矩陣的計(jì)算優(yōu)化。因此提出了inception結(jié)構(gòu)。
?inception結(jié)構(gòu)的主要思想在于卷積視覺(jué)網(wǎng)絡(luò)中一個(gè)優(yōu)化的局部稀疏結(jié)構(gòu)怎么樣能由一系列易獲得的稠密子結(jié)構(gòu)來(lái)近似和覆蓋。上面提到網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)是由逐層分析上一層的相關(guān)統(tǒng)計(jì)信息并聚集到一個(gè)高度相關(guān)的單元組中,這些簇(單元組)表達(dá)下一層的單元(神經(jīng)元)并與之前的單元相連接,而靠近輸入圖像的底層相關(guān)的單元在一塊局部區(qū)域聚集,這就意味著我們可以在一塊單一區(qū)域上聚集簇來(lái)結(jié)尾,并且他們能在下一層由一層1x1的卷積層覆蓋,也即利用更少的數(shù)量在更大空間擴(kuò)散的簇可由更大patches上的卷積來(lái)覆蓋,也將減少越來(lái)越大的區(qū)域上patches的數(shù)量。
?為了避免patch對(duì)齊問(wèn)題,因此限制了inception結(jié)構(gòu)中濾波器的大小為1x1,3x3,5x5。由于inception結(jié)構(gòu)中都是互相堆疊的,因此輸出相關(guān)統(tǒng)計(jì)信息一定不同:為了在高層能提取更抽象的特征,就要減少其空間聚集性,因此通過(guò)增加高層inception結(jié)構(gòu)中的3x3,5x5卷積數(shù)量,捕獲更大面積的特征。
?在上述inception結(jié)構(gòu)中,由于濾波器數(shù)量的增加,加上池化操作使得5x5大小的濾波器的計(jì)算開(kāi)銷(xiāo)非常大,池化層輸出與卷積層輸出的合并增加了輸出值的數(shù)量,并且可能覆蓋優(yōu)化稀疏結(jié)構(gòu),處理十分低效,引起計(jì)算爆炸。因此引出下面這個(gè)inception結(jié)構(gòu)。
?inception結(jié)構(gòu)中有很多嵌套,低維嵌套包含了大量的圖片patch信息,且這種嵌套表達(dá)了一個(gè)稠密且壓縮的信息的形式,但我們想要表達(dá)的更加稀疏,并且只在大量聚集的時(shí)候才對(duì)信號(hào)進(jìn)行壓縮,因此考慮利用在3x3和5x5卷積操作前進(jìn)行1x1卷積來(lái)進(jìn)行降維處理,1x1不僅降維,而且還引入了ReLU非線性激活。實(shí)際發(fā)現(xiàn),只在高層中使用inception結(jié)構(gòu)對(duì)整個(gè)網(wǎng)絡(luò)更加有利。
?inception結(jié)構(gòu)的好處在于在沒(méi)有計(jì)算復(fù)雜度不受控制的計(jì)算爆炸時(shí),可以增加每個(gè)階段的單元個(gè)數(shù),也就是網(wǎng)絡(luò)的寬度,當(dāng)然還有深度;同時(shí)這種結(jié)構(gòu)也類(lèi)似于圖像中多尺度處理之后將處理結(jié)果聚集在一起以便于下一個(gè)階段能同時(shí)提取不同尺寸下的特征。
?由于稀疏結(jié)構(gòu)的計(jì)算量大的問(wèn)題,所以采用1x1的卷積來(lái)減少參數(shù)的計(jì)算,其中1x1 卷積解釋為:
在3x3和5x5層前,各自增加一個(gè)1x1的卷積操作。1x1的卷積(或者網(wǎng)絡(luò)層中的網(wǎng)絡(luò)),提供了一個(gè)減少維度的方法。比如,我們假設(shè)你擁有一個(gè)輸入層,體積是100x100x60(這并不定是圖像的三個(gè)維度,只是網(wǎng)絡(luò)中每一層的輸入)。增加20個(gè)1x1的卷積濾波器,會(huì)讓你把輸入的體積減小到100x100x20。這意味著,3x3層和5x5層不需要處理輸入層那么大的體積。這可以被認(rèn)為是“池特征”(pooling of feature),因?yàn)槲覀冋跍p少體積的高度,這和使用常用的最大池化層(maxpooling layers)減少寬度和長(zhǎng)度類(lèi)似。另一個(gè)需要注意的是,這些1x1的卷積層后面跟著的是ReLU 單元,這肯定不會(huì)有害。
?有了上面的這種結(jié)構(gòu)形式,叫inception:這個(gè)inception模型由一個(gè)網(wǎng)絡(luò)層中的網(wǎng)絡(luò)、一個(gè)中等大小的過(guò)濾卷積、一個(gè)大型的過(guò)濾卷積、一個(gè)操作池(pooling operation)組成。網(wǎng)絡(luò)卷積層中的網(wǎng)絡(luò)能夠提取輸入體積中的每一個(gè)細(xì)節(jié)中的信息,同時(shí)5x5的濾波器也能夠覆蓋大部分接受層的的輸入,進(jìn)而能提起其中的信息。你也可以進(jìn)行一個(gè)池操作,以減少空間大小,降低過(guò)度擬合。在這些層之上,你在每一個(gè)卷積層后都有一個(gè)ReLU,這能改進(jìn)網(wǎng)絡(luò)的非線性特征?;旧希W(wǎng)絡(luò)在執(zhí)行這些基本的功能時(shí),還能同時(shí)考慮計(jì)算的能力。這篇論文還提供了更高級(jí)別的推理,包括的主題有稀疏和緊密聯(lián)結(jié)。
?上圖為GoogLeNet的網(wǎng)絡(luò)框圖細(xì)節(jié),其中“#3x3 reduce”,“#5x5 reduce”代表在3x3,5x5卷積操作之前使用1x1卷積的數(shù)量。輸入圖像為224x224x3,且都進(jìn)行了零均值化的預(yù)處理操作,所有降維層也都是用了ReLU非線性激活函數(shù)。
?如上圖用到了輔助分類(lèi)器,Inception?Net有22層深,除了最后一層的輸出,其中間節(jié)點(diǎn)的分類(lèi)效果也很好。因此在Inception?Net中,還使用到了輔助分類(lèi)節(jié)點(diǎn)(auxiliary?classifiers),即將中間某一層的輸出用作分類(lèi),并按一個(gè)較小的權(quán)重(0.3)加到最終分類(lèi)結(jié)果中。這樣相當(dāng)于做了模型融合,同時(shí)給網(wǎng)絡(luò)增加了反向傳播的梯度信號(hào),也提供了額外的正則化,對(duì)于整個(gè)Inception?Net的訓(xùn)練很有裨益。
評(píng)論