3. 深度學(xué)習(xí)- 常用的激活函數(shù)

在學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)中,我們會常常碰到激活函數(shù)這個名詞。那么什么是激活函數(shù)?激活函數(shù)激活的是什么?在神經(jīng)網(wǎng)絡(luò)中,有什么用?

1. 激活函數(shù)的概念

  • 首先激活函數(shù)并不是真正的激活什么,而是指如何把‘激活的神經(jīng)元的特征’通過函數(shù)把特征保留并映射出來,這是神經(jīng)網(wǎng)絡(luò)能解決非線性問題的關(guān)鍵。也就是,神經(jīng)網(wǎng)絡(luò)能夠加入影響模型結(jié)果的非線性因素,從而使得神經(jīng)網(wǎng)絡(luò)更好地解決復(fù)雜的問題。

1.1 激活函數(shù)在神經(jīng)網(wǎng)絡(luò)中,如何工作的

  • 在神經(jīng)網(wǎng)絡(luò)中,對于某一個隱藏層的節(jié)點,該節(jié)點的激活值計算一般分為兩步:
    • (1)輸入該節(jié)點的值為x_{1},x_{2},...,x_{n}時,在進入這個隱藏節(jié)點后,會先進行一個線性變換,計算出值Z^{n}= w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n}+b^{n} ,其中上標(biāo)n表示第n層隱藏層。
    • (2)再進行一個非線性變換,也就是經(jīng)過非線性激活函數(shù),計算出該節(jié)點的輸出值(激活值)a^{^n+1}=h(Z^{n}) ,其中h(x)為非線性函數(shù)。
      2019062201.jpg

2.飽和,硬飽和,軟飽和

  • 右飽和:當(dāng)一個激活函數(shù)h(x),滿足\lim_{n \to +\infty }\frac{\partial h(x)}{\partial x}= 0時,我們稱之為右飽和。其實就是激活函數(shù)的導(dǎo)函數(shù),在趨于正無窮的時候,極限存在且等于0。
  • 左飽和:當(dāng)一個激活函數(shù)h(x),滿足\lim_{n \to -\infty }\frac{\partial h(x)}{\partial x}= 0時,我們稱之為左飽和。其實就是激活函數(shù)的導(dǎo)函數(shù),在趨于負無窮的時候,極限存在且等于0。
  • 飽和:當(dāng)一個激活函數(shù),既滿足右飽和有滿足左飽和時,我們稱之為飽和。
  • 右硬飽和:對于任意的x,如果存在常數(shù)c,當(dāng)x>c時恒有\frac{\partial h(x)}{\partial x}=0;
  • 左硬飽和:對于任意的x,如果存在常數(shù)c,當(dāng)x<c時恒有\frac{\partial h(x)}{\partial x}=0;
  • 硬飽和:若激活函數(shù)既滿足右硬飽和又滿足左硬飽和,我們稱這種激活函數(shù)為硬飽和;
  • 軟飽和:只有在極限狀態(tài)下,激活函數(shù)的導(dǎo)數(shù)(偏導(dǎo)數(shù))等于0,我們稱之為軟飽和;

3. 梯度消失和梯度爆炸

  • 深度學(xué)習(xí)會常常碰到一組名詞,梯度消失和梯度爆炸,什么是梯度消失和梯度爆炸呢,簡單的介紹一下。
  • 梯度消失:在反向傳播的算法過程中,由于我們使用了是矩陣求導(dǎo)的鏈?zhǔn)椒▌t,有一大串連乘,如果連乘的數(shù)字在每層都是小于1的,則梯度越往前乘越小,導(dǎo)致梯度消失。梯度消失造成的結(jié)果是將導(dǎo)致靠近輸入層的參數(shù)幾乎不能被更新,靠近輸入層的layer預(yù)測結(jié)果不準(zhǔn)確,產(chǎn)生對整個后面的影響,最后無法訓(xùn)練。
  • 梯度爆炸:如果連乘的數(shù)字在每層都是大于1的,則梯度越往前乘越大,導(dǎo)致梯度爆炸。對于梯度爆炸,則一般可以通過調(diào)整我們模型中的初始化參數(shù)得以解決。

