1. 程式人生 > >Network in Network筆記

Network in Network筆記

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/