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 層代替;函數
conventional 的卷積層 能夠認爲是linear model , 爲何呢,由於 局部接收域上的往往一個tile 與 卷積核進行加權求和,而後接一個激活函數;它的 abstraction 的能力不夠, 對處理線性可分的的 concept 也許是能夠的,可是更復雜的 concepts 它有能力有點不夠了,因此呢,須要引入 more potent 的非線性函數;學習
基於此,提出了 mlpcon 結構,它用多層的感知器(其實就是多層的全鏈接層)來替代單純的卷積神經網絡中的 加 權求和; mlpcon 指的是: multilayer perceptron + convolution;ui
二者的結構以下所示:其中下圖的 Mlpconv 的有兩層的隱含層;.net
說明:在mlpconv中的每一層的後面都跟着一個 ReLU激活函數;用於加入更多的nonlinearity;blog
卷積神經網絡最後的全鏈接層能夠說做爲了一個分類器,或者做爲了一個 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
(原 paper 中的圖)
![]()
(該圖來自:http://blog.csdn.net/hjimce/article/details/50458190 ,加入了相關的參數。我怎麼找到這個圖呢???? 難道 樓主本身 根據 caffe 中的 .prototxt 文件的加上的??)
輸入爲一個feature map, 輸出爲一個feature map 時:
輸入爲多個feature map, 輸出爲一個feature map 時:
輸入爲多個feature map, 輸出爲多個feature map 時:
發現了什麼 ?
在 卷積神經網絡中,不管是輸入仍是輸出,不一樣的 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);
當分類的類別有4種時,則最後的 global average pooling 應該是這樣的:
由於咱們能夠把全鏈接層看成爲特殊的卷積層,因此呢, 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.