4. 稀疏性的觀點

  • Machine Learning中的顛覆性研究是稀疏特征,基于數(shù)據(jù)的稀疏特征研究上,派生了Deep Learning這一分支。稀疏性概念最早由Olshausen、Field在1997年對信號數(shù)據(jù)稀疏編碼的研究中引入,并最早在卷積神經(jīng)網(wǎng)絡(luò)中得以大施拳腳。近年來,稀疏性研究不僅在計算神經(jīng)科學(xué)、機器學(xué)習(xí)領(lǐng)域活躍,甚至信號處理、統(tǒng)計學(xué)也在借鑒。總結(jié)起來稀疏性大概有以下三方面的貢獻:

4.1 信息解離

  • 當(dāng)前,深度學(xué)習(xí)一個明確的目標(biāo)是從數(shù)據(jù)變量中解離出關(guān)鍵因子(重要特征)。原始數(shù)據(jù)(以自然數(shù)據(jù)為主)中,通常纏繞著高度密集的特征。原因是這些特征向量是相互關(guān)聯(lián)的,一個小小的關(guān)鍵因子可能牽擾著一堆特征,有點像蝴蝶效應(yīng),牽一發(fā)而動全身。基于數(shù)學(xué)原理的傳統(tǒng)機器學(xué)習(xí)手段在解離這些關(guān)聯(lián)特征方面具有致命弱點。然而,如果能夠解開特征間纏繞的復(fù)雜關(guān)系,轉(zhuǎn)換為稀疏特征,那么特征就有了魯棒性(去掉了無關(guān)的噪聲)。

4.2 線性可分性

  • 稀疏特征有更大可能線性可分,或者對非線性映射機制有更小的依賴。因為稀疏特征處于高維的特征空間上(被自動映射了)從流形學(xué)習(xí)觀點來看,稀疏特征被移到了一個較為純凈的低維流形面上。線性可分性亦可參照天然稀疏的文本型數(shù)據(jù),即便沒有隱層結(jié)構(gòu),仍然可以被分離的很好。

4.3 稠密分布但是稀疏

  • 稠密纏繞分布著的特征是信息最富集的特征,從潛在性角度,往往比局部少數(shù)點攜帶的特征成倍的有效。而稀疏特征,正是從稠密纏繞區(qū)解離出來的,潛在價值巨大。

4.4 稀疏性激活函數(shù)的貢獻的作用:

  • 不同的輸入可能包含著大小不同關(guān)鍵特征,使用大小可變的數(shù)據(jù)結(jié)構(gòu)去做容器,則更加靈活。假如神經(jīng)元激活具有稀疏性,那么不同激活路徑上:不同數(shù)量(選擇性不激活)、不同功能(分布式激活),兩種可優(yōu)化的結(jié)構(gòu)生成的激活路徑,可以更好地從有效的數(shù)據(jù)的維度上,學(xué)習(xí)到相對稀疏的特征,起到自動化解離效果。
  • 稀疏性有很多優(yōu)勢。但是,過分的強制稀疏處理,會減少模型的有效容量。即特征屏蔽太多,導(dǎo)致模型無法學(xué)習(xí)到有效特征。論文中對稀疏性的引入度做了實驗,理想稀疏性(強制置0)比率是70%~85%。超過85%,網(wǎng)絡(luò)就容量就成了問題,導(dǎo)致錯誤率極高。
  • 此處參考此博客

5.常用的激活函數(shù)

  • 以多層感知機的網(wǎng)絡(luò)結(jié)構(gòu)為例,當(dāng)前層的梯度和三個方面相關(guān)。具體公式查看神經(jīng)網(wǎng)絡(luò)的原理。
    • 第一方面是損失函數(shù);
    • 第二方面是上一層的輸出值,
    • 第三方面是當(dāng)前層的導(dǎo)函數(shù)值。

5.1 Sigmoid函數(shù)

  • Sigmoid 函數(shù)也稱為 S 曲線函數(shù),具有指數(shù)函數(shù)的形狀,在物理意義上最為接近生物神經(jīng)元,在生物學(xué)中也是常見的 S 型函數(shù),又稱之為 S 型生長曲線,因此也是神經(jīng)網(wǎng)絡(luò)中最常用的激活函數(shù)之一。該函數(shù)是將取值為 [-\infty ,+\infty ] 的數(shù)映射到 (0 ,1 )(開區(qū)間,不是閉區(qū)間) 之間。

  • Sigmoid函數(shù)的具體公式為:S(x)=1/(1+e^{-x})

  • Sigmoid導(dǎo)函數(shù)公式:{S(x)}'=e^{-x}/(1+e^{-x})^{2}=S(x)*(1-S(x))

  • Sigmoid函數(shù)圖像:
    2019062202.png
  • Sigmoid導(dǎo)函數(shù)圖像:
    2019062203.png
  • Sigmoid導(dǎo)函數(shù)定義域在[0,1]的圖像:
    2019062204.png
  • Sigmoid函數(shù)的表達式或圖像,將定義域為 [-\infty ,+\infty ] 的數(shù)映射到 (0 ,1 ),我們可以知道,只要是sigmoid作為該層的激活函數(shù),該層的輸出都是(0,1),從而導(dǎo)致,下一層再次經(jīng)過線性變化和非線性變換的輸出也是(0,1),特別說明,第一層的輸入是自己傳入的數(shù)據(jù)(不僅限于(0,1))。

  • Signoid導(dǎo)函數(shù)的表達式及圖像值知,其值閾為[0,0.25],定義域在(0,1)時,sigmoid的導(dǎo)函數(shù)時嚴(yán)格單調(diào)遞減的,{S(0)}'=e^{-0}/(1+e^{-0})^{2}=S(0)*(1-S(0))=0.25,{S(1)}'=e^{-1}/(1+e^{-1})^{2}=S(1)*(1-S(1))=0.196 ,其值在(0.196,0.250)區(qū)間內(nèi)。

  • 此時我們知道了隱藏層的輸出值閾及導(dǎo)函數(shù)值閾,假定損失函數(shù)選擇均方誤差函數(shù),這就很簡單的估計出每一層的梯度值。在傳遞過程中,每傳遞一層梯度值都會減小為原來的0-0.25倍,如果神經(jīng)網(wǎng)絡(luò)隱層特別多,且每一隱藏層的激活函數(shù)都是sigmoid函數(shù),在第n層時,梯度值的上界為0.25^{n},當(dāng)n等于5時,(0.25)^5=0.0009765625,那么梯度在穿過多層后將變得非常小接近于0,即出現(xiàn)梯度消失現(xiàn)象;

  • sigmoid 函數(shù)具有單調(diào)遞增及反函數(shù)單調(diào)遞增的性質(zhì),常被用作神經(jīng)網(wǎng)絡(luò)的閾值函數(shù),將其映射到(0 ,1 ) 區(qū)間,一般來講,在訓(xùn)練神經(jīng)網(wǎng)絡(luò)過程中,對于求導(dǎo),連續(xù)求導(dǎo),處理二分類問題,一般使用sigmoid函數(shù),這是因為sigmoid函數(shù)可以很好的把實數(shù)域光滑地映射到(0 ,1 ),函數(shù)值恰好的解釋預(yù)測為正類的概率。但是對于多分類問題,就比較麻煩,需要自己預(yù)處理一下,才能使用sigmoid函數(shù).

  • Sigmoid函數(shù)優(yōu)缺點

    • 優(yōu)點:

      • 函數(shù)具有單調(diào)遞增,連續(xù)可導(dǎo),輸出范圍有限(在(0,1)區(qū)間內(nèi)),優(yōu)化穩(wěn)定,可以用于輸出層(盡量不要使用在隱藏層);
      • 函數(shù)及導(dǎo)函數(shù)形式簡單;
    • 缺點:

      • 由于該函數(shù)具有軟飽和性,容易產(chǎn)生梯度消失,導(dǎo)致訓(xùn)練出現(xiàn)問題。
      • 其輸出大于0,因此輸出值不是以0為均值的。這稱為偏移現(xiàn)象,導(dǎo)致后一層的神經(jīng)元得到上一層輸出的非0均值的數(shù)據(jù)作為輸入,這將產(chǎn)生一個結(jié)果,每一層的線性映射部分,對參數(shù)求偏導(dǎo)的結(jié)果都為正(或者負),這樣在反向傳播時,要么往正方向更新,要么負方向更新,使得收斂速度慢。
      • sigmoid函數(shù)及其導(dǎo)函數(shù)含有指數(shù),導(dǎo)致計算機運算的時間長,這也造成了收斂速度慢。

