激活函數(Activation functions)--(sigmoid、tanh、ReLu)


激活函數(Activation functions

之前用過 sigmoid 函數,sigmoid 函數在這里被稱為激活函數,公式為:

   

 

 

 更通常的情況下,使用不同的函數g(z[1])g可以是除了 sigmoid 函數意外的非線性函數 效果總是優於 sigmoid 函數因為函數值域在-1 +1的激活函數,其均值是更接近零均值的

tanh 函數或者雙曲正切函數是總體上都優於 sigmoid 函數的激活函數,tanh 函數是 sigmoid 的向下平移和伸縮后的結果,對它進行了變形后,穿過了(0,0)點,並且值域介於+1 -1 之間,sigmoid 函數和 tanh 函數兩者共同的缺點是,在z特別大或者特別小的情況下,導數的梯度或者函數的斜率會變得特別小,最后就會接近於 0,導致降低梯度下降的速度,公式為:

  

 

 

 在機器學習另一個很流行的函數是:修正線性單元的函數(ReLu),ReLu 函數圖像是如下圖:

   

 

 

 另一個版本的 Relu 被稱為 Leaky Relu,當z是負值時,這個函數的值不是等於 0,而是輕微的傾斜,這個函數通常比 Relu 激活函數效果要好,盡管在實際中 Leaky ReLu 使用的並不多,如圖:

   

 

 這是一些選擇激活函數的經驗法則:

sigmoid 激活函數:除了輸出層是一個二分類問題基本不會用它。

tanh 激活函數:tanh 是非常優秀的,幾乎適合所有場合。

ReLu 激活函數:最常用的默認函數,,如果不確定用哪個激活函數,就使用 ReLu 或者Leaky ReLu

 1.51為什么需要非線性激活函數?(why need a nonlinear activation function?

如果你是用線性激活函數或者叫恆等激勵函數,那么神經網絡只是把輸入線性組合再輸,事實證明,如果你使用線性激活函數或者沒有使用一個激活函數,那么無論你的神經網絡有多少層一直在做的只是計算線性函數,相當於不如直接去掉全部隱藏層,所以除非你引入非線性,否則你無法計算更有趣的函數,即使你的網絡層數再多也不行。總而言之,不能在隱藏層用線性激活函數,可以用 ReLU 或者 tanh 或者 leaky ReLU 或者其他的非線性激活函數,唯一可以用線性激活函數的通常就是輸出層。還有一些特殊情況,不做討論。

 1.2 激活函數的導數(Derivatives of activation functions

1sigmoid激活函數

  

(2)Tanh激活函數

   

(3)Rectified Linear Unit (ReLU)

 

 

 注:通常在z= 0 的時候給定其導數 1,0;當然z=0 的情況很少

4Leaky linear unit (Leaky ReLU)

 

注:通常在z= 0的時候給定其導數 1,0.01;當然z = 0的情況很少


免責聲明!

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



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