【CV論文閱讀】Going deeper with convolutions(GoogLeNet)


目的:

提升深度神經網絡的性能。

 

一般方法帶來的問題:

增加網絡的深度與寬度。

帶來兩個問題:

(1)參數增加,數據不足的情況容易導致過擬合

(2)計算資源要求高,而且在訓練過程中會使得很多參數趨向於0,浪費計算資源。

 

解決方法:

使用稀疏連接替代稠密結構。

理論依據(Arora):一個概率分布可以用一個大的稀疏的深度神經網絡表示,最優的結構的構建通過分析上層的激活狀態的統計相關性,並把輸出高度相關的神經元聚合。這與生物學中Hebbian法則“有些神經元響應基本一致,即同時興奮或抑制”一致。

存在問題:計算機的基礎結構在遇到稀疏數據計算時會很不高效,使用稀疏矩陣會使得效率大大降低。

目標:設計一種既能利用稀疏性,又可以利用稠密計算的網絡結構。

 

Inception 模型:

究竟模型中是怎樣利用稀疏性的呢?我也說不清楚,但估計是在同一層利用了不同的核去對輸入的feature進行卷積把,分散成幾個小任務進行,然后再匯聚。如下圖:

@2016/08/24  更新對稀疏性的理解

知乎上摘自 段石石的解答:

對的 channel的意思其實就是神經元的個數,這里降維的意思其實就是減少神經元的個數,比如原先的28*28*512 在1*1*256 之后 就是28*28*256(stride為1的情況), 這樣在整個網絡結構這一層就降維了,原作者發現在沒有1*1之前的參數空間存在很多稀疏的數據,這里降維之后,參數空間會更dense,這樣就解決了文章說的痛點(也就是稀疏性增大計算困難的問題)

 

 

這是最原始的模型。可以看出,因為卷積並不一定就改變大小,而通道數目由於分散的連接最終會增加,這樣很容易造成參數個數的指數級別的上升。論文中使用了NIN網絡中提到的利用1*1卷積核降維的作用,在卷積層處理前,先對特征圖層進行降維(注意是通道的降維,不是空間的降維),例如原本是M通道,降維到P通道后,在通過匯聚變成了M通道,這時參數的個數並沒有隨着深度的加深而指數級的增長,如下圖:

 

 

這樣做的合理性在於,Hebbin法則說的“有些神經元同時興奮或抑制”,而在區域中同一節點對應的區域可能一樣,認為它們是相關的,所以通過1*1的卷積核將它們聚合(信息壓縮)后再卷積,符合Arora的理論。同時,注意到還有一個最大化池化層。

這樣處理的好處是(1)深度增加,節點數目可控(2)出現多個尺度如3*3,1*1,5*5,7*7等。

 

GoogLeNet結構:

GoogLeNet網絡有22層,最后一層使用了NIN網絡中的全局平均池化層,但還是會加上FC層,再輸入到softmax函數中。如下圖:

 

在深度加深的情況下,在BP算法執行時可能會使得某些梯度為0,這會使得網絡的收斂變慢。論文中使用的方法是增加兩個輸出層(Auxiliary Classifiers),這樣一些權值更新的梯度就會來自於多個部分的疊加,加速了網絡的收斂。但預測時會吧AC層去掉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM