啟用函式(activate function)在神經元中非常重要,為了增強網路的表示能力和學習能力,啟用函式需要具備以下幾點性質:
(1)連續並可導的非線性函式,以便於利用數值優化的方法來學習網路引數。
(2)啟用函式及其導數要盡可能簡單,以提高網路計算的效率。
(3)啟用函式的導函式的值域要在乙個合適的區間內,否則會影響訓練的穩定性。
常見的啟用函式有以下幾種:
一、sigmoid啟用函式
sigmoid函式也叫logistic函式,定義為:
sigmoid函式可以把乙個實數域的輸出壓縮到(0, 1)的區間上,當輸入值在0附近時,sigmoid函式近似為線性函式;當輸入值靠近兩端時,對輸入值進行抑制,輸入越小,越接近於0,輸入越大,越接近於1。
和感知機的階躍函式相比,sigmoid函式是連續可導的,其輸出值直接可以看做是概率分布,使得神經網路可以更好地和統計學習模型結合。
二、tanh啟用函式
tanh函式(雙曲正切函式)的定義為:
tanh函式可以看作是放大並平移的 sigmoid函式,其值域是 (-1, 1)。 tanh函式的輸出是零中心化的,而 logistic函式的輸出恆大於 0。
就在隱含層上的表現而言,tanh函式的效果總是優於 sigmoid 函式,
因為tanh函式值域在(-1,1)上,其均值更接近0均值,而非零中心化的sigmoid函式,其輸出會使得後一層的神經元的輸入發生位置偏移,進一步使得梯度下降的收斂速度變慢。
函式和 t
anh
函式兩者共同的缺點是,在z特別大或者特別小的情況下,導數的梯度會變得特別小,最後就會接近於0(稱為兩端飽和問題),導致梯度下降的速度降低,而relu啟用函式對這一點進行了修正。
三、relu啟用函式
relu(rectified linear unit ,修正線性單元)啟用函式是目前深層神經網路中常用的啟用函式。relu啟用函式的形狀類似於乙個斜坡,只要x為正值,導數恆等於1,當x為負值時,導數恆等於0.
定義為:
relu啟用函式的優點在於:
(1)採用relu的神經元只需要進行加、乘和比較的操作,相比sigmoid函式和tanh函式,在學習上更加高效。
(2)relu函式被認為具有生物上的解釋性,因為在生物神經網路中,同時處於興奮狀態的神經元非常稀疏,人的大腦中在同一時刻大概只有1~4%的神經元處於活躍狀態,而relu的單邊抑制使其具有很好的稀疏性。相比之下,sigmoid啟用函式和tanh啟用函式會導致乙個非稀疏的神經網路。
(3)在優化方面,sigmoid函式和tanh函式的兩端飽和(即自變數趨於負無窮或正無窮時,導數值趨近於0),這會造成梯度瀰散問題,而relu函式為左飽和函式,且在x>0時導數為1,在一定程度上緩解了神經網路的梯度小的問題,加快了梯度下降的收斂速度。
但relu函式也有乙個比較大的缺點,稱為死亡relu問題,意思是在訓練時,如果引數在一次不恰當的更新後,第乙個隱藏層中的某個relu神經元在所有的訓練資料上都不能被啟用,那麼這個神經元自身引數的梯度永遠為0,在以後的訓練過程中永遠不會被啟用。
為了解決這個問題,其他relu函式的變種被提了出來,比如leaky relu(帶洩露的relu)、帶引數的relu和elu(指數線性單元)。
四、leaky relu
leaky relu(帶洩露的relu)在輸入x<0時,保持乙個很小的梯度,這樣當神經元非啟用時也能有乙個非零的梯度可以更新引數,避免永遠不能被啟用。
leaky relu的函式形式為:
其中 γ
是乙個很小的常數,比如 0.
01 。
當γ <
1時,leaky
relu
也可以寫為 :
五、softplus函式
softplus函式可以看作是 rectifier函式的平滑版本,其定義為:
softplus函式的導數恰好是sigmoid函式。softplus函式雖然類似於relu函式,具有單側抑制、寬興奮邊界的特性,卻沒有稀疏啟用性。
六、如何選擇啟用函式
sigmoid 啟用函式:如果是二分類問題,且輸出值為0、1,則輸出層選擇sigmoid函式,然後其他所有單元都選擇relu函式或者tanh函式。除了二分類問題外輸出層基本不會用它。
tanh 啟用函式:tanh 函式非常優秀,幾乎適合所有場合。
relu 啟用函式:最常用的啟用函式,如果不確定用哪個啟用函式,就使用 relu 或者leaky relu。
七、啟用函式必須為非線性函式?
神經網路的啟用函式必須使用非線性函式。
為什麼不能使用線性函式呢?因為使用線性函式的話,加深神經網路的層數就沒有意義了。線性函式的問題在於,不管怎麼加深層數,總是存在和它等效的無隱含層神經網路,不如直接去掉全部隱含層。所以為了發揮疊加層所帶來的優勢,隱含層的啟用函式必須使用非線性函式,唯一可以使用線性啟用函式的通常就是輸出層。
深度學習之啟用函式
sigmoid啟用函式 sigmoid將乙個實數輸入對映到 0,1 範圍內,如下圖 左 所示。使用sigmoid作為啟用函式存在以下幾個問題 梯度飽和。當函式啟用值接近於0或者1時,函式的梯度接近於0。在反向傳播計算梯度過程中 l w l t l 1 f z l 每層殘差接近於0,計算出的梯度也不可...
深度學習之啟用函式總結
深度學習中啟用函式的作用是能夠給神經網路加入一些非線性因素,使得神經網路可以更好地解決較為複雜的問題。沒有啟用函式,即便有再多的隱藏層,其整個網路跟單層神經網路也是等價的,可見啟用函式的重要性如此之大。下面,分別介紹深度學習中常用的啟用函式。sigmoid的公式如下 函式對應的影象如下 優點 1.s...
深度學習之啟用函式詳解
啟用函式是什麼 啟用函式,即activation function,有時候也稱作激勵函式。它是為了解決線性不可分的問題引出的。但是也不是說線性可分就不能用啟用函式,也是可以的。它的目的是為了使資料更好的展現出我們想要的效果。啟用函式在 用?比如乙個神經網路 為了更清晰的表示,我用紅色標出。比如像上面...