1. 程式人生 > >relu啟用函式解讀

relu啟用函式解讀

Tensorflow學習——ReLu

轉載 2017年07月17日 22:39:50

預訓練的用處:規則化,防止過擬合;壓縮資料,去除冗餘;強化特徵,減小誤差;加快收斂速度。


標準的sigmoid輸出不具備稀疏性,需要用一些懲罰因子來訓練出一大堆接近0的冗餘資料來,從而產生稀疏資料,例如L1、L1/L2或Student-t作懲罰因子。因此需要進行無監督的預訓練。
而ReLU是線性修正,公式為:g(x) = max(0, x),是purelin的折線版。它的作用是如果計算出的值小於0,就讓它等於0,否則保持原來的值不變。這是一種簡單粗暴地強制某些資料為0的方法,然而經實踐證明,訓練後的網路完全具備適度的稀疏性。而且訓練後的視覺化效果和傳統方式預訓練出的效果很相似,這也說明了ReLU具備引導適度稀疏的能力。


從函式圖形上看,ReLU比sigmoid更接近生物學的啟用模型。
實際測量資料:縱座標軸是神經元的放電速率(Firing Rate);橫軸是毫秒(ms)


基於生物學的數學規則化啟用模型(LIF)

網上相關的測試資料很多,隨便貼一個:


(Softplus是ReLU的圓滑版,公式為:g(x)=log(1+e^x),從上面的結果看,效果比ReLU稍差)
ReLU在經歷預訓練和不經歷預訓練時的效果差不多,而其它啟用函式在不用預訓練時效果就差多了。ReLU不預訓練和sigmoid預訓練的效果差不多,甚至還更好。
相比之下,ReLU的速度非常快,而且精確度更高。
因此ReLU在深度網路中已逐漸取代sigmoid而成為主流。


ReLU導數(分段):
x <= 0時,導數為0
x > 0時,導數為1


softplus的導數剛好是sigmoid:
g'(x) = e^x/(e^x+1) = 1/(1+e^-x)蘇軼然: suanec - http://www.cnblogs.com/suanec/

以下這篇也寫得很好http://www.cnblogs.com/neopenx/p/4453161.html

起源:傳統啟用函式、腦神經元啟用頻率研究、稀疏啟用性

傳統Sigmoid系啟用函式

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

從數學上來看,非線性的Sigmoid函式對中央區的訊號增益較大,對兩側區的訊號增益小,在訊號的特徵空間對映上,有很好的效果。

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

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

近似生物神經啟用函式:Softplus&ReLu 

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

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

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

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

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

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

生物神經的稀疏啟用性

在神經科學方面,除了新的啟用頻率函式之外,神經科學家還發現了神經元的稀疏啟用性。

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

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

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

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

Softplus照顧到了新模型的前兩點,卻沒有稀疏啟用性。因而,校正函式成了近似符合該模型的最大贏家。

Part I:關於稀疏性的觀點

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

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

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

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

1.1 資訊解離

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

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

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

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

1.2 線性可分性

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

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

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

1.3 稠密分佈但是稀疏

稠密纏繞分佈著的特徵是資訊最富集的特徵,從潛在性角度,往往比區域性少數點攜帶的特徵成倍的有效。

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

1.4 稀疏性啟用函式的貢獻的作用:

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

假如神經元啟用具有稀疏性,那麼不同啟用路徑上:不同數量(選擇性不啟用)、不同功能(分散式啟用),

兩種可優化的結構生成的啟用路徑,可以更好地從有效的資料的維度上,學習到相對稀疏的特徵,起到自動化解離效果。

Part II:基於稀疏性的校正啟用函式

2.1 非飽和線性端

撇開稀疏啟用不談,校正啟用函式,與Softplus函式在興奮端的差異較大(線性和非線性)。

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

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

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

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

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

如圖,一旦神經元與神經元之間改為線性啟用,網路的非線性部分僅僅來自於神經元部分選擇性啟用。

2.2 Vanishing Gradient Problem

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

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

即。使用雙端飽和(即值域被限制)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)不能求導.

Part VI  ReLu訓練技巧