1. 程式人生 > >Network in Network-讀後筆記

Network in Network-讀後筆記

摘要:

  1. 提出一個NIN(網路中的網路)的深度網路結構用以增強模型在感知野在區域性影象塊的辨別力。
  1. 提出在卷積層使用非線性代替現有的線性模型。
  2. 使用一個由MLP組成的micro neural網路作為非線性模型去掃描輸入以提取特徵圖(feature map)
  3. deep NIN就是將micro neural以棧的形式組合而成。

作者說,Deep NIN的形式相比於傳統的卷積神經網路來說不易過擬合,而且可以進行全域性平均池化。

1.introduction

cnn由卷積層與池化層組成。
卷積層對下層的資料快來說是一個GLM(generalized linear model,廣義線性模型),作者認為廣義線性模型的抽象層次較低。作者認為“特徵是不變的”,即相同概念下的變數特徵是相同。GLM能夠獲取較好的抽象,當潛在概念的樣本是線性可分的時候。因此,作者認為cnn其實有一個假設就是潛在的概念是線性可分的

。然而,相同概念的資料一般是存在於一個非線性的流形中,因此,捕捉真實資料的表示一般使用非線性模型。

作者使用一個MLP代替卷積層的線性卷積操作,作者之所以選擇是因為MLP是一個通用近似函式而且可由神經網路使用反向傳播進行訓練。

由此產生的結構作者命名為mlpconv。

 

  1. 線性卷積層與mlpconv層都與receptive field相連線以用輸出特徵向量
  2. mlpconv使用一個mlp連線input與output
  3. mlp被共享於所有的區域性感受野。
  4. 特徵對映被包含通過滑動mlp以cnn相同處理方式(掃描)
  5. 整個網路結構作者給個名字叫“Network in Network”(好俗氣的名字,像村裡的二丫一樣帶感,真是任性啊)

2.CNN

CNN一般由卷積層與空間池化層以棧的形式交替組成,卷積層通過使用非線性啟用函式(如:rectifier,sigmoid,tanh)的線性組合產生特徵圖。

i,j是畫素索引,xij代表輸入補丁集中在位置(i,j),k用於索引的通道特性圖。

當潛在概念的例項是線性可分時,線性卷積用於抽取是足夠的,然而,好的抽象表示一般是高度非線性函式。在傳統cnn,這一點可以用超完備過濾的方式。即:增加過濾器,但增加過濾器會增加下層的計算負擔。

引入Maxout


maxout出現在ICML2013上,作者Goodfellow將maxout和dropout結合後,號稱在MNIST, CIFAR-10, CIFAR-100, SVHN這4個數據上都取得了start-of-art的識別率。

從論文中可以看出,maxout其實一種激發函式形式。通常情況下,如果激發函式採用sigmoid函式的話,在前向傳播過程中,隱含層節點的輸出表達式為:

其中W一般是2維的,這裡表示取出的是第i列,下標i前的省略號表示對應第i列中的所有行。

如果是maxout激發函式,則其隱含層節點的輸出表達式為:

 

這裡的W是3維的,尺寸為d * m *k,

其中

d表示輸入層節點的個數,

m表示隱含層節點的個數,

k表示每個隱含層節點對應了k個”隱隱含層”節點,

這k個“隱隱含層”節點都是線性輸出的,而maxout的每個節點就是取這k個“隱隱含層”節點輸出值中最大的那個值。因為激發函式中有了max操作,所以整個maxout網路也是一種非線性的變換。

因此當我們看到常規結構的神經網路時,如果它使用了maxout激發,則我們頭腦中應該自動將這個”隱隱含層”節點加入。

參考一個日文的maxout ppt 中的一頁ppt如下:

 

maxout的擬合能力是非常強的,它可以擬合任意的的凸函式。

最直觀的解釋就是任意的凸函式都可以由分段線性函式以任意精度擬合(學過高等數學應該能明白),

