【ReLU】Rectified Linear Units, 線性修正單元激活函數

ReLU

在神經網絡中,常用到的激活函數有sigmoid函數:

f(x)=11+ex
雙曲正切函數:
f(x)=tanh(x)
而本文要介紹的是另外一種激活函數,Rectified Linear Unit Function(ReLU, 線性激活函數)
ReLU函數可以表示爲
f(x)=max(0,x)
顯然,線性激活函數簡單地將閾值設置在零點,計算開銷大大降低,而且很多工作顯示 ReLU 有助於提升效果

sigmoid、tanh、ReLU、softplus的對比曲線如下圖所示:
sigmoid、tanh、ReLU、softplus的對比曲線

使用ReLU函數時,有幾個重要的優點和缺點:
1. [優點]和sigmoid、tanh神經元昂貴的操作(指數等)相比,ReLU可以通過簡單的零閾值矩陣進行激活,並且不受飽和的影響
2. [優點]和sigmoid、tanh函數相比,ReLU可以大大加快隨機梯度下降算法的收斂,普遍認爲原因在於其具有線性、非飽和的形式
3. [缺點]不幸的是,ReLU在訓練時是非常脆弱的,並且可能會“死”。例如,流經ReLU神經元的一個大梯度可能導致權重更新後該神經元接收到任何數據點都不會再激活。如果發生這種情況,之後通過該單位點的梯度將永遠是零。也就是說,ReLU可能會在訓練過程中不可逆地死亡,並且破壞數據流形。例如,如果學習率太高,你可能會發現,多達40%的網絡會“死”(即,在整個訓練過程中神經元都沒有激活)。而設置一個適當的學習率,可以在一定程度上避免這一問題。

ReLU還存在一些變體,如圖所示:
ReLU、Leaky ReLU、Randomized Leaky ReLU圖示

概述如下:

Noisy ReLU

在ReLU中包含高斯噪聲,便可以得到noisy ReLU:

f(x)=max(0,x+N(0,σ(x)))
改變種ReLU常被用在機器視覺任務裏的受限玻爾茲曼機(Restricted Boltzmann Machines)中

Leaky ReLU

Leaky ReLU是對於“ReLU死亡問題”的一次解決嘗試
可以表示爲:

f(x)={x,ax,if x>0otherwise

其中,a爲一個較小值,如0.01等
有研究表明採用這種形式的激活函數效果更好,但結果並不總是一致的

優勢:
1. Biological plausibility:單邊,相比於反對稱結構(antisymmetry)的tanh
2. Sparse activation:基本上隨機初始化的網絡,只有有一半隱含層是處於激活狀態,其餘都是輸出爲0
3. efficient gradient propagation:不像sigmoid那樣出現梯度消失的問題
4. efficient computation:只需比較、乘加運算。使用rectifier 作爲非線性激活函數使得深度網絡學習不需要pre-training,在大、複雜的數據上,相比於sigmoid函數等更加快速和更有效率。

Randomized Leaky ReLU

對於RReLU,訓練過程中負數部分的斜坡是在一個範圍內隨機選取的,然後在測試過程中固定。在最近的Kaggle National Data Science Bowl (NDSB) 競賽中,據悉RReLU由於其隨機的特性可以有效地減少過擬合。

Conclusion

ReLU的各種變體在一定程度上都超越了原始的ReLU,而PReLU和RReLU似乎是更好的選擇

—————————————————————————–

Web Reference

[1]Rectified Linear Unit (ReLU)
[2]修正線性單元(Rectified linear unit,ReLU)
[3][20140429] Rectified Linear Units

發佈了30 篇原創文章 · 獲贊 30 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章