原文 : http://www.cnblogs.com/neopenx/p/4453161.html#undefinedhtml
傳統神經網絡中最經常使用的兩個激活函數,Sigmoid系(Logistic-Sigmoid、Tanh-Sigmoid)被視爲神經網絡的核心所在。前端
從數學上來看,非線性的Sigmoid函數對中央區的信號增益較大,對兩側區的信號增益小,在信號的特徵空間映射上,有很好的效果。網絡
從神經科學上來看,中央區酷似神經元的興奮態,兩側區酷似神經元的抑制態,於是在神經網絡學習方面,能夠將重點特徵推向中央區,將非重點特徵推向兩側區。數據結構
不管是哪一種解釋,看起來都比早期的線性激活函數(y=x),階躍激活函數(-1/1,0/1)高明瞭很多。機器學習
2001年,神經科學家Dayan、Abott從生物學角度,模擬出了腦神經元接受信號更精確的激活模型,該模型如左圖所示:分佈式
這個模型對比Sigmoid系主要變化有三點:①單側抑制 ②相對寬闊的興奮邊界 ③稀疏激活性(重點,能夠看到紅框裏前端狀態徹底沒有激活)函數
同年,Charles Dugas等人在作正數迴歸預測論文中偶然使用了Softplus函數,Softplus函數是Logistic-Sigmoid函數原函數。post
Softplus(x)=log(1+ex)學習
按照論文的說法,一開始想要使用一個指數函數(自然正數)做爲激活函數來回歸,可是到後期梯度實在太大,難以訓練,因而加了一個log來減緩上升趨勢。測試
加了1是爲了保證非負性。同年,Charles Dugas等人在NIPS會議論文中又調侃了一句,Softplus能夠看做是強制非負校訂函數max(0,x)平滑版本。
偶然的是,同是2001年,ML領域的Softplus/Rectifier激活函數與神經科學領域的提出腦神經元激活頻率函數有神似的地方,這促成了新的激活函數的研究。
在神經科學方面,除了新的激活頻率函數以外,神經科學家還發現了神經元的稀疏激活性。
仍是2001年,Attwell等人基於大腦能量消耗的觀察學習上,推測神經元編碼工做方式具備稀疏性和分佈性。
2003年Lennie等人估測大腦同時被激活的神經元只有1~4%,進一步代表神經元工做的稀疏性。
從信號方面來看,即神經元同時只對輸入信號的少部分選擇性響應,大量信號被刻意的屏蔽了,這樣能夠提升學習的精度,更好更快地提取稀疏特徵。
從這個角度來看,在經驗規則的初始化W以後,傳統的Sigmoid系函數同時近乎有一半的神經元被激活,這不符合神經科學的研究,並且會給深度網絡訓練帶來巨大問題。
Softplus照顧到了新模型的前兩點,卻沒有稀疏激活性。於是,校訂函數max(0,x)成了近似符合該模型的最大贏家。
Machine Learning中的顛覆性研究是稀疏特徵,基於數據的稀疏特徵研究上,派生了Deep Learning這一分支。
稀疏性概念最先由Olshausen、Field在1997年對信號數據稀疏編碼的研究中引入,並最先在卷積神經網絡中得以大施拳腳。
近年來,稀疏性研究不只在計算神經科學、機器學習領域活躍,甚至信號處理、統計學也在借鑑。
總結起來稀疏性大概有如下三方面的貢獻:
當前,深度學習一個明確的目標是從數據變量中解離出關鍵因子。原始數據(以天然數據爲主)中一般纏繞着高度密集的特徵。緣由
是這些特徵向量是相互關聯的,一個小小的關鍵因子可能牽擾着一堆特徵,有點像蝴蝶效應,牽一髮而動全身。
基於數學原理的傳統機器學習手段在解離這些關聯特徵方面具備致命弱點。
然而,若是可以解開特徵間纏繞的複雜關係,轉換爲稀疏特徵,那麼特徵就有了魯棒性(去掉了無關的噪聲)。
稀疏特徵有更大可能線性可分,或者對非線性映射機制有更小的依賴。由於稀疏特徵處於高維的特徵空間上(被自動映射了)
從流形學習觀點來看(參見降噪自動編碼器),稀疏特徵被移到了一個較爲純淨的低維流形面上。
線性可分性亦可參照自然稀疏的文本型數據,即使沒有隱層結構,仍然能夠被分離的很好。
稠密纏繞分佈着的特徵是信息最富集的特徵,從潛在性角度,每每比局部少數點攜帶的特徵成倍的有效。
而稀疏特徵,正是從稠密纏繞區解離出來的,潛在價值巨大。
不一樣的輸入可能包含着大小不一樣關鍵特徵,使用大小可變的數據結構去作容器,則更加靈活。
假如神經元激活具備稀疏性,那麼不一樣激活路徑上:不一樣數量(選擇性不激活)、不一樣功能(分佈式激活),
兩種可優化的結構生成的激活路徑,能夠更好地從有效的數據的維度上,學習到相對稀疏的特徵,起到自動化解離效果。
撇開稀疏激活不談,校訂激活函數max(0,x),與Softplus函數在興奮端的差別較大(線性和非線性)。
幾十年的機器學習發展中,咱們造成了這樣一個概念:非線性激活函數要比線性激活函數更加先進。
尤爲是在佈滿Sigmoid函數的BP神經網絡,佈滿徑向基函數的SVM神經網絡中,每每有這樣的幻覺,非線性函數對非線性網絡貢獻巨大。
該幻覺在SVM中更加嚴重。核函數的形式並不是徹底是SVM可以處理非線性數據的主力功臣(支持向量充當着隱層角色)。
那麼在深度網絡中,對非線性的依賴程度就能夠縮一縮。另外,在上一部分提到,稀疏特徵並不須要網絡具備很強的處理線性不可分機制。
綜合以上兩點,在深度學習模型中,使用簡單、速度快的線性激活函數可能更爲合適。
如圖,一旦神經元與神經元之間改成線性激活,網絡的非線性部分僅僅來自於神經元部分選擇性激活。
更傾向於使用線性神經激活函數的另一個緣由是,減輕梯度法訓練深度網絡時的Vanishing Gradient Problem。
看過BP推導的人都知道,偏差從輸出層反向傳播算梯度時,在各層都要乘當前層的輸入神經元值,激活函數的一階導數。
即Grad=Error⋅Sigmoid′(x)⋅x。使用雙端飽和(即值域被限制)Sigmoid系函數會有兩個問題:
①Sigmoid'(x)∈(0,1) 導數縮放
②x∈(0,1)或x∈(-1,1) 飽和值縮放
這樣,通過每一層時,Error都是成倍的衰減,一旦進行遞推式的多層的反向傳播,梯度就會不停的衰減,消失,使得網絡學習變慢。
而校訂激活函數的梯度是1,且只有一端飽和,梯度很好的在反向傳播中流動,訓練速度獲得了很大的提升。
Softplus函數則稍微慢點,Softplus'(x)=Sigmoid(x)∈(0,1) ,可是也是單端飽和,於是速度仍然會比Sigmoid系函數快。
誠然,稀疏性有不少優點。可是,過度的強制稀疏處理,會減小模型的有效容量。即特徵屏蔽太多,致使模型沒法學習到有效特徵。
論文中對稀疏性的引入度作了實驗,理想稀疏性(強制置0)比率是70%~85%。超過85%,網絡就容量就成了問題,致使錯誤率極高。
對比大腦工做的95%稀疏性來看,現有的計算神經網絡和生物神經網絡仍是有很大差距的。
慶幸的是,ReLu只有負值纔會被稀疏掉,即引入的稀疏性是能夠訓練調節的,是動態變化的。
只要進行梯度訓練,網絡能夠向偏差減小的方向,自動調控稀疏比率,保證激活鏈上存在着合理數量的非零值。
ReLu的使用,使得網絡能夠自行引入稀疏性。這一作法,等效於無監督學習的預訓練。
固然,效果確定沒預訓練好。論文中給出的數據顯示,沒作預訓練狀況下,ReLu激活網絡遙遙領先其它激活函數。
甚至出現了比普通激活函數預訓練後更好的奇葩狀況。固然,在預訓練後,ReLu仍然有提高空間。
從這一層面來講,ReLu縮小了非監督學習和監督學習之間的代溝。固然,還有更快的訓練速度。
在MNIST+LeNet4中,ReLu+Tanh的組合在epoch 50左右就能把驗證集錯誤率降到1.05%
可是,全Tanh在epoch 150時,仍是1.37%,這個結果ReLu+Tanh在epoch 17時就能達到了。
該圖來自AlexNet的論文對ReLu和普通Sigmoid系函數作的對比測試,能夠看到,ReLu的使用,使得學習週期
大大縮短。綜合速率和效率,DL中大部分激活函數應該選擇ReLu。
ReLu能夠直接用T.maximum(0,x)實現,用T.max(0,x)不能求導.