而maxout又是取k個隱隱含層節點的最大值,這些”隱隱含層"節點也是線性的,所以在不同的取值範圍下,最大值也可以看做是分段線性的(分段的個數與k值有關)。論文中的圖1如下(它表達的意思就是可以擬合任意凸函式,當然也包括了ReLU了)

 

作者從數學的角度上也證明了這個結論,即只需2個maxout節點就可以擬合任意的凸函數了(相減),前提是“隱隱含層”節點的個數可以任意多,如下圖所示

 


maxout的一個假設是潛在概念的例項是位於輸入空間的凸集中。

3.Network in Network

3.1 MLP卷積層
徑向基函式與多層感知機是兩個通用近似函式。
作者認為,在不知道潛在目標的先驗分佈時使用通用近似函式是比較好的方法。作者選擇MLP,其原因是:

  1. MLP與cnn相相容
  1. MLP可自行深度化

計算公式:

 

網路結構

 

計算過程見下面圖例中的NIN部分。


舉例子解釋

假設現在有一個3x3的輸入,用一個9維的向量x代表,卷積核大小也是3x3,也9維的向量w代表。

對於常規卷積層,直接x和w求卷積,然後relu一下就好了。
maxout,有k個的3x3的w(這裡的k是自由設定的),分別卷積得到k個1x1的輸出,然後對這k個輸入求最大值
NIN,有k個3x3的w(這裡的k也是自由設定的),分別卷積得到k個1x1的輸出,然後對它們都進行relu,然後再次對它們進行卷積,結果再relu。(這個過程,等效於一個小型的全連線網路)

計算過程

常規卷積層,maxout,NIN:

 

總結

maxout和NIN都是對傳統conv+relu的改進。

maxout想表明它能夠擬合任何凸函式,也就能夠擬合任何的啟用函式(默認了啟用函式都是凸的)

NIN想表明它不僅能夠擬合任何凸函式,而且能夠擬合任何函式,因為它本質上可以說是一個小型的全連線神經網路

3.2 全域性平均池化

傳統的cnn是在較低層使用卷積,如分類任務中,最後的卷積層所得feature map被向量化進行全連線層,然後使用softmax 迴歸進行分類。一般來說,在卷積的末端完成的卷積與傳統分類器的橋接。全連線階段易於過擬合,妨礙整個網路的泛化能力,一般應有一些規則方法來處理過擬合。

Dropout


Dropout是hintion最近2年提出的,源於其文章Improving neural networks by preventing co-adaptation of feature detectors.中文大意為:通過阻止特徵檢測器的共同作用來提高神經網路的效能。

Dropout是指在模型訓練時隨機讓網路某些隱含層節點的權重不工作,不工作的那些節點可以暫時認為不是網路結構的一部分,但是將其權重保留下來(只是暫時不更新而已),因為下次樣本輸入時它又可以工作了(有點抽象,具體實現看後面的實驗部分)。

按照hinton的文章,他使用Dropout時訓練階段和測試階段做了如下操作:

在樣本的訓練階段,

沒有采用pre-training的網路時(Dropout當然可以結合pre-training一起使用),hintion並不是像通常那樣對權值採用L2範數懲罰,而是對每個隱含節點的權值L2範數設定一個上限bound,

當訓練過程中如果該節點不滿足bound約束,則用該bound值對權值進行一個規範化操作(即同時除以該L2範數值),說是這樣可以讓權值更新初始的時候有個大的學習率供衰減,並且可以搜尋更多的權值空間(沒理解)。

在模型的測試階段,使用“mean network(均值網路)”來得到隱含層的輸出,其實就是在網路前向傳播到輸出層前時隱含層節點的輸出值都要減半(如果dropout的比例為50%),其理由文章說了一些,可以去檢視(沒理解)。