5.2 Tanh 函數(shù)

  • Tanh也是一種常見的激活函數(shù),它是sigmoid函數(shù)的變形。

  • Tanh函數(shù)的公式為:
    tanh(x)=sinh(x)/cosh(x) =(0.5*(e^{x}-e^{-x}))/(0.5(e^{x}+e^{-x})) =(e^{x}-e^{-x})/(e^{x}+e^{-x}) =(1-e^{-2x})/(1+e^{-2x}) =2sigmoid(2x)-1

  • Tanh導(dǎo)函數(shù)公式:{tanh(x)}'={((1-e^{-2x})/(1+e^{-2x}))}' =(4e^{-2x})/((1+e^{-2x})^{2})=1-tanh(x)^{2}

  • Tanh函數(shù)的圖像:
    2019062205.png
  • Tanh導(dǎo)函數(shù)的圖像:
    2019062207.png
  • tanh函數(shù)的表達式或圖像,我們能輕易知道tanh的值閾[-1,1],從而它解決了Sigmoid函數(shù)的不是0均值輸出問題。

  • tanh導(dǎo)函數(shù)的表達式或圖像,我們能夠知道其值閾為[0,1]。當(dāng)線性變換的結(jié)果大于3或者小于-3時,其導(dǎo)函數(shù)的值接近于0。

  • 在梯度消失方面,tanh函數(shù)的缺點同sigmoid函數(shù)的缺點一樣,當(dāng)該層線性變換的結(jié)果很大或很小時,梯度接近于0,會導(dǎo)致梯度很小,權(quán)重更新非常緩慢,即梯度消失。

  • 在定義域[-1,1]時,tanh導(dǎo)函數(shù)對應(yīng)的值閾為[0.42,1],上一小節(jié)的知識可知,sigmoid導(dǎo)函數(shù)的值閾為[0.196,0.250],從而tanh函數(shù)要比sigmoid函數(shù)收斂速度快。

  • 但是梯度消失的問題和冪運算的問題仍然存在。梯度消失問題相對于sigmoid要有所緩解。

  • 一般來說,Tanh函數(shù)在特征相差明顯時效果好,在傳遞過程中會不斷地擴大特征,效果就顯示出來了。如果特征相差不是很大,或者特征比較復(fù)雜的時,Tanh的效果就不好了。

  • Tanh函數(shù)的優(yōu)缺點:

    • 優(yōu)點:
      • Tanh函數(shù)輸出的均值為0,該角度導(dǎo)致收斂要比sigmoid函數(shù)快。
      • 迭代次數(shù)較少
    • 缺點:
      • Tanh函數(shù)及其導(dǎo)函數(shù),同sigmoid函數(shù)一樣。含有指數(shù),導(dǎo)致計算機運算的時間長。
      • 與sigmoid函數(shù)相同,具有軟飽和性,會產(chǎn)生梯度消失問題,但是改善一些。

