Network In Network——卷積神經網絡的革新

Network In Network 是13年的一篇papergit

引用:Lin M, Chen Q, Yan S. Network in network[J]. arXiv preprint arXiv:1312.4400, 2013.github

 

文章的新點:

1. 採用 mlpcon 的結構來代替 traditional 卷積層;  網絡

2. remove 卷積神經網絡最後的 全鏈接層,採用 global average pooling 層代替;函數

 

mplconv 結構的提出:

conventional 的卷積層 能夠認爲是linear model , 爲何呢,由於 局部接收域上的往往一個tile 與 卷積核進行加權求和,而後接一個激活函數;它的 abstraction 的能力不夠, 對處理線性可分的的 concept 也許是能夠的,可是更復雜的 concepts 它有能力有點不夠了,因此呢,須要引入 more potent 的非線性函數;學習

基於此,提出了 mlpcon 結構,它用多層的感知器(其實就是多層的全鏈接層)來替代單純的卷積神經網絡中的 加 權求和; mlpcon 指的是: multilayer perceptron + convolution;ui

 

二者的結構以下所示:其中下圖的 Mlpconv 的有兩層的隱含層;.net

   image

說明:在mlpconv中的每一層的後面都跟着一個 ReLU激活函數;用於加入更多的nonlinearity;blog

 

global average pooling 結構:

卷積神經網絡最後的全鏈接層能夠說做爲了一個分類器,或者做爲了一個 feature  clustering.   它把卷積層學習到的特徵進行最後的分類;   intuitively, 根本不瞭解它是怎麼工做的, 它就像一個黑盒子同樣,而且它也引入了不少的參數,會出現 overfitting 現象;   (我認爲其實最後的 全接層就是一個分類器)圖片

本文,remove掉了 全鏈接層, 使用 global average pooling 來代替; 舉個例子更容易說明白: 假設分類的任務有100 classes,  因此設置網絡的最後的 feature maps 的個數爲 100, 把每個feature map 看做成 對應每一類的 機率的相關值 ,而後對每個 feature map 求平均值(即 global average pooling), 獲得了 100維的向量, 把它直接給 softmax層,進行分類;(其實100個數中最大值對應的類別即爲預測值, 之因此再送給 softmax層是爲了求 loss,用於訓練時求梯度)rem

 

網絡的總體結構:

image

(原 paper 中的圖)

image

(該圖來自:http://blog.csdn.net/hjimce/article/details/50458190 ,加入了相關的參數。我怎麼找到這個圖呢???? 難道 樓主本身 根據 caffe 中的 .prototxt 文件的加上的??)

 

mlpconv 的細節:

輸入爲一個feature map, 輸出爲一個feature map 時:

image

輸入爲多個feature map, 輸出爲一個feature map 時:

image

輸入爲多個feature map, 輸出爲多個feature map 時:

image[49]

 

發現了什麼 ?

在 卷積神經網絡中,不管是輸入仍是輸出,不一樣的 feature map 之間的卷積核是不相同的;

在mlpconv中,不一樣的 feature map 之間的開頭與能結尾之間的權值不同,而在 隱含層之間的權值是共享的;

 

另外:

全鏈接層之間能夠看做一特殊的卷積層,其中卷積核的大小爲 1*1, feature maps的 個數即爲全鏈接層中的每一層的units的數目;

因此呢,假設上面的第三個圖中的輸入爲2*(4 *4), 輸出爲2 * (3*3)時:

    第一層的卷積核大小爲2*2, 步長爲1, 輸入爲2*(4 *4), 輸出爲 4*(3*3);

    第二層的卷積核大小爲1*1, 步長爲1, 輸入爲4*(3 *3), 輸出爲 3*(3*3);

    第三層的卷積核大小爲1*1, 步長爲1, 輸入爲3*(3 *3), 輸出爲 2*(3*3);

 

global average pooling 的細節:

當分類的類別有4種時,則最後的 global average pooling 應該是這樣的:

image

 

NIN結構的caffe實現:

由於咱們能夠把全鏈接層看成爲特殊的卷積層,因此呢, NIN在caffe中是很是 容易實現的:

https://github.com/BVLC/caffe/wiki/Model-Zoo#network-in-network-model

這是由BVLC(Berkeley Vision Learning Center)維護的一個caffe的各類model及訓練好的參數權值,能夠直接下載下來用的;

 

其它:

文中的觀點:經過實驗說明了 global average pooling 也能夠起到很好的 regular的做用。

另外,一個比較有趣地地方就是:在 可視化最後一層 feature maps時,它的激活區域與原始圖片中目標所在的區域居然類似;amazing!

 

補充:

文中大量用到了文獻:Maxout networks.  (引用:Goodfellow I J, Warde-Farley D, Mirza M, et al. Maxout networks[J]. arXiv preprint arXiv:1302.4389, 2013.)

文中也說明了 NIN比 maxout networks 更 non-linearity;

後續頗有必要看一下 文獻 maxout networks 這個paper, 它具備很好的價值;

 

參考文獻:Lin M, Chen Q, Yan S. Network in network[J]. arXiv preprint arXiv:1312.4400, 2013.

相關文章
相關標籤/搜索