關於Dropout,文章中沒有給出任何數學解釋,Hintion的直觀解釋和理由如下:

  1. 由於每次用輸入網路的樣本進行權值更新時,隱含節點都是以一定概率隨機出現,因此不能保證每2個隱含節點每次都同時出現,這樣權值的更新不再依賴於有固定關係隱含節點的共同作用,阻止了某些特徵僅僅在其它特定特徵下才有效果的情況。
  1. 可以將dropout看作是模型平均的一種。對於每次輸入到網路中的樣本(可能是一個樣本,也可能是一個batch的樣本),其對應的網路結構都是不同的,但所有的這些不同的網路結構又同時share隱含節點的權值。這樣不同的樣本就對應不同的模型,是bagging的一種極端情況。個人感覺這個解釋稍微靠譜些,和bagging,boosting理論有點像,但又不完全相同。
  1. native bayes是dropout的一個特例。Native bayes有個錯誤的前提,即假設各個特徵之間相互獨立,這樣在訓練樣本比較少的情況下,單獨對每個特徵進行學習,測試時將所有的特徵都相乘,且在實際應用時效果還不錯。而Droput每次不是訓練一個特徵,而是一部分隱含層特徵。
  1. 還有一個比較有意思的解釋是,Dropout類似於性別在生物進化中的角色,物種為了使適應不斷變化的環境,性別的出現有效的阻止了過擬合,即避免環境改變時物種可能面臨的滅亡。

介紹了半天,作者準備在全連線層做文章了,作者提出一個新的策略,名為“全域性平均池化”,用來代替cnn中傳統的全連線層。

其思想為:在MLPconv的最後一層為每一個分類任務的相應種類生成一個特徵對映。
作者說這樣有兩個優點,

  1. 全域性平均池化更原生的支援於卷積結構,通過加強特徵對映與相應分(種)類的對應關係,因此,特徵對映可以很容易地解釋為分類對映。
  2. 全域性平均池化一層沒有需要優化的引數,因此在這一層可以避免過擬合。
  3. 全域性平均池化彙總(求和)空間資訊,因此其對空間變換是健壯的。

作者說,全域性平均池化作為一個結構化正則化矩陣可以明確的用於加強特徵對映到類別對映的信任度。

cnn的全連線層有什麼問題,大家都在這裡做文章?

印象中有一種說法是全連線層是簡單的將特徵對映變成向量按順序編排輸入到softmax迴歸中,這種方法破壞了卷積層中提取特徵時保留下來的位置資訊。

具體的使用有待學習。To Be Continue...

3.3 Network In Network結構

全域性的NIN結構就是一個棧式組合的MLPconv,然後,用全域性平均池化替換全連線層,用MLPconv代替卷積操作,仍舊用子取樣分隔MLPconv

4 實驗

4.1 介紹

作者用四個資料集進行實驗。CIFAR-10/100,SVHN,MNIST。

網路結構為:三層MLPconv+空間最大池化+下采樣+全域性平均池化,除最後一個MLPconv層外,其餘層使用dropout進行正則化。

訓練過程:手動設定引數--〉最小batch=128--〉初始化權重與學習率,重複進行,直到在訓練集上的準確率停止改善,並且學習率最終為初始值的百分之一。

4.2 CIFAR-10

CIFAR-10資料集由10個類別的近50k幅訓練和10k測試自然圖片組成,每一張圖片為RGB彩色,32x32大小。

作者使用相同於Maxout一文方法的全域性對比度歸一化與ZCA白化。

每個MLPconv層的特徵對映數量被設計成相同,使用驗證集進行兩個引數的調優操作(區域性感受野大小與權重衰減)。當兩個hyper-parameters是固定的,我們從頭開始重新訓練網路訓練集和驗證集。

白化


白化是一種重要的預處理過程,其目的就是降低輸入資料的冗餘性,使得經過白化處理的輸入資料具有如下性質:

  • (i) 特徵之間相關性較低;
  • (ii) 所有特徵具有相同的方差。

白化處理分PCA白化和ZCA白化,PCA白化保證資料各維度的方差為1,而ZCA白化保證資料各維度的方差相同。