5.3 Relu 函數(shù)

  • Relu(Rectified Linear Units)是一種最常用的激活函數(shù),與Sigmoid相比,Relu函數(shù)的收斂速度會更快。
  • Relu函數(shù)的表達式:f(x)=max(0,x)
  • Relu導(dǎo)函數(shù)的表達式:{f(x)}'=1,(x>0);{f(x)}'=0,(x=0)
  • Relu函數(shù)的圖像:
    2019062208.png
  • Relu導(dǎo)函數(shù)的圖像:
    2019062209.png
  • Relu函數(shù)的表達式及其圖像,知道定義域[-\infty ,+\infty ],值閾[0 ,+\infty ]
  • Relu導(dǎo)函數(shù)的表達式及其圖像,知道定義域[-\infty ,+\infty ],值閾0或者1。
  • 我們可以看到,當(dāng)x\leq 0時,Relu 硬飽和;當(dāng)x> 0時,Relu 不存在飽和問題。從而Relu函數(shù)能夠在x>0時保持梯度不衰減,從而緩解梯度消失問題。這可以讓我們直接以有監(jiān)督的方式訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),而無須依賴無監(jiān)督的逐層預(yù)訓(xùn)練。然而,隨著訓(xùn)練的推進,部分輸入會落入硬飽和區(qū),導(dǎo)致對應(yīng)的權(quán)重?zé)o法更新。這種現(xiàn)象被稱為'神經(jīng)元死亡'。針對神經(jīng)元死亡,我們會對Relu函數(shù)進行改進。
  • Relu函數(shù)的取值是max(0,x),因為神經(jīng)網(wǎng)絡(luò)是不斷重復(fù)計算的,實際上變成了它在不斷試探如何用一個大多數(shù)為0的矩陣來表達數(shù)據(jù)的特征,會導(dǎo)致因為稀疏特征的存在,反而使得運算速度快,效果好。
  • 深度學(xué)習(xí)中最大的問題是梯度消失問題,使用tanh、sigmod等飽和激活函數(shù)情況下特別嚴(yán)重。神經(jīng)網(wǎng)絡(luò)在進行方向誤差傳播時,各個層都要乘以激活函數(shù)的一階導(dǎo)數(shù),梯度每傳遞一層就會衰減一層,網(wǎng)絡(luò)層數(shù)較多時,梯度就會不停衰減直到消失,使得訓(xùn)練網(wǎng)絡(luò)收斂越來越慢,而ReLU函數(shù)憑借其線性、非飽和的形式,訓(xùn)練速度則快很多。
  • Relu 優(yōu)缺點:
    • 優(yōu)點:
      • 只需要判斷輸入是否大于0,相比 Sigmoid函數(shù),Tanh函數(shù),Relu函數(shù)能夠快速的收斂;
      • Sigmoid 函數(shù)和 Tanh 函數(shù)涉及指數(shù)運算,Relu函數(shù)在大于0的區(qū)間內(nèi),簡單的線性運算,可以更好的實現(xiàn);
      • Relu有效的緩解梯度消失問題。在x>0的區(qū)間里,解決了梯度消失問題。
      • 在無監(jiān)督預(yù)訓(xùn)練的時候也有較好的表現(xiàn)。
    • 缺點:
      • 可能會出現(xiàn)神經(jīng)元死亡,權(quán)重?zé)o法更新;
      • ReLU的輸出不是0均值,影響收斂性;
      • 輸入負數(shù),則完全不激活,ReLU函數(shù)死掉;
      • dead relu

5.3.1 DEAD RELU

5.3.1.1 什么是 dead relu

  • 在訓(xùn)練過程中,某些神經(jīng)元可能永遠不會被激活,導(dǎo)致相應(yīng)的參數(shù)永遠不能被更新。有兩個主要原因可能導(dǎo)致這種情況產(chǎn)生:
    • (1) 非常不幸的參數(shù)初始化,這種情況比較少見(w都是負的);
    • (2) 由于一次梯度更新的幅度過大(learning rate太大),導(dǎo)致某些Relu節(jié)點的權(quán)重調(diào)整的太大,使得后續(xù)的訓(xùn)練對該節(jié)點不再起作用,不幸使網(wǎng)絡(luò)進入這種狀態(tài)。解決方法是可以采用Xavier初始化方法,以及避免將learning rate設(shè)置太大或使用adagrad等自動調(diào)節(jié)learning rate的算法。

