Network in Network筆記
阿新 • • 發佈:2018-11-17
Network in Network是2014年的ICLR的非常厲害的一篇paper。是對傳統的CNN的一種改進。
1、摘要
- 提出了NIN的深度網路結構來增強模型在感知野在區域性影象塊的辨別力。
- 傳統的conv layer使用線性過濾器之後緊跟一個非線性啟用函式的方法來掃描輸入,而論文使用micro networks with more complex structures to abstract the data within the receptive field。
- feature maps的獲取是通過在輸入上sliding micro networks over the input in a similar manner as CNN,然後將feature maps作為輸入給下一層。
- Deep NIN可以通過堆疊上述結構(can be implements by stacking mutiple of the above described structure)
- 通過micro network模型來加強local modeling(區域性模型?),在分類層利用GAP(global average pooling)相較於傳統的FC(Fully connection)層可以更容易去解釋(更容易去解釋是因為FC相當於是一個black box)並且可以更好的避免過擬合。
2、Introduction
- By abstraction we mean that the feature is invariant to the variants of the same concept.【通過抽象化資料,對於一個同一個概念的變體,特徵是不變的??】
- paper認為傳統CNN的卷積過濾器是對底層資料塊的一種廣義線性模型(GLM,generalized linear model),而且對資料的抽象化水平比較低。
- 在NIN,使用micro network來代替GLM,micro network可以當作是一個general nonlinear function approximator。在論文中,作者選用multilayer perceptron【多層感知器】作為micro network的例項。
- 最後得到結構為mlpconv layer——>The mlpconv maps the input local patch to the output feature vector with a multilayer perceptron(MLP) consisting of multiple fully connected layers with nonlinear activation functions。
3、key components of NIN's structure
- MLP Convolution Layers
- choose universal function approximator for feature extraction of the local batches
- 有兩個比較有名的universal function aproximator,分別是radial basis network、multilayer perceptron。之所以選擇multilayer percetron,有兩點原因:(1)multilayer percetron(多層感知)和CNN相相容,都是通過back-propogation來訓練的。(2)多層感知的可以是一個深層模型本身,這一點與特徵重用的思想是一致的(MLP可自行深度化)。
- 這種新型別的層叫做mlpconv(MLP通過mlpconv來代替GLM去對輸入做卷積),下圖是mlplayer的計算:
- Global Average Pooling
一個單層的mlpconv網路的caffe網路結構檔案,原始碼來源。mlp層實際上是卷積加傳統的mlp(多層感知器),因為convolution是線性的,而mlp是非線性的,後者可以得到更高的抽線,泛化能力更強。在跨通道(cross channel, cross feature map)的情況下,mlpconv等價於卷積層+1*1卷積層,【NIN網路模型】,通過模型可以看出:paper中一個NIN網路是由三個mlpconv+GAP組成,而一個mlpconv=conv(+relu)+cccp1(+relu)+cccp2(+rule)組成,其中每個conv、cccp之後需要接relu,每個mlpconv之後需要接pool,最後經過三層的mlpconv,接上global average pool,最終對於單個圖片輸出[1,1000, 1, 1]。由模型來看,cccp層其實就是kernel size=1的1x1卷積,s=1。
參考:http://simtalk.cn/2016/10/05/Network-In-Network/