PCA白化可以用於降維也可以去相關性,而ZCA白化主要用於去相關性,且儘量使白化後的資料接近原始輸入資料。

1.PCA白化

根據白化的兩個要求,我們首先是降低特徵之間的相關性。

 

 

在PCA中,我們選取前K大的特徵值的特徵向量作為投影方向,如果K的大小為資料的維度n,把這K個特徵向量組成選擇矩陣U(每一列為一個特徵向量),

為旋轉後的資料。

如果K<n,就是PCA降維,如果K=n,則降低特徵間相關性降低。

原始資料分佈

 

PCA旋轉後資料分佈

上圖顯示了原始資料和經過PCA旋轉之後的資料,可以發現數據之間的相對位置都沒有改變,僅僅改變了資料的基,但這種方法就降低了資料之後的相關性。(原始資料的相關性為正,因為x1增加時,x2也增加;而處理之後的資料的相關性明顯降低)

 

 

第二個要求是每個輸入特徵具有單位方差,以

 

直接使用作為縮放因子來縮放每個特徵

,計算公式

,經過PCA白化處理的資料分佈如下圖所示,此時的協方差矩陣為單位矩陣I。

PCA白化與ZCA白化對比
PCA白化

ZCA白化

2.ZCA白化

 

 

ZCA白化的定義為:

ZCA白化只是在PCA白化的基礎上做了一個旋轉操作,使得白化之後的資料更加的接近原始資料。

ZCA白化首先通過PCA去除了各個特徵之間的相關性,然後是輸入特徵具有單位方差,此時得到PCA白化後的處理結果,然後再把資料旋轉回去,得到ZCA白化的處理結果,感覺這個過程讓資料的特徵之間有具有的一定的相關性,

下面實驗進行驗證。

在實驗中,我分別計算了原始資料,旋轉後資料,PCA白化以及ZCA白化的協方差矩陣,資料用的是UFLDL的實驗資料,是個協方差矩陣分別為:

 

<---僅是分隔作用--->

從上面的4個協方差矩陣可以發現,正如上面所述,旋轉之後降低了特徵之間的相關性,rotate協方差矩陣的主對角線以外的值都接近零。

猜測ZCA白化後的資料的相關性會比PCA白化的要強,在該實驗室中表明好像感覺是對的,ZCA白化後主對角線以外的值的絕對值大於PCA白化後(今天看了下發現這個有問題),雖然這種比較可以忽略不計,應該他們的值都是非常的接近的。

3.PCA白化和ZCA白化的區別

PCA白化ZCA白化都降低了特徵之間相關性較低,同時使得所有特徵具有相同的方差。

  • PCA白化需要保證資料各維度的方差為1,ZCA白化只需保證方差相等。
  • PCA白化可進行降維也可以去相關性,而ZCA白化主要用於去相關性。
  • ZCA白化相比於PCA白化使得處理後的資料更加的接近原始資料。

4.正則化

 

實踐中需要實現PCA白化或ZCA白化時,有時一些特徵值

在數值上接近於0,這樣在縮放步驟時我們除以

將導致除以一個接近0的值,這可能使資料上溢 (賦為大數值)或造成數值不穩定。因而在實踐中,我們使用少量的正則化實現這個縮放過程,即在取平方根和倒數之前給特徵值加上一個很小的常數

 


當x在區間 [-1,1] 上時, 一般取值為


引數


Deep Learning 優化方法總結 By YuFeiGan 更新日期:2015-07-01

1.Stochastic Gradient Descent (SGD)

1.1 SGD的引數

在使用隨機梯度下降(SGD)的學習方法時,一般來說有以下幾個可供調節的引數:

  • Learning Rate 學習率

  • Weight Decay 權值衰減

  • Momentum 動量

  • Learning Rate Decay 學習率衰減

    ps:
    再此之中只有第一的引數(Learning Rate)是必須的,其餘部分都是為了提高自適應性的引數,也就是說後3個引數不需要時可以設為0。