5.3.1.2 dead relu 產(chǎn)生的原因

  • 假設(shè)有一個神經(jīng)網(wǎng)絡(luò)在其輸入X上有一些分布。讓我們看一個特定的ReLU單元R,對于任何固定的參數(shù)集,X上的分布意味著在R的輸入上的分布。假設(shè)R的輸入分布為以+0.1為中心的低方差高斯分布,在這種情況下,現(xiàn)在假設(shè)在一個特定的backprop期間,有一個大的梯度向后傳遞給R.由于R是開放的,它會將這個大的梯度向后傳遞到它的輸入。這會導(dǎo)致計算R輸入的函數(shù)發(fā)生相對較大的變化。這意味著R的輸入上的分布已經(jīng)改變。 假設(shè)R的輸入現(xiàn)在分布為以-0.1為中心的低方差高斯分布。現(xiàn)在我們有R的大多數(shù)輸入都是負數(shù),因此大多數(shù)輸入經(jīng)過ReLU函數(shù)能得到一個0(ReLU is close),大多數(shù)輸入不能反向傳播通過ReLU得到一個梯度,因此ReLU的輸入w一般都得不到更新通過隨機反向傳播(SGD)。R的輸入分布相對較小的變化(-0.2)導(dǎo)致R的行為存在質(zhì)的差異。我們越過零邊界,R現(xiàn)在幾乎總是關(guān)閉。問題是關(guān)閉的ReLU無法更新其輸入?yún)?shù),因此死亡(死亡=始終關(guān)閉)ReLU會停止運行,這就是所謂的‘dying ReLU’。

  • dead relu 參考文獻見此鏈接1

  • dead relu 參考文獻見此鏈接2

5.3.2 Leaky-Relu

  • Relu函數(shù)在定義域大于0的區(qū)間內(nèi),保持梯度不衰減,但是在定義域小于0的區(qū)間內(nèi),Relu硬飽和,會出現(xiàn)神經(jīng)元死亡的現(xiàn)象。針對小于0的硬飽和現(xiàn)象,一般會對Relu函數(shù)做出相應(yīng)的改進,改進后的函數(shù)表達式為:


    2019062210.png
  • L-Relu函數(shù),在定義域小于0的區(qū)間內(nèi),比著Relu前面多了一個系數(shù)(0.01),其存在的目的在于即修正了數(shù)據(jù)又保留了部分在定義域小于0的值,使其信息不完全全部丟失。

5.3.3 P-ReLu

  • 相比L-Relu,P-Relu函數(shù)在定義域小于0的區(qū)間內(nèi),將0.01更改為學(xué)習(xí)率,LReLu與ReLu對模型影響相差不大,通過在訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)時,不斷調(diào)整學(xué)習(xí)率(也可以固定學(xué)習(xí)率),讓模型更加完美。
  • P-Relu表達式為:P-Relu = Relu + \alpha _{i}*min(0,y_{i})
  • P-Relu具體表達式為:


    2019062211.png

5.3.4 C-ReLu

  • C-Relu中的C是指concatenated。 CRelu主要用在CNN架構(gòu)中,通過簡單的修改,更好地提高CNN的性能。在深入分析CNN網(wǎng)絡(luò)內(nèi)部結(jié)構(gòu),發(fā)現(xiàn)在CNN網(wǎng)絡(luò)的前幾層學(xué)習(xí)到的濾波器中存在負相關(guān)。

  • C-Relu表達式:C-ReLU(x)=[ReLU(x),ReLU(?x)]。舉個例子,理解一下,假設(shè)輸入C-Relu函數(shù)是1,經(jīng)過非線性映射變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5BReLU(1)%2CReLU(%E2%88%921)%5D%20%3D%5B1%2C0%5D" alt="[ReLU(1),ReLU(?1)] =[1,0]" mathimg="1">;假設(shè)輸入C-Relu函數(shù)是-1,經(jīng)過非線性映射變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5BReLU(-1)%2CReLU(1)%5D%20%3D%5B0%2C1%5D" alt="[ReLU(-1),ReLU(1)] =[0,1]" mathimg="1">;

  • 下圖是對所有卷積核尋找其 pair filter(即所有卷積核中選擇一個cos相似度最小的卷積核),并計算cos相似度得到藍色的統(tǒng)計直方圖。 紅色的曲線是假設(shè)隨機高斯分布生成的卷積核得到的相似度統(tǒng)計。在第一卷積層,藍色的直方圖分布以-0.5為中心點,對稱均勻分布,也就是說有較多成對的濾波器。越到后面的層,藍色的直方圖分布越集中,成對的濾波器越少。也就是說學(xué)習(xí)到的濾波器存在冗余。由于CNN前幾層出現(xiàn)大量負值數(shù)據(jù)及大量的對稱的濾波,ReLU在神經(jīng)網(wǎng)絡(luò)的前幾層會抹掉定義域為負的值,對此設(shè)計了C-ReLU。
    2019062212.png
  • 低層的濾波器分布存在對稱的現(xiàn)象, 所以考慮在低層的網(wǎng)絡(luò)中采用 CRelu效果會提升很多。

  • 使用CReLU時,要有意識的將濾波器數(shù)量減半,否則會將輸入的feature-map的數(shù)量擴展為兩倍, 網(wǎng)絡(luò)參數(shù)將會增加。

  • C-Relu論文:請點我

