〖想觀看更多中文論文導讀,至[論文速速讀]系列文章介紹可以看到目前已發布的所有文章!〗
paper: https://arxiv.org/pdf/1312.4400.pdf
人在Computer Vision的江湖上,不能不知道的一篇論文: Network in Network (NIN),在2014 ICLR上發表出來,至今已經有4000多次的cite。
Paper中首次提出兩個重要的概念,這兩個概念至今仍然被廣泛地使用,分別是:
- 1x1 Convolution
- Global Average Pooling (GAP)
這些名詞很眼熟吧,不論是GoogLeNet, VGG, ResNet都可見到他們的身影,接下來就來看看原始論文是怎麼說的~
Abstract
- Convolution: 一般的CNN就是線性的卷積,然後透過非線性的激活函數來學習到非線性的特徵。作為替代,NIN提出了一個新的卷積結構: MLPConv,在Conv後接上非線性的MLP,來增強學習到的特徵複雜度
- 提出了使用Global Average Pooling(GAP)來替代原始Fully Connected Layer,GAP在使用上有著能降低參數量、更好解釋以及更不容易overfitting的特性
Introduction
The convolution filter in CNN is a generalized linear model (GLM) for the underlying data patch, and we argue that the level of abstraction is low with GLM. By abstraction we mean that the feature is invariant to the variants of the same concept
Conv可以視為是一個廣義的線性模型,generalized linear model (GLM),也就是說Conv背後假設input是線性可分的。但資料通常是非線性的,所以會搭配非線性的activation function來進行非線性變換,期望資料至少在feature space中是可以被分開的。
從上面這段來看我們知道,GLM對於非線性的表達能力較差,儘管我們透過了activation function來增加非線性的變換,但當資料足夠複雜的時候我們就必須增加更多的Conv+Activation的次數,如此增加了模型的複雜度。
故此作者提出了使用了一種微網路(micro network)的結構來取代GLM,使得Conv變成了一個非線性的操作,這邊使用的是
多層感知機(multilayer perceptron)
- 首先他是個非線性函數
- 再來,他是可以透過back-propagation進行訓練的
一般Conv和MLPConv的差異如下圖:
In traditional CNN, it is difficult to interpret how the category level information from the objective cost layer is passed back to the previous convolution layer due to the fully connected layers which act as a black box in between.
並且在最後,使用了GAP來取代CNN和FC層之間的連結,也就是每一個feature map變成一個score,總共有class個score。
使用GAP有幾個好處:
- 原本使用CNN和FC層使得模型就像黑盒子,很難做出一些解釋性的分析,使用GAP使得每一張feature map有著一個對應的score,如此增加了feature與class之間的關係,在解釋層面上更加直觀
- GAP並不用任何的訓練參數,可以減少overfitting,但相對的也必須要比較多的訓練迭代
- GAP融合了spatial information,使得模型更佳robust
Convolutional Neural Networks
先定義一下數學式: 一個Conv+activation function(ReLU)的操作可以比表達成如下公式
(i, j)是圖中的pixel,k是channel
其他部分是在介紹線性CNN所面臨的問題,在上面Introduction講了,跳過。
Network In Network
NIN其實就是在Conv+activation function之後,還多了一個MLP
This cascaded cross channel parameteric pooling structure allows complex and learnable interactions of cross channel information.
The cross channel parametric pooling layer is also equivalent to a convolution layer with 1x1 convolution kernel. This interpretation makes it straightforawrd to understand the structure of NIN.
而這個MLP其實就等價於一個跨通道(channel)的1x1 Conv,增加了非線性的變換以及學習到了跨通道之間的information。
所以整個CNN架構就變成醬子La:
Experiments
比較了CIFAR-10, CIFAR-100, Street View House Numbers, MNIST的dataset,都得到了較低的Test Error,數據的部分可以去細看論文。
比較值得一提的是GAP的實驗,在CIFAR-10上測試GAP是否真的比FC / FC+Dropout好
然後他們對了MLPConv的最後一層做了視覺化
- 因為用了GAP,所以最後一層有跟類別數相同的feature map
- GAP將最後一層直接輸出與目標數量相同的feature maps,再將其映射到相對應的機率空間中,所以可以預期某個類別對應activations反應最大的feature map就在對應的編號上
- Ex: 圖中類別1所對應activations最大的就是在第一張feature map
總結
NIN這篇最最最重要的事提出了兩個想法:
- 1x1 Conv
- GAP
1x1 Conv除了能增加非線性變換,也能很方便地做升維/降維。
GAP替換掉了Conv和FC中間這一層的連接,並且起到一定程度的robust效果。此外,讓每一個feature map對應到一個類別這個想法也對後續的一些XAI(Explainable AI)起到了不少幫助(CAM我就是在說你)。
這兩個技術在後來大大的被用在各種Model中,所以說走Computer Vision的人不能不讀這篇R