PRelu可以參考這篇文章:
https://www.cnblogs.com/catpainter/p/8406285.html
PReLU全名Parametric Rectified Linear Unit. PReLU-nets在ImageNet 2012分類數據集top-5上取得了4.94%的錯誤率,首次超越了人工分類的錯誤率(5.1%)。PReLU增加的計算量和過擬合的風險幾乎為零。考慮了非線性因素的健壯初始化方法使得該方法可以訓練很深很深的修正模型(rectified model)來研究更深更大的網絡結構。
ReLU和PReLU圖像:
PReLU的數學表達式(i代表不同的通道,即每一個通道都有參數不相同的PReLU函數):
ai被初始化為0.25。
神經網絡為什么需要非線性激活函數?
非線性函數是指的一階導數不為常數的函數
線性函數的組合還是線性函數,所以網絡再深,最后輸出的還是線性函數。所以用非線性激活函數,神經網絡理論上可以逼近任意函數。
激活函數在神經網絡中的應用,除了引入非線性表達能力,其在提高模型魯棒性、緩解梯度消失問題、將特征輸入映射到新的特征空間以及加速模型收斂等方面都有不同程度的改善作用
常見的激活函數主要包括如下幾種:sigmoid函數、tanh函數、Relu函數、Leaky Relu函數、ELU函數。
以下參考這篇文章:
https://www.cnblogs.com/Joejwu/p/Joejwu_blog210618.html
《常用激活函數:Sigmoid、Tanh、Relu、Leaky Relu、ELU優缺點總結》
Sigmoid函數





上圖即為Relu函數的曲線圖,可見在輸入為負值時,輸出均為0值,在輸入大於0的區間,輸出y=x,可見該函數並非全區間可導的函數;其優缺點總結如下:






圖中所示即為ELU函數,其也是Relu函數的一種變體,x大於0時,y=x,x小於等於0時,y=α(exp(x)-1),可看作介於Relu與Leaky Relu之間的函數;其優缺點總結如下:
以下參考這篇文章:
https://www.cnblogs.com/makefile/p/activation-function.html
Maxout
優點:
- Maxout的擬合能力非常強,可以擬合任意的凸函數。
- Maxout具有ReLU的所有優點,線性、不飽和性。
- 同時沒有ReLU的一些缺點。如:神經元的死亡。
缺點:
從上面的激活函數公式中可以看出,每個神經元中有兩組(w,b)參數,那么參數量就增加了一倍,這就導致了整體參數的數量激增。
與常規激活函數不同的是,它是一個可學習的分段線性函數.
然而任何一個凸函數,都可以由線性分段函數進行逼近近似。其實我們可以把以前所學到的激活函數:ReLU、abs激活函數,看成是分成兩段的線性函數,如下示意圖所示:
實驗結果表明Maxout與Dropout組合使用可以發揮比較好的效果。
前邊的兩種ReLU便是兩種Maxout,函數圖像為兩條直線的拼接。
梯度消失/爆炸原因及解決辦法
原因,淺層的梯度計算需要后面各層的權重及激活函數導數的乘積,因此可能出現前層比后層的學習率小(vanishing gradient)或大(exploding)的問題,所以具有不穩定性.
怎么解決,需要考慮幾個方面:
- 權重初始化
使用合適的方式初始化權重, 如ReLU使用MSRA的初始化方式, tanh使用xavier初始化方式. - 激活函數選擇
激活函數要選擇ReLU等梯度累乘穩定的. - 學習率
一種訓練優化方式是對輸入做白化操作(包括正規化和去相關), 目的是可以選擇更大的學習率. 現代深度學習網絡中常使用Batch Normalization(包括正規化步驟,但不含去相關). (All you need is a good init. If you can't find the good init, use Batch Normalization.)
梯度爆炸
由於sigmoid,ReLU等函數的梯度都在[0,1]以內,所以不會引發梯度爆炸問題。 而梯度爆炸需要采用梯度裁剪、BN、設置較小學習率等方式解決。
激活函數選擇
- 首先嘗試ReLU,速度快,但要注意訓練的狀態.
- 如果ReLU效果欠佳,嘗試Leaky ReLU或Maxout等變種。
- 嘗試tanh正切函數(以零點為中心,零點處梯度為1)
- sigmoid/tanh在RNN(LSTM、注意力機制等)結構中有所應用,作為門控或者概率值.
- 在淺層神經網絡中,如不超過4層的,可選擇使用多種激勵函數,沒有太大的影響。