1.1.1 Learning Rate

學習率決定了權值更新的速度,設定得太大會使結果越過最優值,太小會使下降速度過慢。
僅靠人為干預調整引數需要不斷修改學習率,因此後面3種引數都是基於自適應的思路提出的解決方案。

1.1.2 Weight decay

在實際運用中,為了避免模型的over-fitting,需要對cost function加入規範項。

Weight decay adds a penalty term to the error function.     

在SGD中我們加入 −ηλWi 這一項來對cost function進行規範化。

這個公式的基本思路是減小不重要的引數對結果的影響,而有用的權重則不會受到Weight decay的影響,這種思路與Dropout的思路原理上十分相似。

Link 1

Link 2

大家都知道DNN常有overfiting的問題,有人會想到為何有些演算法(比如DT/最近鄰等)在training data上很快達到100%,而NN卻需要不停訓練卻一直達不到。原因之一是相對訓練資料中模式,網路引數過多且不加合理區分,導致判決邊界調諧到特定訓練資料上,並非表現一般特性。由於初始weight is small, neur執行線上性範圍,隨著training,nonlinear才逐漸顯現,decision boundary變彎。但gradient descent完成之前停止training則可避免overfiting。

其實在dropout被叫響之前,它有個哥們叫weight decay技術,對於非常多weight的NN,along with training,decay all weights。小權值網路更適於做線性判別模型。weight decay具體公式有需要的可以找我。有人會問有價值的weight是不是也會decay。其實BP演算法本質能對降低error function意義不大的weight變的越來越小,對於如此小的值,可以完全discard(是不是想起了dropout,呵)。而真正解決問題的weight不會隨便被decay。還有些其他本質我們後續再討論。

對於activation function的選擇是個技巧,但有規律可循。其實很多人忽視了sigmoid的2個引數gamma和phi,直接用“裸體的”sigmoid。想了解“穿著衣服的"sigmoid的可以再聯絡我。如果有prior information,比如分佈有GMD引起的,則gaussian形式的函式將是個好選擇(有沒有想到ReLU的曲線與sigmoid的曲線分佈類似,至於對x<0的y限制為0的本質下回分解吧)。沒有這些prior時,有三個基本原則(但不是死的):非線性,saturability,連續光滑性(這點有待再探討)。nonlinear是提供deep NN比shallow NN強的計算能力的必要條件。saturability限制weight和activation function的上下邊界,因而是epoch可以有限。光滑連續性希望f和一階導在自變數範圍內有意義。

momentum的概念來自newton第一定律,在BP演算法中引入momentum的目的是允許當誤差曲面中存在平坦區時,NN可以更快的速度學習。將隨機反向傳播中的學習規則修正為包含了之前k次權值更新量的alpha倍。具體公式表達有需要的可以找我。(是不是啟發你想到了adagrad/adadelta呢,其實看到公式後你更有啟發,呵)。momentum的使用"平均化"了隨機學習這種weight的隨機更新,增加了穩定性,在加快learning中甚至可以遠離常引起錯誤的平坦區。

誤差函式常採用cross entropy,是因為它本質上度量了概率分佈間的"距離"。具體公式有需要的可以聯絡我,一起討論。此外,如果想得到區域性性強的分類器可以考慮閔科夫斯基誤差。是的,還有其他物理意義的誤差函式,採用哪一種要看用來幹什麼了。

對於batch learning,online learning, random learning(據悉msra有更多標註語音但就用了2000小時語音訓練)仁者見仁智者見智,這也是為什麼jeff dean設計DistBelief提供了Downpour和Sandblaster了。當training data巨大時,記憶體消耗很大(即使分散式的在記憶體中存的下但要考慮是否必要),工業界使用的NN常採用online或random協議。在batch learning中樣本的重複出現提供的資訊同隨機情況下樣本的單次出現一樣多,而實際問題並不需要精確複製各個模式以及實際dataset常有高冗餘度,batch learning比random learning慢。但不易嵌入到online learning的"二階技術"卻在某些問題上有其他優勢。

