1. 程式人生 > >啟用函式(Activation function)

啟用函式(Activation function)

神經網路中使用啟用函式來加入非線性因素,提高模型的表達能力。

ReLU(Rectified Linear Unit,修正線性單元)

f(x)={0,x,x0x>0f(x)={0,x≤0x,x>0
詳細公式ReLU:
f(x)σ(z)=i=1infσ(xi+0.5)log(1+ex)max(0,x+N(0,1))=11+ex(stepped sigmoid)(softplus function)(ReL function)(sigmoid)(1)(2)(3)(4)(1)f(x)=∑i=1infσ(x−i+0.5)(stepped sigmoid)(2)≈log⁡(1+ex)(softplus function)(3)≈max(0,x+N(0,1))(ReL function)(4)其中σ(z)=11+e−x(sigmoid)

ReLU變種

Leaky ReLU

x<0,f(x)=αx,α,x<0,當x<0時,f(x)=αx,其中α非常小,這樣可以避免在x<0時,不能夠學習的情況

f(x)=max(αx,x)f(x)=max(αx,x) 稱為Parametric Rectifier(PReLU)

α=0.01α=0.01時,是Leaky ReLU.

優點:

  • 不會過擬合(saturate)
  • 計算簡單有效
  • 比sigmoid/tanh收斂快

指數線性單元ELU

f(x)={α(ex1),x,x0x>0f(x)={α(ex−1),x≤0x,x>0

由於需要計算指數,計算量較大

Maxout

函式影象為兩條直線的拼接,f(x)=max(wT1x+b1,wT2x+b2)f(x)=max(w1Tx+b1,w2Tx+b2)

那麼,前邊的兩種ReLU便是兩種Maxout.

啟用層函式選擇

  1. 最好不要用sigmoid,比如AlexNet等都不用sigmoid

  2. 首先試ReLU,速度快,但要注意訓練的狀態.

  3. 如果ReLU失效,試試Leaky ReLU或Maxout

  4. 試試tanh正切函式

在淺層神經網路中,如不超過4層的,可選擇使用多種激勵函式,沒有太大的影響。特別的,RNN中使用ReLU或tanh(三角函式tan);Hinge用於soft-margin svm演算法;log用於LR演算法(Logistric Regression);squared loss用於線性迴歸 (Liner Regression)和Boosting。

sigmoid作啟用函式的缺點

σ(x)=1(1+ex)σ(x)=1(1+e−x) ,歷史上很流行(Historically popular since they have nice interpretation as a saturating “firing rate” of a neuron),梯度為σ=ex(1+ex)2=(1+ex11+ex)(11+ex)