5.3.5 ELU (Exponential Linear Units)

  • 為了減少不必要的偏移移位效應(yīng),做出如下改變:(i)輸入單元的激活可以以零為中心,(ii)可以使用具有負值的激活函數(shù)。 介紹一個新的激活函數(shù)具有負值,同時保持正參數(shù)的特性,即elu。

  • ELU函數(shù)表達式:
    2019062213.png
  • ELU函數(shù)圖像:
    2019062214.png
  • ELU導(dǎo)函數(shù)圖像:
    2019062215.png
  • elu函數(shù)可以加速訓(xùn)練并且可以提高分類的準(zhǔn)確率。它有以下特征:

    • 1)elu由于其正值特性,可以像relu,lrelu,prelu一樣緩解梯度消失的問題。
    • 2)相比relu,elu存在負值,可以將激活單元的輸出均值往0推近,達到batchnormlization的效果且減少了計算量。(輸出均值接近0可以減少偏移效應(yīng)進而使梯度接近于自然梯度),所以收斂速度更快。
    • 3)Lrelu和prelu雖然有負值存在,但是不能確保是一個噪聲穩(wěn)定的去激活狀態(tài)。Elu左側(cè)軟飽性能夠讓ELU對輸入變化或噪聲更魯棒。
    • 4)Elu在負值時是一個指數(shù)函數(shù),對于輸入特征只定性不定量。
  • Elu論文:請點我

5.3.6 S-Elu (Exponential Linear Units)

  • 上面那個ELU,\alpha要設(shè)多少?后來又出現(xiàn)一種新的方法,叫做SELU。它相對于ELU做了一個新的變化:就是現(xiàn)在把每一個值的前面都乘上一個\lambda,然后他會告訴你,\alpha\lambda應(yīng)該是多少。

  • S-Elu函數(shù)表達式:
    2019062216.png
  • S-Elu函數(shù)圖像:
    2019062217.png
  • S-Elu函數(shù)的超參\alpha\lambda的值是證明得到的,而并非訓(xùn)練學(xué)習(xí)得到。\alpha= 1.6732632423543772848170429916717,
    \lambda = 1.0507009873554804934193349852946

  • 經(jīng)過該激活函數(shù)后,使得樣本服從標(biāo)準(zhǔn)正態(tài)分布,保證訓(xùn)練過程中梯度不會爆炸或消失,效果比Batch Normalization 要好。S-Elu其實就是ELU乘了個\lambda,關(guān)鍵在于這個\lambda是大于1的。

  • 以前relu,prelu,elu這些激活函數(shù),都是在負半軸坡度平緩,而S-Elu在activation的方差過大的時候可以讓它快速減小,防止了梯度爆炸;在正半軸relu,prelu,elu這些激活函數(shù)簡單的設(shè)成了1。而selu的正半軸大于1,在方差過小的的時候可以讓它增大,同時防止了梯度消失。這樣激活函數(shù)就有一個不動點,網(wǎng)絡(luò)層數(shù)很多層以后,每一層的輸出都是均值為0和方差為1。

  • 推到 S-Elu有兩個假設(shè):

    • 第一種假設(shè),每一個神經(jīng)元的input是mean=0,variance=1的i.i.d,不一定是高斯分布。一般在feature應(yīng)該要先做一下normalize讓input服從mean=0,varaince=1的高斯分布。
    • 第二種假設(shè),每一個神經(jīng)元的weight是mean=0,variance=1/K(K是上一層神經(jīng)元的個數(shù)),但是這種假設(shè),沒有辦法在training的時候保證weight一直都是處于這個狀態(tài),但我們至少可以在initialize的時候把他initialize成這個狀態(tài),這樣子我們到時候train的時候就不會差太多。一般在initialize的時候,讓weight是mean=0,variance=1/K,可以通過kernel_initializer='lecun_normal'來實現(xiàn)。
  • tensorflow里可以直接使用selu,也可以改進elu,具體代碼如下.

