記-CNN中的激活函數


1.概念

  激活函數的主要作用是提供網絡的非線性建模能力。如果沒有激活函數,那么該網絡僅能夠表達線性映射,此時即便有再多的隱藏層,其整個網絡跟單層神經網絡也是等價的。因此也可以認為,只有加入了激活函數之后,深度神經網絡才具備了分層的非線性映射學習能力。 

2.特性

  可微性: 當優化方法是基於梯度的時候,這個性質是必須的。 
  單調性: 當激活函數是單調的時候,單層網絡能夠保證是凸函數。 
  輸出值的范圍: 當激活函數輸出值是 有限 的時候,基於梯度的優化方法會更加 穩定,因為特征的表示受有限權值的影響更顯著;當激活函數的輸出是 無限 的時候,模型的訓練會更加高效,不過在這種情況小,一般需要更小的learning rate

3.作用

  在我們面對線性可分的數據集的時候,簡單的用線性分類器即可解決分類問題。但是現實生活中的數據往往不是線性可分的,面對這樣的數據,一般有兩個方法:引入非線性函數、線性變換

4.使用場景

  (1)Sigmoid  

          

           

  sigmoid 是使用范圍最廣的一類激活函數,具有指數函數形狀,它在物理意義上最為接近生物神經元。此外,(0, 1) 的輸出還可以被表示作概率,或用於輸入的歸一化,代表性的如Sigmoid交叉熵損失函數。

可以看出,sigmoid函數連續,光滑,嚴格單調,以(0,0.5)中心對稱,是一個非常良好的閾值函數。

  當x趨近負無窮時,y趨近於0;趨近於正無窮時,y趨近於1;x=0時,y=0.5。當然,在x超出[-6,6]的范圍后,函數值基本上沒有變化,值非常接近,在應用中一般不考慮。

  Sigmoid函數的值域范圍限制在(0,1)之間,我們知道[0,1]與概率值的范圍是相對應的,這樣sigmoid函數就能與一個概率分布聯系起來了。

  Sigmoid函數的導數是其本身的函數,即f(x)=f(x)(1f(x))f′(x)=f(x)(1−f(x)),計算非常方便,也非常節省計算時間。

  然而,sigmoid也有其自身的缺陷,最明顯的就是飽和性。從上圖可以看到,其兩側導數逐漸趨近於0 

         

  具有這種性質的稱為軟飽和激活函數。具體的,飽和又可分為左飽和與右飽和。與軟飽和對應的是硬飽和, 即 

  f(x)=0|x|>ccf′(x)=0,當|x|>c,其中c為常數。

  sigmoid 的軟飽和性,使得深度神經網絡在二三十年里一直難以有效的訓練,是阻礙神經網絡發展的重要原因。具體來說,由於在后向傳遞過程中,sigmoid向下傳導的梯度包含了一個 f(x)f′(x) 因子(sigmoid關於輸入的導數),因此一旦輸入落入飽和區,f(x)f′(x) 就會變得接近於0,導致了向底層傳遞的梯度也變得非常小。此時,網絡參數很難得到有效訓練。這種現象被稱為梯度消失。一般來說, sigmoid 網絡在 5 層之內就會產生梯度消失現象

此外,sigmoid函數的輸出均大於0,使得輸出不是0均值,這稱為偏移現象,這會導致后一層的神經元將得到上一層輸出的非0均值的信號作為輸入。

  (2)tanh

    

  

 

   tanh也是一種非常常見的激活函數。與sigmoid相比,它的輸出均值是0,使得其收斂速度要比sigmoid快,減少迭代次數。然而,從途中可以看出,tanh一樣具有軟飽和性,從而造成梯度消失

  

 

  (3)ReLU,P-ReLU, Leaky-ReLU

    

 

  

 

  ReLU的全稱是Rectified Linear Units,是一種后來才出現的激活函數。 可以看到,當x<0時,ReLU硬飽和,而當x>0時,則不存在飽和問題。所以,ReLU 能夠在x>0時保持梯度不衰減,從而緩解梯度消失問題。這讓我們能夠直接以監督的方式訓練深度神經網絡,而無需依賴無監督的逐層預訓練。   

  然而,隨着訓練的推進,部分輸入會落入硬飽和區,導致對應權重無法更新。這種現象被稱為“神經元死亡”。與sigmoid類似,ReLU的輸出均值也大於0,偏移現象和 神經元死亡會共同影響網絡的收斂性。

針對在x<0的硬飽和問題,我們對ReLU做出相應的改進,使得 

   

 

   

 

  這就是Leaky-ReLU, 而P-ReLU認為,αα也可以作為一個參數來學習,原文獻建議初始化a為0.25,不采用正則。

  (4)ELU

  

 

  

 

   融合了sigmoid和ReLU,左側具有軟飽和性,右側無飽和性。右側線性部分使得ELU能夠緩解梯度消失,而左側軟飽能夠讓ELU對輸入變化或噪聲更魯棒。ELU的輸出均值接近於零,所以收斂速度更快。在 ImageNet上,不加 Batch Normalization 30 層以上的 ReLU 網絡會無法收斂,PReLU網絡在MSRA的Fan-in (caffe )初始化下會發散,而 ELU 網絡在Fan-in/Fan-out下都能收斂

   (5)Maxout

   

  Maxout模型實際上也是一種新型的激活函數,在前饋式神經網絡中,Maxout的輸出即取該層的最大值,在卷積神經網絡中,一個Maxout feature map可以是由多個feature map取最值得到。 
  maxout的擬合能力是非常強的,它可以擬合任意的的凸函數。但是它同dropout一樣需要人為設定一個k值。 
  為了便於理解,假設有一個在第i層有2個節點第(i+1)層有1個節點構成的神經網絡。

  

 

  激活值 out = f(W.X+b); f是激活函數。’.’在這里代表內積這里寫圖片描述;W = () 
  那么當我們對(i+1)層使用maxout(設定k=5)然后再輸出的時候,情況就發生了改變。

  

 

   此時網絡形式上就變成上面的樣子,用公式表現出來就是: 
  z1 = W1.X+b1; 
  z2 = W2.X+b2; 
  z3 = W3.X+b3; 
  z4 = W4.X+b4; 
  z5 = W4.X+b5; 
  out = max(z1,z2,z3,z4,z5); 
  也就是說第(i+1)層的激活值計算了5次,可我們明明只需要1個激活值,那么我們該怎么辦?其實上面的敘述中已經給出了答案,取這5者的最大值來作為最終的結果。 
  總結一下,maxout明顯增加了網絡的計算量,使得應用maxout的層的參數個數成k倍增加,原本只需要1組就可以,采用maxout之后就需要k倍了。 
  再敘述一個稍微復雜點的應用maxout的網絡,網絡圖如下:

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM