前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习笔记:ReLU的各种变形函数

学习笔记:ReLU的各种变形函数

作者头像
Lauren的FPGA
发布2020-03-12 11:43:19
4.3K0
发布2020-03-12 11:43:19
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA
ReLU函数代表的的是“修正线性单元”,即Rectified Linear Unit。其表达式如下所示。可以看到ReLU函数是一个分段线性函数,当x为负值时,输出均为0;当x为正值时,输出保持不变。这种单侧抑制的操作,使神经网络中的神经元具备了稀疏激活性。此外,从运算角度看,因为只用判断输入是否大于0,所以,计算速度是非常快的。

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等激活函数。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lauren的FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档