學習筆記:ReLU的各種變形函數
- 2020 年 3 月 12 日
- 筆記
ReLU函數及其一階導數的影像如下圖所示。

在ReLU函數的基礎上,又出現了幾種變形函數。這裡我們暫且不討論這些函數作為激活函數的優勢與不足。
Leaky ReLU函數
Leaky ReLU函數的表達式如下所示。Leaky是「泄漏」的意思,不難理解,與ReLU函數相比,當x為負值時,輸出不再為0,也就是有「泄漏」。這裡a通常取值為0.01。

採用Python描述Leaky ReLU非常方便,如下圖所示。這裡用到了numpy中的maximum函數。

下圖給出了ReLU、a為0.01時的Leaky ReLU和a為0.99時的Leaky ReLU的函數影像。


PReLU函數
Parameter-ReLU,簡稱PReLU,是對Leaky ReLU的改進,PReLU的出發點是不將a 設置為0.01,而是根據數據來定,這樣就可以自適應地從數據中學習參數。
RReLU函數
Randomized ReLU,簡稱RReLU,是對Leaky ReLU的另一種改進。在訓練時,a是給定範圍內取樣的隨機變數,而測試時a變為固定值。其表達式如下所示。這裡a服從均勻分布,且滿足0≤a<1。

為了模擬RReLU的特徵,我們用Python建模,如下圖所示。這裡仍然使用上文Python描述的Lrelu,區別在於參數a服從均勻分布,且取值為大於等於0小於1的值,如程式碼第8行所示。

上述Python程式碼可獲得如下影像。這裡需要注意的是當x小於0時,每一個xji對應的aji是個隨機變數,而非固定值。

進一步對比,我們把ReLU、Leaky ReLU、PReLU和RReLU的函數影像描繪出來,如下圖所示。

Bounded ReLU函數
Bounded ReLU函數簡稱BReLU,其表達式如下所示。

n值是可以調整的,在TensorFlow中提供了BReLU-6,或是直接寫成ReLU6。採用Python描述程式碼如下圖所示,可以看到,程式碼非常簡潔。

當n為6時,BReLU也就是ReLU6的函數影像如下圖所示。

至此,我們可以看到,除了ReLU外,還存在Leaky ReLU、PReLU、RReLU和BReLU等激活函數。