network in network

首先文章作者把傳統CNN網絡看成一個廣義的線性模型GLM(generalized linear model)後面跟一個非線性激活函數(現在多用ReLU),而假設特徵能夠被GLM抽象即線性可分,那麼對它的抽象程度是不夠的(level of abstraction is low),或者說我們要假設特徵是線性可分的(這是個強假設)。如果我們用一個非線性的模型代替GLM,無疑會提高整個模型對特徵的抽象程度,而且不必有強假設的依賴(事實上大部分機器學習任務是線性不可分的)


傳統的CNN爲解決這種不可分問題,會選擇多個filter,即增加k的個數,來保證所有的變形都被分到正確的concept裏,但是這樣會造成兩個問題 :1)首先隨着k值增加,參數的個數隨之急劇增加   2)k值較大對於下一層的學習也造成了影響,因爲對於當前這一層當中相同概念的不同變形的filter,下一層必須要能夠有一定的抽象處理。


MLP層(即文章中的micro network)解決了這兩個問題,這也是文章主要的兩個創新點(MLP convolutional layer、Global Average Pooling)之一.下面我們分別講述這兩個方面。


(1)MLP convolutional layer


相比於傳統CNN卷積做法,multilayer perceptron的卷積核,實際相當於先做一個一般的卷積,再做幾個1*1的卷積(只改變filter的個數,不改變feature map的大小),這一點與GoogleNet順序相反,GoogleNet在inception v1結構裏先做1*1的卷積,目的是減少參數量。


MLP的優點:

  • 非常有效的通用函數近似器
  • 可用BP算法訓練,可以完美地融合進CNN
  • 其本身也是一種深度模型,可以特徵再利用


(2)Global average pooling 


Global average pooling的合理性在於,經過了一個多層的複雜的網絡之後,每一個filter代表的都是high-level的信息,而不是low-level的像一些曲線或者紋理之類的信息。對於這種high-level的信息,對整個feature map做pooling相當於檢測這個map中有沒有這個filter要檢測的concept,這個pooling的結果已經可以很好地用來做分類或者檢測之類的工作,不需要fully connected之後再訓練分類器。

採用了NIN改進CNN後,我們增強了局部模型的表達能力,這樣我們可以在分類層對特徵圖進行全局平均池化,這種方式更有意義和容易解釋(可將最後一層輸出的特徵圖的空間平均值解釋爲相應類別的置信度!爲什麼可以這樣解釋呢?因爲在採用了微神經網絡後,讓局部模型有更強的抽象能力,從而讓全局平均池化能具有特徵圖與類別之間的一致性),所以MLP可以看做是Global average pooling的前提工作。


全局平均池化的優勢:

  • 通過加強特徵圖與類別的一致性,讓卷積結構更簡單
  • 大大減少參數,避免了全連接層的參數優化,所以這一層可以避免過擬合(因爲全局平均池化本身就是一種結構性的規則項
  • 它對空間信息進行了求和,因而對輸入的空間變換更具有穩定性

總結:NIN的主要貢獻我認爲是MLP卷積層,這與VGG net、GoogleNet的增加網絡深度思想是相通的,我理解增加網絡的深度會提高對特徵的抽象程度所以得到更好結果。




參考博客:

http://www.cnblogs.com/anyview/p/5105181.html

http://blog.csdn.net/hiterdu/article/details/45418545

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