對於DNN來說,BP層層計算很耗時。二階導數矩陣(Hesse陣)規模可能又很大。大家知道的擬合較好的方法,如LBFGS、共軛梯度法、變數度量法等,保持了較快的收斂速度。但值得一提的是,對Hesse陣的無偏近似方法Curvature Propagation可以參考ilya的論文哦。從此paper中也可理解下BP與Hesse的"祕密"。

大家都頭疼learningRate的選擇,其實這個與上述討論的多個方面有關係,例如NN的結構、activation function形式、momentum策略、decay方式、期望迭代的總次數、優化的方式、期望目標分類器的表現等等。有一點,我們可以利用誤差的二階導數來確定learning rate。也可以利用二階資訊對NN中unnecessary weight的消去做指導。

1.1.3 Learning Rate Decay

一種提高SGD尋優能力的方法,具體做法是每次迭代減小學習率的大小。

在許多論文中,另一種比較常見的方法是迭代30-50次左右直接對學習率進行操作(η ← 0.5⋅η)

1.1.4 Momentum

靈感來自於牛頓第一定律,基本思路是為尋優加入了“慣性”的影響,這樣一來,當誤差曲面中存在平坦區SGD可以一更快的速度學習。

注意:這裡的表示方法並沒有統一的規定,這裡只是其中一種

Link 1
Link 2-pdf
Link 3
Link 4-pdf

SGD優缺點
實現簡單,當訓練樣本足夠多時優化速度非常快
需要人為調整很多引數,比如學習率,收斂準則等
Averaged Stochastic Gradient Descent (ASGD)
在SGD的基礎上計算了權值的平均值。
$$\bar{w}t=\frac{1}{t-t_0}\sum^t{i=t_0+1} w_t$$

ASGD的引數
在SGD的基礎上增加引數t0t0
學習率 ηη
引數 t0t0
ASGD優缺點
運算花費和second order stochastic gradient descent (2SGD)一樣小。
比SGD的訓練速度更為緩慢。
t0t0的設定十分困難
Link 1

  1. Conjugate Gradient(共軛梯度法)
    介於最速下降法與牛頓法之間的一個方法,它僅僅需要利用一階導數的資訊,克服了GD方法收斂慢的特點。

Link 1

Limited-memory Broyden-Fletcher-Goldfarb-Shanno (LBFGS) (一種擬牛頓演算法)
L-BFGS演算法比較適合在大規模的數值計算中,具備牛頓法收斂速度快的特點,但不需要牛頓法那樣儲存Hesse矩陣,因此節省了大量的空間以及計算資源。

Link 1
Link 2
Link 3

應用分析
不同的優化演算法有不同的優缺點,適合不同的場合:

LBFGS演算法在引數的維度比較低(一般指小於10000維)時的效果要比SGD(隨機梯度下降)和CG(共軛梯度下降)效果好,特別是帶有convolution的模型。
針對高維的引數問題,CG的效果要比另2種好。也就是說一般情況下,SGD的效果要差一些,這種情況在使用GPU加速時情況一樣,即在GPU上使用LBFGS和CG時,優化速度明顯加快,而SGD演算法優化速度提高很小。
在單核處理器上,LBFGS的優勢主要是利用引數之間的2階近視特性來加速優化,而CG則得得益於引數之間的共軛資訊,需要計算器Hessian矩陣。


4.3 CIFAR-100

CIFAR-100資料庫中的圖片大小與格式與CIFAR-10相同,但是包含了100個分類。因此,C-100中每一分類的資料就是C-10的十分之一。對於CIFAR-100資料庫,作者沒有訓練超引數,而是直接使用了CIFAR-10所訓練好的超引數直接進行訓練。模型與CIFAR-10的唯一區別就是最後一個MLPconv層的輸出為100個特徵對映。作者訓練後得到的錯誤率為35.68%,作者聲稱已超越現存對手。見下圖。

 

