【論文閱讀】【AlexNet】【dropout】ImageNet Classification with Deep Convolutional Neural Networks

    

一、這是AlexNet,雖然是很多年前的網絡了,但是在今天依然有着舉足輕重的地位!特別是其中的思想,非常關鍵!

二、主要思想

      1、採用了非飽和神經元(通過Relu-非飽和非線性函數)

       2、多GPU拆分計算

       3、在全連接層採用了Dropout來降低overfitting

       4、利用了LRN(local response normalization)

       5、overlap pool

三、詳細介紹

1、Relu

 簡單介紹下什麼是“飽和非線性”和“非飽和非線性”:

     定義出發:能否讓映射之後的y值到達無窮,能夠到達無窮的,爲非飽和,到達不了的/會對結果進行壓縮的就是飽和!

     å¨è¿éæå¥å¾çæè¿°

      我們目前最常用的(Rectified Linear Unit )Relu函數爲“非飽和非線性”,y=max(0,x),sigmoid函數的範圍是[0, 1]所以是飽和的,tanh函數也是飽和的,因爲其取值範圍爲[-1,1]。

       

     採用Relu函數的好處自然是,防止梯度消失。當然這並不是作者在這裏採用Relu的重點,1、重點在於,Relu加速了網絡的收斂。2、Relu這個結構屬於非飽和,因此就不需要在Relu之前的輸入進行normalization,這裏理解就是,如果是sigmoid,要是輸入都比較大,那麼輸出就會是無差別的,都是1,因此對於Sigmoid這類“飽和非線性函數”,理論上應該對輸入進行normalization,從而才能讓輸出有差異!!!

                                 

    2、Training on Multiple GPUs

    這一塊的化,主要是因爲當時的硬件條件受限!就可以把一個網絡模型參數,分開多個GPU上,一起分擔顯存。

    3、Local Response Normalization

                        

                             

    這個公式還是比較容易讀懂的,LRN層放置在每一個Relu層的後面,效果上: our top-1 and top-5 error rates by 1.4% and 1.2%.公式中,N表示總共卷積核的數目,也就是通道數,也就是feature map數目;n表示窗口大小;分母中把K與alpha乘上,該x,y位置上的“前後相鄰n/2”的值的平方的和。

    這個公式的理解需要結合上生物學“仿造生物學上活躍的神經元對相鄰神經元的抑制現象(側抑制)”,來自於CNN的原始論文。我認爲,這也是一種稀疏思想,就是1號神經元處於活躍,他抑制2號神經元,這樣特徵就更加稀疏!

   在2015年 Very Deep Convolutional Networks for Large-Scale Image Recognition.提到LRN基本沒什麼用,對於ILSVRC這個數據,反而會增加內存開銷與時間。

    4、Overlapping Pooling

    可以說我們到目前爲止,除了global pooling 和 Roi pooling以外,基本都是用的Overlapping Pooling。這個主要涉及到stride和kernel size大小關係,如果相等,那就是不會重疊的pooling,如果stride小於kernel size那就是會overlap,這種相比於non-overlapping top-1 和 top-5分別提升了 0.4% 和 0.3%。

    我認爲,之所以要這樣做是希望:1、減緩下采樣帶來的信息丟失 ;2、讓局部特徵有更強的關聯性 ;3、作者實驗發現這樣可以降低overfit的可能。

    5、結構:

     這是一張不陌生的圖~~~

   6、降低overfit的策略

    *數據增廣:The first form of data augmentation consists of generating image translations and horizontal reflections;

The second form of data augmentation consists of altering the intensities of the RGB channels in training images.

   *“Dropout”:這裏,開啓第二篇經典論文dropout

          

    一、概述

         dropout主要出發點“preventing co-adaptation of feature detectors”,這個co-adaption怎麼理解呢?我認爲是,比如一個加法器,現在需要得到1,那麼有三個輸入0.8,0.1,0.15,差不多能擬合出1,這種就是三個共同作用出來的結果!作爲一個強大的特徵提取器,最好就是直接0.95,其他兩個輸入完全不用看!

         這篇文章還提出了,L2norm 這個懲罰項的改進,不是直接把所有參數一次性應用上,而是對於每一個隱層作爲一個組單獨計算L2norm並且設置上界,這樣的好處就是,可以一開始就設置一個很大學習率,加速網絡收斂,且可以讓網絡在更大的範圍內去搜索最優解!

    二、dropout深入理解

    dropout在訓練階段:設置一個概率,大多數設爲0.5;相當於在訓練的時候每次只有一般的神經元參與計算,與BP。

    dropout在測試的階段:需要把0.5改爲0,然後需要把這一層結果/2,因爲求和會是之前的兩倍!建立一個假設--在有dropout的網絡中,每次輸出都是不同的,那麼“mean network”產生的結果會比 ,單獨幾個獨立的dropout的網絡結果的mean融合會更好!這裏怎麼理解呢?

    是這樣的,幾個網絡輸出的average,這是ensemble常用的手段!這裏的意思是,dropout網絡相當於把網絡每一層都mean了,每一層都是ensemble,那麼理論上這樣可能會比直接結果ensemble會更好!

  三、其他東西

     這篇文章還涉及到了pooling--這種pooling一直沿用至今overlap pooling,作者在實驗中發現,這種方式的pooling可以讓網絡產生更對於上一個卷積的輸出產生coarse的coding,這樣反而可以提升網絡的泛化能力!

     LRN,這個仿生物學的,神經側抑制!

    ReLU層,以及提到了對於ReLU的網絡採用了0爲均值的正態分佈作爲網絡參數初始化!因爲如果全是負數的,那麼網絡沒辦法運算!這種激活函數降低了訓練時間,同時也不需要以前那種數據規範化策略,因爲對於類似於sigmoid函數,如果輸入不進行規範化,那麼1、梯度問題 2、輸出差異小 這兩個問題就會很大程度上影響訓練 

   momentum of 0.9:這個的話,是一種訓練的優化手段,就是梯度不光是看這一步,而是前面所有步的累積!

                       

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章