GoogleNet网络(纵横交错)
論文
該篇論文的作者在ILSVRC 2014比賽中提交的報(bào)告中使用了GoogLeNet,這是一個(gè)22層的深度網(wǎng)絡(luò)。在這里面提出了一種新的叫做Inception的結(jié)構(gòu)。該網(wǎng)絡(luò)具有很大的depth和width,但是參數(shù)數(shù)量卻僅為AlexNet的1/12。
《更深層的卷積》(Going deeper with convolutions)[2]。因?yàn)檫@篇論文的作者基本都來(lái)自于谷歌,所以文章提出的模型有時(shí)候又被叫作 GoogleNet。這篇論文擁有 8 千多次的引用數(shù)。
GoogleNet 不僅和 VGG 一樣在把架構(gòu)做“深”上下文章,而且在模型的效率上比 AlexNet 更加優(yōu)秀。作者們利用了比 AlexNet 少 12 倍的參數(shù),在更深的架構(gòu)上達(dá)到了更好的效果。
簡(jiǎn)介
GoogLeNet是谷歌(Google)研究出來(lái)的深度網(wǎng)絡(luò)結(jié)構(gòu),為什么不叫“GoogleNet”,而叫“GoogLeNet”,論文說(shuō)是為了向“LeNet”致敬,因此取名為“GoogLeNet”。
inception(也稱(chēng)GoogLeNet)是2014年Christian Szegedy提出的一種全新的深度學(xué)習(xí)結(jié)構(gòu), 在這之前的AlexNet、VGG等結(jié)構(gòu)都是通過(guò)增大網(wǎng)絡(luò)的深度(層數(shù))來(lái)獲得更好的訓(xùn)練效果, 但層數(shù)的增加會(huì)帶來(lái)很多負(fù)作用,比如overfit、梯度消失、梯度爆炸等。inception的提出則從另一種角度來(lái)提升訓(xùn)練結(jié)果:能更高效的利用計(jì)算資源,在相同的計(jì)算量下能提取到更多的特征,從而提升訓(xùn)練結(jié)果。
創(chuàng)新
GoogleNet 創(chuàng)新的重點(diǎn)是在網(wǎng)絡(luò)架構(gòu)上。和 AlexNet 以及 VGG 都不同的是,GoogleNet 的作者們認(rèn)為更加合適的網(wǎng)絡(luò)架構(gòu)不是簡(jiǎn)單地把相同的卷積層疊加起來(lái),然后再把相同的全聯(lián)通層疊加。如果我們需要更深的架構(gòu),必須從原理上對(duì)網(wǎng)絡(luò)架構(gòu)有一個(gè)不同的理解。作者們認(rèn)為,網(wǎng)絡(luò)結(jié)構(gòu)必須走向“稀疏化”(Sparsity),才能夠達(dá)到更深層次、更高效的目的。
那么,能否直接用稀疏結(jié)構(gòu)來(lái)進(jìn)行網(wǎng)絡(luò)的架構(gòu)呢?過(guò)去的經(jīng)驗(yàn)表明,這條路并不那么直觀。
第一,直接利用稀疏的結(jié)構(gòu)所表達(dá)的網(wǎng)絡(luò)結(jié)構(gòu)效果并不好,
第二,這樣做就無(wú)法利用現(xiàn)代的硬件,特別是 GPU 的加速功能?,F(xiàn)代的 GPU 之所以能夠高效地處理視覺(jué)以及其他一系列類(lèi)似的問(wèn)題,主要的原因就是快速的緊密矩陣運(yùn)算。所以,直接使用稀疏結(jié)構(gòu)有一定的挑戰(zhàn)。
一般來(lái)說(shuō),提升網(wǎng)絡(luò)性能最直接的辦法就是增加網(wǎng)絡(luò)深度和寬度,但是這樣會(huì)帶來(lái)一些缺陷:
參數(shù)太多,容易過(guò)擬合
網(wǎng)絡(luò)越大計(jì)算復(fù)雜度越大,難以應(yīng)用
網(wǎng)絡(luò)越深,梯度越往后越容易消失
于是GoogLeNet針對(duì)這些問(wèn)題給出了兩個(gè)解決方案:
深度方面:層數(shù)更深,文章采用了22層,為了避免上述提到的梯度消失問(wèn)題,GoogLeNet巧妙的在不同深度處增加了兩個(gè)loss來(lái)保證梯度回傳消失的現(xiàn)象。
寬度方面:采用了Inception結(jié)構(gòu),這是一種網(wǎng)中網(wǎng)(Network In Network)的結(jié)構(gòu),即原來(lái)的結(jié)點(diǎn)也是一個(gè)網(wǎng)絡(luò)。
初步inception結(jié)構(gòu)
初始結(jié)構(gòu)的主要思想是找出卷積視覺(jué)網(wǎng)絡(luò)中的最優(yōu)局部稀疏結(jié)構(gòu)是如何被容易獲得的稠密分量逼近和覆蓋的。
用分層結(jié)構(gòu),分析最后一層的相關(guān)統(tǒng)計(jì)數(shù)據(jù),并將其聚類(lèi)成高相關(guān)的單元組。這些簇構(gòu)成下一層的單元,并連接到上一層的單元。
當(dāng)時(shí)的Inception體系結(jié)構(gòu)僅限于1×1、3×3和5×5大小的過(guò)濾器。體系結(jié)構(gòu)是所有這些層及其輸出濾波器組的組合,這些濾波器組連接成一個(gè)輸出向量,形成下一階段的輸入。
結(jié)構(gòu)存在問(wèn)題:即使是少量的5×5卷積,在具有大量濾波器的卷積層上也會(huì)非常昂貴,至少在這種簡(jiǎn)單的形式下是這樣。 為此,文章借鑒NIN2,采用1x1卷積核來(lái)進(jìn)行降維。這也就形成了以下改進(jìn)后的inception結(jié)構(gòu)。
改進(jìn)inceptionv0結(jié)構(gòu)
在分支2,3,4上加入了卷積核大小為1x1的卷積層,目的是為了降維(減小深度),減少模型訓(xùn)練參數(shù),減少計(jì)算量。
在上述模塊的基礎(chǔ)上,為進(jìn)一步降低網(wǎng)絡(luò)參數(shù)量,Inception又增加了多個(gè)1×1的卷積模塊。如圖所示,這種1×1的模塊可以先將特征圖降維,再送給3×3和5×5大小的卷積核,由于通道數(shù)的降低,參數(shù)量也有了較大的減少。值得一提的是,用1×1卷積核實(shí)現(xiàn)降維的思想,在后面的多個(gè)輕量化網(wǎng)絡(luò)中都會(huì)使用到。
Inception v1網(wǎng)絡(luò)一共有9個(gè)上述堆疊的模塊,共有22層,在最后的Inception模塊處使用了全局平均池化。為了避免深層網(wǎng)絡(luò)訓(xùn)練時(shí)帶來(lái)的梯度消失問(wèn)題,作者還引入了兩個(gè)輔助的分類(lèi)器,在第3個(gè)與第6個(gè)Inception模塊輸出后執(zhí)行Softmax并計(jì)算損失,在訓(xùn)練時(shí)和最后的損失一并回傳。
改進(jìn)inception結(jié)構(gòu)
在Inception v1網(wǎng)絡(luò)的基礎(chǔ)上,隨后又出現(xiàn)了多個(gè)Inception版本。 Inception v2進(jìn)一步通過(guò)卷積分解與正則化實(shí)現(xiàn)更高效的計(jì)算,增加了 BN層,同時(shí)利用兩個(gè)級(jí)聯(lián)的3×3卷積取代了Inception v1版本中的5×5卷積,如圖3.15所示,這種方式既減少了卷積參數(shù)量,也增加了網(wǎng)絡(luò)的非線性能力
更進(jìn)一步,Inceptionv2將n×n的卷積運(yùn)算分解為1×n與n×1兩個(gè)卷積,如圖3.16所示,這種分解的方式可以使計(jì)算成本降低33%。
Inception v3在Inception v2的基礎(chǔ)上,使用了RMSProp優(yōu)化器,在輔助的分類(lèi)器部分增加了7×7的卷積,并且使用了標(biāo)簽平滑技術(shù)。
Inception v4則是將Inception的思想與殘差網(wǎng)絡(luò)進(jìn)行了結(jié)合,顯著提升了訓(xùn)練速度與模型準(zhǔn)確率,這里對(duì)于模塊細(xì)節(jié)不再展開(kāi)講述。至于殘差網(wǎng)絡(luò)這一里程碑式的結(jié)構(gòu),正是由下一節(jié)的網(wǎng)絡(luò)ResNet引出的。
GoogLeNet網(wǎng)絡(luò)結(jié)構(gòu)
具有128個(gè)濾波器的1×1卷積,用于降維和校正線性。
具有1024個(gè)單元和整流線性**的完全連接層。
輸出下降率為70%的輟學(xué)層。
一個(gè)全連接層,具有1024個(gè)單元和修正線性。
以softmax損耗為分類(lèi)器的線性層(預(yù)測(cè)與主分類(lèi)器,但在推斷時(shí)移除)
網(wǎng)絡(luò)主干右邊的 兩個(gè)分支 就是 輔助分類(lèi)器,其結(jié)構(gòu)一模一樣。 在訓(xùn)練模型時(shí),將兩個(gè)輔助分類(lèi)器的損失乘以權(quán)重(論文中是0.3)加到網(wǎng)絡(luò)的整體損失上,再進(jìn)行反向傳播。
輔助loss函數(shù)
為防止網(wǎng)絡(luò)中間部分不會(huì)「梯度消失」,作者引入了 2 個(gè)輔助分類(lèi)器,它們本質(zhì)上對(duì) 2 個(gè) inception 模塊的輸出執(zhí)行 softmax,并計(jì)算對(duì)同一個(gè)標(biāo)簽的 1 個(gè)輔助損失值。
輔助損失值純粹是為訓(xùn)練構(gòu)建,分類(lèi)推斷時(shí)將被忽略。輔助分類(lèi)器促進(jìn)了更穩(wěn)定的學(xué)習(xí)和更好的收斂。輔助分類(lèi)器往往在接近訓(xùn)練結(jié)束時(shí),輔助分支網(wǎng)絡(luò)開(kāi)始超越?jīng)]有任何分支的網(wǎng)絡(luò)的準(zhǔn)確性,達(dá)到了更高的穩(wěn)定水平。
作用一:可以把他看做inception網(wǎng)絡(luò)中的一個(gè)小細(xì)節(jié),它確保了即便是隱藏單元和中間層也參與了特征計(jì)算,他們也能預(yù)測(cè)圖片的類(lèi)別,他在inception網(wǎng)絡(luò)中起到一種調(diào)整的效果,并且能防止網(wǎng)絡(luò)發(fā)生過(guò)擬合。
作用二:給定深度相對(duì)較大的網(wǎng)絡(luò),有效傳播梯度反向通過(guò)所有層的能力是一個(gè)問(wèn)題。通過(guò)將輔助分類(lèi)器添加到這些中間層,可以期望較低階段分類(lèi)器的判別力。在訓(xùn)練期間,它們的損失以折扣權(quán)重(輔助分類(lèi)器損失的權(quán)重是0.3)加到網(wǎng)絡(luò)的整個(gè)損失上。
總結(jié)
使用1x1卷積(進(jìn)一步融合各個(gè)通道的特征;降維減少計(jì)算量)
使用Inception結(jié)構(gòu)(使用四種方式對(duì)特征進(jìn)行提取;使用1x1卷積降維,減少計(jì)算量)
結(jié)構(gòu)優(yōu)化(輔助loss1,loss2,目的讓低層特征也有很好的區(qū)分能力;使用全局最大池化和一層全連接層代替原來(lái)的兩層全連接層)
批規(guī)一化(使用BN操作優(yōu)化均值大小和方差使得訓(xùn)練模型時(shí)數(shù)據(jù)盡量貼近所有數(shù)據(jù)的分布,可以用來(lái)作為對(duì)抗梯度消失的一種手段。)
總結(jié)
以上是生活随笔為你收集整理的GoogleNet网络(纵横交错)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: android emulator启动的两
- 下一篇: js 正则表达式 取反