network in network論文

本文主要是對傳統的卷積網絡進行改進,關鍵點有兩個:

第一:mlpconv

第二:全局平均池化

 

傳統的cnn可以看做是廣義線性模型GLM,所以cnn覺得潛在的概念都是線性可分的。(但是cnn+非線性激活不是能模擬出非線性嗎?)但是一些數據是非線性、多維度的,因此提出將卷積替換爲更多小部分的非線性函數,從而提升模型的抽象能力。

作者通過mlpconv模擬多部分非線性函數。具體結構如下圖:

clipboard

clipboard

clipboard

下面的結構是一個mplconv:

 

layers {

bottom: "data"

top: "conv1"

name: "conv1"

type: CONVOLUTION

blobs_lr: 1

blobs_lr: 2

weight_decay: 1

weight_decay: 0

convolution_param {

num_output: 96

kernel_size: 11

stride: 4

weight_filler {

type: "gaussian"

mean: 0

std: 0.01

}

bias_filler {

type: "constant"

value: 0

}

}

}

layers {

bottom: "conv1"

top: "conv1"

name: "relu0"

type: RELU

}

layers {

bottom: "conv1"

top: "cccp1"

name: "cccp1"

type: CONVOLUTION

blobs_lr: 1

blobs_lr: 2

weight_decay: 1

weight_decay: 0

convolution_param {

num_output: 96

kernel_size: 1

stride: 1

weight_filler {

type: "gaussian"

mean: 0

std: 0.05

}

bias_filler {

type: "constant"

value: 0

}

}

}

layers {

bottom: "cccp1"

top: "cccp1"

name: "relu1"

type: RELU

}

layers {

bottom: "cccp1"

top: "cccp2"

name: "cccp2"

type: CONVOLUTION

blobs_lr: 1

blobs_lr: 2

weight_decay: 1

weight_decay: 0

convolution_param {

num_output: 96

kernel_size: 1

stride: 1

weight_filler {

type: "gaussian"

mean: 0

std: 0.05

}

bias_filler {

type: "constant"

value: 0

}

}

}

layers {

bottom: "cccp2"

top: "cccp2"

name: "relu2"

type: RELU

}

全局平均池化用於替代傳統的fc層,由於在傳統的卷積網絡中,卷積層提取特徵,全連接層用於將卷積轉爲分類,而這過程相當一黑盒部分,還有過擬合風險。因此本文提出了全局平均池化,舉個例子,通過之前的各種卷積或者mlpconv生成了1000x6x6的feature map,其中1000爲特徵層的維數,6x6爲feature map的大小。如果將一個feature map看做一種類別對應的特徵圖,則直接將feature map池化爲一個點,再加上softmax就可以分類。(這種思想相比於fc比較形象,但是中間也有很多難以解釋的事情,╮(╯▽╰)╭)

層結構如下:

layers { 

bottom: "cccp8" 

top: "pool4" 

name: "pool4" 

type: POOLING 

pooling_param { 

pool: AVE 

kernel_size: 6 

stride: 1 

}

clipboard

發佈了90 篇原創文章 · 獲贊 31 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章