激活函数ReLU、Leaky ReLU、PReLU和RReLU

本文深入探讨了激活函数在深度学习中的作用,对比了饱和与非饱和激活函数的特点,详细解析了ReLU及其变体(如LeakyReLU、PReLU、RReLU和ELUs)的工作原理与优势,并介绍了在Tensorflow中实现PReLU的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://i.ifeng.com/lady/vnzq/news?m=1&aid=124686188&mid=2EjJF3&all=1&p=2. 关注这个问题是因为在原生的Tensorflow中,是没有PRelu的,只在Tensorflow的高级API上有,比如Keras, TFLearn等.

“激活函数”能分成两类——“饱和激活函数”和“非饱和激活函数”。
在这里插入图片描述

sigmoid和tanh是“饱和激活函数”而ReLU及其变体则是“非饱和激活函数”。使用“非饱和激活函数”的优势在于两点:

1.首先,“非饱和激活函数”能解决所谓的“梯度消失”问题。
2.其次,它能加快收敛速度。

Sigmoid函数需要一个实值输入压缩至[0,1]的范围
σ(x) = 1 / (1 + exp(−x))
tanh函数需要讲一个实值输入压缩至 [-1, 1]的范围
tanh(x) = 2σ(2x) − 1

ReLU

ReLU函数代表的的是“修正线性单元”,它是带有卷积图像的输入x的最大函数(x,o)。ReLU函数将矩阵x内所有负值都设为零,其余的值不变。ReLU函数的计算是在卷积之后进行的,因此它与tanh函数和sigmoid函数一样,同属于“非线性激活函数”。这一内容是由Hinton首次提出的。

ELUs

ELUs是“指数线性单元”,它试图将激活函数的平均值接近零,从而加快学习的速度。同时,它还能通过正值的标识来避免梯度消失的问题。根据一些研究,ELUs分类精确度是高于ReLUs的。下面是关于ELU细节信息的详细介绍:
在这里插入图片描述

Leaky ReLUs

ReLU是将所有的负值都设为零,相反,Leaky ReLU是给所有负值赋予一个非零斜率。Leaky ReLU激活函数是在声学模型(2013)中首次提出的。以数学的方式我们可以表示为:
在这里插入图片描述

参数化修正线性单元(PReLU)

PReLU可以看作是Leaky ReLU的一个变体。在PReLU中,负值部分的斜率是根据数据来定的,而非预先定义的。作者称,在ImageNet分类(2015,Russakovsky等)上,PReLU是超越人类分类水平的关键所在。

随机纠正线性单元(RReLU)

“随机纠正线性单元”RReLU也是Leaky ReLU的一个变体。在RReLU中,负值的斜率在训练中是随机的,在之后的测试中就变成了固定的了。RReLU的亮点在于,在训练环节中,aji是从一个均匀的分布U(I,u)中随机抽取的数值。形式上来说,我们能得到以下结果:
在这里插入图片描述


总结

下图是ReLU、Leaky ReLU、PReLU和RReLU的比较:

在这里插入图片描述

PReLU中的ai是根据数据变化的;

Leaky ReLU中的ai是固定的;

RReLU中的aji是一个在一个给定的范围内随机抽取的值,这个值在测试环节就会固定下来。

Tensorflow中如何定义PRelu?

这个内容源于一个问题,当我从mxnet的代码迁移到tensorflow上来的时候,发现PRelu在原生的tensorflow中不存在.这个时候看到一些参考资料,有人是使用TensorLayer的tl.layers.PReluLayer来替代.

下面贴出一个哥们在stackoverflow上问的问题和别人的回复,总结于此:

https://stackoverflow.com/questions/39975676/how-to-implement-prelu-activation-in-tensorflow

Q: 如何在Tensorflow中实现PReLu?
在这里插入图片描述
A: 提问者自己的定义, 注意,这里(_x - abs(_x)) * 0.5 为负值对应的部分
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值