1. 程式人生 > >修正線性單元(Rectified linear unit,ReLU)

修正線性單元(Rectified linear unit,ReLU)

修正線性單元(Rectified linear unit,ReLU)

Rectified linear unit

在神經網路中,常用到的啟用函式有sigmoid函式f(x)=11+exp(x)、雙曲正切函式f(x)=tanh(x),今天要說的是另外一種activation function,rectified linear function,f(x)=max(0,x)

它的特點是被認為是more biologically plausible than widely used logistic sigmoid or hyperbolic tangent(雙曲正切 tanh),就是說更加符合神經元訊號激勵原理。採用了rectified linear function作為activation function的unit被稱為rectified linear unit。它的一個平滑解析函式為f

(x)=ln(1+ex),被稱之為softplus function,softplus的微分就是logistic function:f(x)=ex/(ex+1)=1/(1+ex)。另外一種函式叫做softmax function或者normalized exponential是logistic function的一個泛化,如下:

σ(z)j=ezjKk=1ezkforj=1,...,K.
the softmax function常被用來various probabilistic multiclass classification methods 比如multinomial logistic regression,multiclass linear discriminant analysis, naive Bayes classifiers and artificial neural networks等。在Andrew Ng的機器學習課程中,softmax regression中就用到了softmax function。這裡點一下說明。當然本文的重點還是在rectified linear function上。

有幾種變體:

noisy ReLUs

可將其包含Gaussian noise得到noisy ReLUs,f(x)=max(0,x+N(0,σ(x))),常用來在機器視覺任務裡的restricted Boltzmann machines中。

leaky ReLUs

允許小的非零的gradient 當unit沒有被啟用時。

f(x)={x0.01xif x>0otherwise

Advantages

  1. Biological plausibility:單邊,相比於反對稱結構(antisymmetry)的tanh
  2. Sparse activation:基本上隨機初始化的網路,只有有一半隱含層是處於啟用狀態,其餘都是輸出為0
  3. efficient gradient propagation:不像sigmoid那樣出現梯度消失的問題
  4. efficient computation:只需比較、乘加運算。
    使用rectifier 作為非線性啟用函式使得深度網路學習不需要pre-training,在大、複雜的資料上,相比於sigmoid函式等更加快速和更有效率。
    標準的sigmoid輸出不具備稀疏性,需要通過懲罰因子來訓練一堆接近於0的冗餘資料,從而產生稀疏資料,比如L1,L2或者student-t作為懲罰因子,進行regularization。而ReLU為線性修正,是purelin的折線版,作用是如果計算輸出小於0,就讓它等於0,否則保持原來的值,這是一種簡單粗暴地強制某些資料為0的方法,然而經實踐證明,訓練後的網路完全具備適度的稀疏性,而且訓練後的視覺化效果和傳統pre-training的效果很相似。這說明了ReLU具備引導適度稀疏的能力。

從函式圖形上看,ReLU比sigmoid更接近生物學的啟用模型。
實際測量資料:縱座標軸是神經元的放電速率(Firing Rate);橫軸是毫秒(ms)

基於生物學的數學規則化啟用模型(LIF)

(Softplus是ReLU的圓滑版,公式為:g(x)=log(1+e^x),從上面的結果看,效果比ReLU稍差)
ReLU在經歷預訓練和不經歷預訓練時的效果差不多,而其它啟用函式在不用預訓練時效果就差多了。ReLU不預訓練和sigmoid預訓練的效果差不多,甚至還更好。
相比之下,ReLU的速度非常快,而且精確度更高。
因此ReLU在深度網路中已逐漸取代sigmoid而成為主流。
ReLU導數(分段):
x <= 0時,導數為0
x > 0時,導數為1
早期多層神經網路如果用sigmoid函式或者hyperbolic tangent作為啟用函式,如果不進行pre-training的話,會因為gradient vanishing problem而無法收斂。
而預訓練的用處:規則化,防止過擬合;壓縮資料,去除冗餘;強化特徵,減小誤差;加快收斂速度。而採用ReLu則不需要進行pre-training。

實踐應用

在應用中,把除了最外層輸出用的sigmoid函式的其他所有用到sigmoid函式的地方全都改為ReLu函式,同時梯度也改為ReLu的,然後把學習速率調低。