def selu(x):
    with ops.name_scope('elu') as scope:
        alpha = 1.6732632423543772848170429916717
        scale = 1.0507009873554804934193349852946
        return scale*tf.where(x>=0.0, x, alpha*tf.nn.elu(x))
        

5.4 Softplus 函數(shù)

  • softplus其實就是 sigmoid 函數(shù)的原函數(shù),它的導(dǎo)數(shù)就是 sigmoid 函數(shù)。softplus的函數(shù)圖像和ReLU有些類似。它出現(xiàn)的比ReLU早,可以視為ReLU的鼻祖。也可以將Softplus看成 Relu 的平滑形式。一開始想要一個指數(shù)函數(shù)作為激活函數(shù),但是發(fā)現(xiàn)線性變換后,數(shù)值足夠大時,梯度太大了,難以訓(xùn)練,于是外面套了一個對數(shù)函數(shù)。

  • Softplus函數(shù)表達式:softplus(x)=log(1+e^{x})

  • Softplus和Relu函數(shù)圖像:
    2019062218.png
  • Softplus優(yōu)點:

    • 相比sigmoid函數(shù),softplus指數(shù)運算,計算量少很多。
    • 對于深層網(wǎng)絡(luò),反向傳播時,softplus相對sigmoid函數(shù),不容易出現(xiàn)梯度消失問題。

5.5 Softmax 函數(shù)

  • Softmax函數(shù)常用來最后的一層,并作為輸出層進行多分類判別。 它跟二分類在輸出層之后一個單元不同的是,使用softmax的輸出層擁有多個單元,實際上我們有多少個分類就會有多少個單元,在softmax的作用下每個神經(jīng)單元都會計算出當(dāng)前樣本屬于本類的概率,并且其和等于1。
  • 輸出層第i個神經(jīng)元的Softmax函數(shù)表達式:f(x)=exp(x_{i})/\sum_{j=1}^{k}exp(x_{j}),其中k為類別的個數(shù)。
  • 用于分類的softmax激活函數(shù),對應(yīng)的損失函數(shù)一般都是用對數(shù)似然函數(shù),這樣算出來梯度很簡潔,也沒有sigmoid訓(xùn)練速度慢的問題。
  • softmax與sigmoid函數(shù),多分類對比:
    • softmax 函數(shù)服從多項式分布,sigmoid 函數(shù)服從伯努利分布;
    • softmax 進行分類時,類與類之間是互斥的;sigmoid 函數(shù)進行分類時,類與類之間并不是互斥的;
    • softmax 函數(shù)多類分類問題,大多數(shù)損失函數(shù)為categorical_crossentropy,取概率分布中最大的作為最終的分類結(jié)果;
    • sigmoid 函數(shù)在多標(biāo)簽分類中,大多使用binary_crossentropy損失函數(shù),設(shè)置一個概率閾值,如果概率值大于閾值,則判定屬于該類別符合,會造成一個樣本具有多個類別。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,345評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,494評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,283評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,953評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,714評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,410評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,940評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,776評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,210評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,654評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,958評論 2 373