ReLu(Rectified Linear Units)激活函数
論文參考:Deep Sparse Rectifier Neural Networks?(很有趣的一篇paper)
起源:傳統(tǒng)激活函數(shù)、腦神經(jīng)元激活頻率研究、稀疏激活性
傳統(tǒng)Sigmoid系激活函數(shù)
傳統(tǒng)神經(jīng)網(wǎng)絡中最常用的兩個激活函數(shù),Sigmoid系(Logistic-Sigmoid、Tanh-Sigmoid)被視為神經(jīng)網(wǎng)絡的核心所在。
從數(shù)學上來看,非線性的Sigmoid函數(shù)對中央?yún)^(qū)的信號增益較大,對兩側(cè)區(qū)的信號增益小,在信號的特征空間映射上,有很好的效果。
從神經(jīng)科學上來看,中央?yún)^(qū)酷似神經(jīng)元的興奮態(tài),兩側(cè)區(qū)酷似神經(jīng)元的抑制態(tài),因而在神經(jīng)網(wǎng)絡學習方面,可以將重點特征推向中央?yún)^(qū),將非重點特征推向兩側(cè)區(qū)。
無論是哪種解釋,看起來都比早期的線性激活函數(shù)(y=x),階躍激活函數(shù)(-1/1,0/1)高明了不少。
近似生物神經(jīng)激活函數(shù):Softplus&ReLu?
2001年,神經(jīng)科學家Dayan、Abott從生物學角度,模擬出了腦神經(jīng)元接受信號更精確的激活模型,該模型如左圖所示:
這個模型對比Sigmoid系主要變化有三點:①單側(cè)抑制 ②相對寬闊的興奮邊界 ③稀疏激活性(重點,可以看到紅框里前端狀態(tài)完全沒有激活)
同年,Charles Dugas等人在做正數(shù)回歸預測論文中偶然使用了Softplus函數(shù),Softplus函數(shù)是Logistic-Sigmoid函數(shù)原函數(shù)。
?Softplus(x)=log(1+ex)
按照論文的說法,一開始想要使用一個指數(shù)函數(shù)(天然正數(shù))作為激活函數(shù)來回歸,但是到后期梯度實在太大,難以訓練,于是加了一個log來減緩上升趨勢。
加了1是為了保證非負性。同年,Charles Dugas等人在NIPS會議論文中又調(diào)侃了一句,Softplus可以看作是強制非負校正函數(shù)max(0,x)
平滑版本。
偶然的是,同是2001年,ML領域的Softplus/Rectifier激活函數(shù)與神經(jīng)科學領域的提出腦神經(jīng)元激活頻率函數(shù)有神似的地方,這促成了新的激活函數(shù)的研究。
生物神經(jīng)的稀疏激活性
在神經(jīng)科學方面,除了新的激活頻率函數(shù)之外,神經(jīng)科學家還發(fā)現(xiàn)了神經(jīng)元的稀疏激活性。
還是2001年,Attwell等人基于大腦能量消耗的觀察學習上,推測神經(jīng)元編碼工作方式具有稀疏性和分布性。
2003年Lennie等人估測大腦同時被激活的神經(jīng)元只有1~4%,進一步表明神經(jīng)元工作的稀疏性。
從信號方面來看,即神經(jīng)元同時只對輸入信號的少部分選擇性響應,大量信號被刻意的屏蔽了,這樣可以提高學習的精度,更好更快地提取稀疏特征。
從這個角度來看,在經(jīng)驗規(guī)則的初始化W之后,傳統(tǒng)的Sigmoid系函數(shù)同時近乎有一半的神經(jīng)元被激活,這不符合神經(jīng)科學的研究,而且會給深度網(wǎng)絡訓練帶來巨大問題。
Softplus照顧到了新模型的前兩點,卻沒有稀疏激活性。因而,校正函數(shù)max(0,x)
成了近似符合該模型的最大贏家。
?
Part I:關于稀疏性的觀點
Machine Learning中的顛覆性研究是稀疏特征,基于數(shù)據(jù)的稀疏特征研究上,派生了Deep Learning這一分支。
稀疏性概念最早由Olshausen、Field在1997年對信號數(shù)據(jù)稀疏編碼的研究中引入,并最早在卷積神經(jīng)網(wǎng)絡中得以大施拳腳。
近年來,稀疏性研究不僅在計算神經(jīng)科學、機器學習領域活躍,甚至信號處理、統(tǒng)計學也在借鑒。
總結(jié)起來稀疏性大概有以下三方面的貢獻:
1.1 信息解離
當前,深度學習一個明確的目標是從數(shù)據(jù)變量中解離出關鍵因子。原始數(shù)據(jù)(以自然數(shù)據(jù)為主)中通常纏繞著高度密集的特征。原因
是這些特征向量是相互關聯(lián)的,一個小小的關鍵因子可能牽擾著一堆特征,有點像蝴蝶效應,牽一發(fā)而動全身。
基于數(shù)學原理的傳統(tǒng)機器學習手段在解離這些關聯(lián)特征方面具有致命弱點。
然而,如果能夠解開特征間纏繞的復雜關系,轉(zhuǎn)換為稀疏特征,那么特征就有了魯棒性(去掉了無關的噪聲)。
1.2 線性可分性
稀疏特征有更大可能線性可分,或者對非線性映射機制有更小的依賴。因為稀疏特征處于高維的特征空間上(被自動映射了)
從流形學習觀點來看(參見降噪自動編碼器),稀疏特征被移到了一個較為純凈的低維流形面上。
線性可分性亦可參照天然稀疏的文本型數(shù)據(jù),即便沒有隱層結(jié)構,仍然可以被分離的很好。
1.3 稠密分布但是稀疏
稠密纏繞分布著的特征是信息最富集的特征,從潛在性角度,往往比局部少數(shù)點攜帶的特征成倍的有效。
而稀疏特征,正是從稠密纏繞區(qū)解離出來的,潛在價值巨大。
1.4 稀疏性激活函數(shù)的貢獻的作用:
不同的輸入可能包含著大小不同關鍵特征,使用大小可變的數(shù)據(jù)結(jié)構去做容器,則更加靈活。
假如神經(jīng)元激活具有稀疏性,那么不同激活路徑上:不同數(shù)量(選擇性不激活)、不同功能(分布式激活),
兩種可優(yōu)化的結(jié)構生成的激活路徑,可以更好地從有效的數(shù)據(jù)的維度上,學習到相對稀疏的特征,起到自動化解離效果。
?
Part II:基于稀疏性的校正激活函數(shù)
2.1 非飽和線性端
撇開稀疏激活不談,校正激活函數(shù)max(0,x)
,與Softplus函數(shù)在興奮端的差異較大(線性和非線性)。
幾十年的機器學習發(fā)展中,我們形成了這樣一個概念:非線性激活函數(shù)要比線性激活函數(shù)更加先進。
尤其是在布滿Sigmoid函數(shù)的BP神經(jīng)網(wǎng)絡,布滿徑向基函數(shù)的SVM神經(jīng)網(wǎng)絡中,往往有這樣的幻覺,非線性函數(shù)對非線性網(wǎng)絡貢獻巨大。
該幻覺在SVM中更加嚴重。核函數(shù)的形式并非完全是SVM能夠處理非線性數(shù)據(jù)的主力功臣(支持向量充當著隱層角色)。
那么在深度網(wǎng)絡中,對非線性的依賴程度就可以縮一縮。另外,在上一部分提到,稀疏特征并不需要網(wǎng)絡具有很強的處理線性不可分機制。
綜合以上兩點,在深度學習模型中,使用簡單、速度快的線性激活函數(shù)可能更為合適。
如圖,一旦神經(jīng)元與神經(jīng)元之間改為線性激活,網(wǎng)絡的非線性部分僅僅來自于神經(jīng)元部分選擇性激活。
2.2 Vanishing Gradient Problem
更傾向于使用線性神經(jīng)激活函數(shù)的另外一個原因是,減輕梯度法訓練深度網(wǎng)絡時的Vanishing Gradient Problem。
看過BP推導的人都知道,誤差從輸出層反向傳播算梯度時,在各層都要乘當前層的輸入神經(jīng)元值,激活函數(shù)的一階導數(shù)。
即Grad=Error?Sigmoid′(x)?x
。使用雙端飽和(即值域被限制)Sigmoid系函數(shù)會有兩個問題:
①Sigmoid'(x)∈(0,1) ?導數(shù)縮放
②x∈(0,1)或x∈(-1,1) ?飽和值縮放
這樣,經(jīng)過每一層時,Error都是成倍的衰減,一旦進行遞推式的多層的反向傳播,梯度就會不停的衰減,消失,使得網(wǎng)絡學習變慢。
而校正激活函數(shù)的梯度是1,且只有一端飽和,梯度很好的在反向傳播中流動,訓練速度得到了很大的提高。
Softplus函數(shù)則稍微慢點,Softplus'(x)=Sigmoid(x)∈(0,1) ,但是也是單端飽和,因而速度仍然會比Sigmoid系函數(shù)快。
?
Part III 潛在問題
強制引入稀疏零的合理性?
誠然,稀疏性有很多優(yōu)勢。但是,過分的強制稀疏處理,會減少模型的有效容量。即特征屏蔽太多,導致模型無法學習到有效特征。
論文中對稀疏性的引入度做了實驗,理想稀疏性(強制置0)比率是70%~85%。超過85%,網(wǎng)絡就容量就成了問題,導致錯誤率極高。
?
對比大腦工作的95%稀疏性來看,現(xiàn)有的計算神經(jīng)網(wǎng)絡和生物神經(jīng)網(wǎng)絡還是有很大差距的。
慶幸的是,ReLu只有負值才會被稀疏掉,即引入的稀疏性是可以訓練調(diào)節(jié)的,是動態(tài)變化的。
只要進行梯度訓練,網(wǎng)絡可以向誤差減少的方向,自動調(diào)控稀疏比率,保證激活鏈上存在著合理數(shù)量的非零值。
?
Part IV ReLu的貢獻
4.1 縮小做和不做非監(jiān)督預訓練的代溝
ReLu的使用,使得網(wǎng)絡可以自行引入稀疏性。這一做法,等效于無監(jiān)督學習的預訓練。
當然,效果肯定沒預訓練好。論文中給出的數(shù)據(jù)顯示,沒做預訓練情況下,ReLu激活網(wǎng)絡遙遙領先其它激活函數(shù)。
甚至出現(xiàn)了比普通激活函數(shù)預訓練后更好的奇葩情況。當然,在預訓練后,ReLu仍然有提升空間。
從這一層面來說,ReLu縮小了非監(jiān)督學習和監(jiān)督學習之間的代溝。當然,還有更快的訓練速度。
4.2 更快的特征學習
在MNIST+LeNet4中,ReLu+Tanh的組合在epoch 50左右就能把驗證集錯誤率降到1.05%
但是,全Tanh在epoch 150時,還是1.37%,這個結(jié)果ReLu+Tanh在epoch 17時就能達到了。
該圖來自AlexNet的論文對ReLu和普通Sigmoid系函數(shù)做的對比測試,可以看到,ReLu的使用,使得學習周期
大大縮短。綜合速率和效率,DL中大部分激活函數(shù)應該選擇ReLu。
?
Part V ?Theano中ReLu的實現(xiàn)
ReLu可以直接用T.maximum(0,x)實現(xiàn),用T.max(0,x)不能求導.
?
Part VI ?ReLu訓練技巧
見Cifar-10訓練技巧
from:?http://www.cnblogs.com/neopenx/p/4453161.html
總結(jié)
以上是生活随笔為你收集整理的ReLu(Rectified Linear Units)激活函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第二章 反向传播算法如何工作的?
- 下一篇: [caffe]深度学习之图像分类模型Al