1. 程式人生 > >【深度學習】深入理解ReLU(Rectifie Linear Units)激活函數

【深度學習】深入理解ReLU(Rectifie Linear Units)激活函數

appdata 稀疏編碼 去掉 ren lock per 作用 開始 href

論文參考:Deep Sparse Rectifier Neural Networks (很有趣的一篇paper)

Part 0:傳統激活函數、腦神經元激活頻率研究、稀疏激活性

0.1 一般激活函數有如下一些性質:

  1. 非線性: 當激活函數是線性的,一個兩層的神經網絡就可以基本上逼近所有的函數。但如果激活函數是恒等激活函數的時候,即f(x)=x,就不滿足這個性質,而且如果MLP(多層感知機)使用的是恒等激活函數,那麽其實整個網絡跟單層神經網絡是等價的;
  2. 可微性: 當優化方法是基於梯度的時候,就體現了該性質;
  3. 單調性: 當激活函數是單調的時候,單層網絡能夠保證是凸函數;
  4. f(x)≈x
    : 當激活函數滿足這個性質的時候,如果參數的初始化是隨機的較小值,那麽神經網絡的訓練將會很高效;如果不滿足這個性質,那麽就需要詳細地去設置初始值;
  5. 輸出值的範圍: 當激活函數輸出值是有限的時候,基於梯度的優化方法會更加穩定,因為特征的表示受有限權值的影響更顯著;當激活函數的輸出是無限的時候,模型的訓練會更加高效,不過在這種情況小,一般需要更小的Learning Rate。

0.2 傳統Sigmoid系激活函數

技術分享圖片

傳統神經網絡中最常用的兩個激活函數,Sigmoid系(Logistic-Sigmoid、Tanh-Sigmoid)被視為神經網絡的核心所在。

從數學上來看,非線性的Sigmoid函數對中央區的信號增益較大,對兩側區的信號增益小

,在信號的特征空間映射上,有很好的效果。

從神經科學上來看,中央區酷似神經元的興奮態,兩側區酷似神經元的抑制態,因而在神經網絡學習方面,可以將重點特征推向中央區,將非重點特征推向兩側區。

無論是哪種解釋,看起來都比早期的線性激活函數(y=x),階躍激活函數(-1/1,0/1)高明了不少。

0.3 近似生物神經激活函數:Softplus&ReLu

2001年,神經科學家Dayan、Abott從生物學角度,模擬出了腦神經元接受信號更精確的激活模型,該模型如左圖所示:

技術分享圖片 技術分享圖片

技術分享圖片技術分享圖片

這個模型對比Sigmoid系主要變化有三點:① 單側抑制   ② 相對寬闊的興奮邊界   ③ 稀疏激活性 (重點,可以看到紅框裏前端狀態完全沒有激活)

同年,Charles Dugas等人在做正數回歸預測論文中偶然使用了Softplus函數,Softplus函數是Logistic-Sigmoid函數原函數。

Softplus(x)=log(1+ex)

按照論文的說法,一開始想要使用一個指數函數(天然正數)作為激活函數來回歸,但是到後期梯度實在太大,難以訓練,於是加了一個log來減緩上升趨勢。

加了1是為了保證非負性。同年,Charles Dugas等人在NIPS會議論文中又調侃了一句,Softplus可以看作是強制非負校正函數max(0,x)max(0,x)平滑版本。

偶然的是,同是2001年,ML領域的Softplus/Rectifier激活函數與神經科學領域的提出腦神經元激活頻率函數有神似的地方,這促成了新的激活函數的研究。

0.4 生物神經的稀疏激活性

在神經科學方面,除了新的激活頻率函數之外,神經科學家還發現了神經元的稀疏激活性

還是2001年,Attwell等人基於大腦能量消耗的觀察學習上,推測神經元編碼工作方式具有稀疏性和分布性。

2003年Lennie等人估測大腦同時被激活的神經元只有1~4%,進一步表明神經元工作的稀疏性。

從信號方面來看,即神經元同時只對輸入信號的少部分選擇性響應,大量信號被刻意的屏蔽了,這樣可以提高學習的精度,更好更快地提取稀疏特征

從這個角度來看,在經驗規則的初始化W之後,傳統的Sigmoid系函數同時近乎有一半的神經元被激活,這不符合神經科學的研究,而且會給深度網絡訓練帶來巨大問題。

Softplus照顧到了新模型的前兩點,卻沒有稀疏激活性。因而,校正函數max(0,x)成了近似符合該模型的最大贏家。

Part I:關於稀疏性的觀點

Machine Learning中的顛覆性研究是稀疏特征,基於數據的稀疏特征研究上,派生了Deep Learning這一分支。

稀疏性概念最早由Olshausen、Field在1997年對信號數據稀疏編碼的研究中引入,並最早在卷積神經網絡中得以大施拳腳。

近年來,稀疏性研究不僅在計算神經科學、機器學習領域活躍,甚至信號處理、統計學也在借鑒。

總結起來稀疏性大概有以下三方面的貢獻:

1.1 信息解離

當前,深度學習一個明確的目標是從數據變量中解離出關鍵因子。原始數據(以自然數據為主)中通常纏繞著高度密集的特征。

原因是這些特征向量是相互關聯的,一個小小的關鍵因子可能牽擾著一堆特征,有點像蝴蝶效應,牽一發而動全身。

基於數學原理的傳統機器學習手段在解離這些關聯特征方面具有致命弱點。

然而,如果能夠解開特征間纏繞的復雜關系,轉換為稀疏特征,那麽特征就有了魯棒性(去掉了無關的噪聲)。

