学习笔记: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等激活函数。