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

Network in Network學習筆記

-m -c header 簡單 tails network ng- near 小菜

Network in Network學習筆記

2016年12月14日 17:33:45 穿越5極限 閱讀數:6289 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/xjz18298268521/article/details/53642711

論文:《Network in Network》
概述:
  此論文是2014年的一篇比較厲害的paper,該論文改進了傳統的cnn網絡使得網絡模型參數很少,也為後續的Googlenet和resnet以及目標檢測網絡中提出的全卷積共享提供了一個很好的開端,小菜也是在學習主流的深層網絡模型的論文時發現許多論文中都有提到NIN這篇論文,所以專門挑了時間看了這篇論文,覺得這篇論文的確不錯,論文中的網絡整體架構如下圖所示。

技術分享圖片

論文的創新點:

  1. 提出了抽象能力更高的Mlpconv層
  2. 提出了Global Average Pooling(全局平均池化)層

    Mlpconv層
     傳統的卷積神經網絡一般來說是由線性卷積層、池化層、全連接層堆疊起來的網絡,卷積層通過線性濾波器進行線性卷積運算,然後在接個非線性激活函數最終生成特征圖。而這種卷積濾波器是一種GLM:(Generalized linear model)廣義線性模型。然而GLM的抽象能力是比較低水平的。
     
    抽象:指得到對同一概念的不同變體保持不變的特征。

      一般用CNN進行特征提取時,其實就隱含地假設了特征是線性可分的,可實際問題往往是難以線性可分的。一般來說我們所要提取的特征一般是高度非線性的。在傳統的CNN中,也許我們可以用超完備的濾波器,來提取各種潛在的特征。比如我們要提取某個特征,於是我就用了一大堆的濾波器,把所有可能的提取出來,這樣就可以把我想要提取的特征也覆蓋到,然而這樣存在一個缺點,那就是網絡太恐怖了,參數太多了。

      我們知道CNN高層特征其實是低層特征通過某種運算的組合。所以論文就根據這個想法,提出在每個局部感受野中進行更加復雜的運算,提出了對卷積層的改進算法:MLP卷積層。(這裏也不知道是否有道理,因為在後面的深層網絡沒有提出此種說法,還是按照傳統的cnn方法使用多個濾波器去學習同一特征的不同變體)。MLP中的激活函數采用的是整流線性單元(即ReLU:max(wx+b,0)。
    MLP的優點:
    (1) 非常有效的通用函數近似器
    (2) 可用BP算法訓練,可以完美地融合進CNN
    (3) 其本身也是一種深度模型,可以特征再利用
             技術分享圖片

全局平均池化層
  另一方面,傳統的CNN最後一層都是全連接層,參數個數非常之多,容易引起過擬合(如Alexnet),一個CNN模型,大部分的參數都被全連接層給占用了,所以論文提出采用了全局均值池化替代全連接層。與傳統的全連接層不同,我們對每個特征圖一整張圖片進行全局均值池化,這樣每張特征圖都可以得到一個輸出。這樣采用均值池化,連參數都省了,可以大大減小網絡參數,避免過擬合,另一方面它有一個特點,每張特征圖相當於一個輸出特征,然後這個特征就表示了我們輸出類的特征。

全局平均池化的優勢:
(1) 通過加強特征圖與類別的一致性,讓卷積結構更簡單
(2)不需要進行參數優化,所以這一層可以避免過擬合
(3)它對空間信息進行了求和,因而對輸入的空間變換更具有穩定性

  在采用了微神經網絡後,讓局部模型有更強的抽象能力,從而讓全局平均池化能具有特征圖與類別之間的一致性,同時相比傳統CNN采用的全連接層,不易過擬合(因為全局平均池化本身就是一種結構性的規則項)(PS:經典CNN容易過擬合,並嚴重依賴用dropout進行規則化)。

Network in Network學習筆記