4.4 街景門牌號

SVHN資料庫由630420個32x32的彩色圖片組成。分成訓練集、測試集和額外集。資料集的任務是用於分類定點陣圖片中心的數字。作者訓練和測試的過程與Goodfellow相同[心語:哇喳喳啊,Goodfellow的文章要看啊]。具體而言是,對於每一類類,從訓練集中選擇400個樣本,再從額外集中選擇200個樣本用於驗證,訓練集與和額外集中其餘的樣本用於訓練,組成的驗證集僅僅用於超參的選擇,不會在訓練過程中使用。

作者仍舊採用Goodfellow等人的預處理過程,區域性對比度正則化。其訓練模型的結構與引數與CIFAR-10的模型相似,三層MLPconv+全域性平均池化。作者的模型達到了2.35%,比較結果見下圖。

 

4.5 MNIST

MNIST資料庫由0-9個數字的圖片組成,圖片大小為28x28,約有60k張訓練圖片和10k張測試圖片。作者仍舊使用CIFAR-10的模型進行訓練,只是將每個MLPconv層生成的特徵對映數量減少[心語:md,減少多少啊!],減少的原因是MNIST與CIFAR-10相比較是一個簡單的資料庫,只需要較少的引數。作者測試其方法沒有使用資料集擴充(data augmentation),其結果如下圖。作者的模型所得測試誤差為0.47%,比當前最好的結果Conv with Maxout+Dropout略差。

 

4.6 全域性平均池化作為正則化矩陣

從作者的使用角度來說,全域性平均池化層的作用與全連線層相似,兩者都是將向量化的特徵對映進行線性變換。兩者區別在於其變換知識。對於全域性平均池化來說,轉換矩陣被置於前面(/字首)並且其塊對角元素是非零相同值,而全連線層可以有密集的轉換矩陣並且其值易於反向傳播優化。為研究全域性平均池化的正則效果,作者使用全域性平均池化代替了全連線層,並且保持模型其它部分是相同的。兩個模型都使用CIFAR-10進行訓練,其結果對比如下圖。從圖中可以看出,全連線層without Dropout的是最差(高)的,而且作者的模型是最好(少)的。作者給出的結論是全連線層容易過擬合

 

作者進一步研究全域性平均池化是否與傳統的cnn具有相同的正則能力。作者實現一個hinton所說的傳統cnn模型,其由三個卷積層和一個區域性連線層組成。區域性連線層產生16個特徵對映並被輸入到with dropout的全連線層中。為公平起見,作者將區域性連線層的特徵對映由16減至10,這樣與其所提出的模型一致(在作者全域性平均池化模式中,每個類中只有一個特徵對映被允許),通過用全域性平均池化代替dropout+fully connection layer,作者建立了一個等價的帶有全域性平均池化的網路模型。

經過訓練,傳統cnn模型(沒有dropout的)誤差率為17.56%,增加dropout的cnn為15.99%[此值非作者實驗得出,是hinton文章所述],作者所用的,即替換後的模型其誤差率為16.46%,比傳統cnn減少了百分之一。作者認為,其結果比dropout要差(高)一些,是因為全域性平均池化層對線性卷積的要求比較高(demanding,苛刻)

4.7 視覺化of NIN

作者將最後一個MLPconv層中的特徵對映顯式的執行為類別的置信圖,通過全域性平均池化方法(只得到唯一的一個強烈的區域性感受野模型)。作者抽取並直接顯示了用於CIFAR10上的模型中最後一層MLPconv的特徵對映(圖),見下圖。

作者認為視覺化再次說明了NIN的效果,NIN模型通過使用MLPconv可以收到一個更為強烈的區域性感受野模型,全域性平均池化可以提高


轉自:
作者:鳴祥
連結:https://www.jianshu.com/p/96791a306ea5
來源:簡書