1.2 線性可分性

稀疏特征有更大可能線性可分,或者對非線性映射機制有更小的依賴。因為稀疏特征處於高維的特征空間上(被自動映射了)

從流形學習觀點來看(參見降噪自動編碼器),稀疏特征被移到了一個較為純凈的低維流形面上。

線性可分性亦可參照天然稀疏的文本型數據,即便沒有隱層結構,仍然可以被分離的很好。

1.3 稠密分布但是稀疏

稠密纏繞分布著的特征是信息最富集的特征,從潛在性角度,往往比局部少數點攜帶的特征成倍的有效。

而稀疏特征,正是從稠密纏繞區解離出來的,潛在價值巨大。

1.4 稀疏性激活函數的貢獻的作用:

不同的輸入可能包含著大小不同關鍵特征,使用大小可變的數據結構去做容器,則更加靈活。

假如神經元激活具有稀疏性,那麽不同激活路徑上:不同數量(選擇性不激活)、不同功能(分布式激活),

兩種可優化的結構生成的激活路徑,可以更好地從有效的數據的維度上,學習到相對稀疏的特征,起到自動化解離效果。

Part II:基於稀疏性的校正激活函數

2.1 非飽和線性端

撇開稀疏激活不談,校正激活函數max(0,x),與Softplus函數在興奮端的差異較大(線性和非線性)。

幾十年的機器學習發展中,我們形成了這樣一個概念:非線性激活函數要比線性激活函數更加先進。

尤其是在布滿Sigmoid函數的BP神經網絡,布滿徑向基函數的SVM神經網絡中,往往有這樣的幻覺,非線性函數對非線性網絡貢獻巨大。

該幻覺在SVM中更加嚴重。核函數的形式並非完全是SVM能夠處理非線性數據的主力功臣(支持向量充當著隱層角色)。

那麽在深度網絡中,對非線性的依賴程度就可以縮一縮。另外,在上一部分提到,稀疏特征並不需要網絡具有很強的處理線性不可分機制

綜合以上兩點,在深度學習模型中,使用簡單、速度快的線性激活函數可能更為合適。

技術分享圖片

如圖,一旦神經元與神經元之間改為線性激活,網絡的非線性部分僅僅來自於神經元部分選擇性激活

2.2 Vanishing Gradient Problem

更傾向於使用線性神經激活函數的另外一個原因是,減輕梯度法訓練深度網絡時的Vanishing Gradient Problem

看過BP推導的人都知道,誤差從輸出層反向傳播算梯度時,在各層都要乘當前層的輸入神經元值,激活函數的一階導數。

Grad=ErrorSigmoid(x)x。使用雙端飽和(即值域被限制)Sigmoid系函數會有兩個問題:

① Sigmoid‘(x)∈(0,1) 導數縮放

② x∈(0,1)或x∈(-1,1) 飽和值縮放

這樣,經過每一層時,Error都是成倍的衰減,一旦進行遞推式的多層的反向傳播,梯度就會不停的衰減,消失,使得網絡學習變慢。

而校正激活函數的梯度是1,且只有一端飽和,梯度很好的在反向傳播中流動,訓練速度得到了很大的提高。

Softplus函數則稍微慢點,Softplus‘(x)=Sigmoid(x)∈(0,1) ,但是也是單端飽和,因而速度仍然會比Sigmoid系函數快。

Part III 潛在問題

強制引入稀疏零的合理性?

誠然,稀疏性有很多優勢。但是,過分的強制稀疏處理,會減少模型的有效容量。即特征屏蔽太多,導致模型無法學習到有效特征。

論文中對稀疏性的引入度做了實驗,理想稀疏性(強制置0)比率是70%~85%。超過85%,網絡就容量就成了問題,導致錯誤率極高。

技術分享圖片

對比大腦工作的95%稀疏性來看,現有的計算神經網絡和生物神經網絡還是有很大差距的。

慶幸的是,ReLu只有負值才會被稀疏掉,即引入的稀疏性是可以訓練調節的,是動態變化的

只要進行梯度訓練,網絡可以向誤差減少的方向,自動調控稀疏比率,保證激活鏈上存在著合理數量的非零值。

Part IV ReLu的貢獻

4.1 縮小做和不做非監督預訓練的代溝

ReLu的使用,使得網絡可以自行引入稀疏性。這一做法,等效於無監督學習的預訓練。

技術分享圖片

當然,效果肯定沒預訓練好。論文中給出的數據顯示,沒做預訓練情況下,ReLu激活網絡遙遙領先其它激活函數。

甚至出現了比普通激活函數預訓練後更好的奇葩情況。當然,在預訓練後,ReLu仍然有提升空間。

從這一層面來說,ReLu縮小了非監督學習和監督學習之間的代溝。當然,還有更快的訓練速度。

4.2 更快的特征學習

在MNIST+LeNet4中,ReLu+Tanh的組合在epoch 50左右就能把驗證集錯誤率降到1.05%

但是,全Tanh在epoch 150時,還是1.37%,這個結果ReLu+Tanh在epoch 17時就能達到了。

技術分享圖片

該圖來自AlexNet的論文對ReLu和普通Sigmoid系函數做的對比測試,可以看到,ReLu的使用,使得學習周期

大大縮短。綜合速率和效率,DL中大部分激活函數應該選擇ReLu。

Part V Theano中ReLu的實現

ReLu可以直接用T.maximum(0,x)實現,用T.max(0,x)不能求導.

【深度學習】深入理解ReLU(Rectifie Linear Units)激活函數