Going deeper with convolutions 這篇論文


致網友:如果你不小心檢索到了這篇文章,請不要看,因為很爛。寫下來用於作為我的筆記。

 

2014年,在LSVRC14(large-Scale Visual Recognition Challenge)中,Google團隊憑借 googLeNet 網絡取得了 the new state of the art.

論文 Going deeper with convolutions 就是對應該網絡發表的一篇論文;

 

主要內容:

主要圍繞着一個 Inception architecture 怎么提出講的;

 

不明白的部分:

文中在講這個網絡之前,單純地增加網絡的width 與depth的缺點:一是過多的參數很容易使網絡overfitting ,再加上labeled examples 數目有限,網絡不好訓練;二是參數過多,使網絡需要大量的 computational resources;

解決的方法就是加入:sparsity;關於這個的理論支持它的參考文獻【2:provable bounds for learning some deep representations】說明了,不過我真的沒有看明白文獻2(沒有心思看下去 了),太尼媽數學了;  另一個方面的支持就是:模似我們生物系統)

 

既然說了引用 sparsity,那怎么引入啊?應該就是把 fully connected 變為 sparsely connected. 應該就是卷積連接吧。。 但是文中有很消極地說:傳統的卷積層只是一個collection of dense connections fo the patches in the earlier layers.        還有就是:在卷積層與卷積層之間的連接時,不是全部連接,而是隨機地和稀疏的,比如:前一層有64個feature maps,后面的卷積層只連接部分;(之前這么做,現在不了) 。      到底文獻【2】表明了怎么的 sparse constructure呢??? 暫是不明白。。。

 

中間又說了一堆的什么關於 sparse matrix 計算困難的問題,怎么又把它分解就可以容易計算啦,不過關網絡什么事呢??難道:1. 利用這個 sparse matrix 的計算困難問題來類比 sparse structure 困難的問題??      2. 難道這個sparse matrix 是在 sparse structure 的網絡結構下形成的呢?如果這樣的話,你把 sparse structure的網絡結構 construct 出來,計算困難的 sparse matrix 是數學問題,后來又弄 inception structure 是什么意思??            3. 或者說,按文中的意思,inception structure即可以近似成一個 sparse structure 又可以利用現在的計算resources來計算新的結構中的 dense matrix??,這樣一舉兩得了??             4. 關鍵一個問題:文中應該把這個原來應該的 sparse structure 說明白啊?都是說從文獻【2】中之類的, 草!                      5. 我現在又覺得文中就是從 計算 sparse matrix 上得到 inspiration,來計算出來了這個 inception structure.

 

對於incepiton structure 如何定義的問題上:它作為一個整個網絡的一個 component,應該有什么樣的屬性呢?? 文獻【2】又一次說了:layer-by-layer construction where one should analyze the correlation statistics of the last layer and clustering the into groups of units with high correlation.       意思就是吧,這個網絡的component 應該可以分析下層的 correlation statistics,並且把這個 correlation 在上一層表現出來;  所以呢, inception structure 就用 convolutions 1 by 1 、3 by 3 and 5 by 5 進行搞了吧(對於這個卷積層怎么能表現出來 correlaiton statistics 呢,我一直不是很明白), 最后加了一個 pooling 層;       

 

對於文中說的 3 by 3 and 5 by 5 的filter maps 的 比例為什么要隨着 move to higher layers 要增加的解釋不明白;

 

 

ineception module的網絡結構:

沒有加入 reduction的樣子(這樣增加很多計算量):

image

增加了一個1 by 1 的convolutional layer 用於減少 feature maps 並且又加入了 rectified linear activation;

image

 

一開始會有點納悶: filter 是怎么 concatenation的,其實,在卷積的時候關鍵在於 stride,而不在於 kernel size,kernel size 不一樣時,只需要進行 pad 補齊就可以。   只要stride 一樣,最后得到的 fiter map 的大小也是一樣的;

 

GoogLeNet 網絡:

文中用 Inception module 構造了一個 22層的googLeNet 網絡;

網絡的結構不多說,只說一點,為了 combat 梯度消失,在網絡的中間另外加入了兩個auxiliary 的 loss 層,並且分別占的權重為0.3.    其實間接也提供了一種regularization, 用於約束相關的權值;      

網絡的訓練: 隨機梯度法、 momentum為 0.9, 學習率變化為 每8次epoch下降4%,  多模型用於prediction 時, 采用Polyyak 平均。

 

在ILSVRC的設置

1,訓練樣本的處理: 把一個圖片resize成4種 scales(最小邊長分別為:356,288,320,352),然后分別從上中下取 正方形的子圖片(以最小邊長為邊長), 再從子圖片中取四個角加中間,再加上身resize為224*224的圖片,最后mirrored, 最終從一個原始圖片得到了4*3*6*2=144個 crops。

2. 文獻分別訓練了7個模型,(樣本的采樣方法與 輸入的圖片順序不一樣)

3.  把softmax輸出的probabilites 求平均(在所有的crops與models之間)。。  {另外文章也償試了這樣的方法:在一個圖片的不同crops之間取最大的那個概率值,然后在不同的 模型中取平均值,這樣的結果不怎么好。(如果這樣操作以后 ,所以類的和不等於1了啊。)}

 

最后,在caffe中的實現:

訓練好的模型可以在 github上 下載:

代碼在ipyhon notebook 里面寫的。直接截圖吧:

image

image

 

 

 

待補充。。。


免責聲明!

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



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