Relu-Rectified linear unit激活函数

ReLu(Rectified Linear Units)激活函数 论文参考:Deep Sparse Rectifier Neural Networks (很有趣的一篇paper) 起源:传统激活函数、脑神经元激活频率研究、稀疏激活性 传统Sigmoid系激活函数 传统神经网络中最常用的两个激活函数,Sigmoid系(Logistic-Sigmoid、Tanh-Sigmoid)被视为神经网络的核心所在。 从数学上来看,非线性的Sigmoid函数对中央区... 阅读详情

传统Sigmoid系激活函数

传统神经网络中最常用的两个激活函数,Sigmoid系(Logistic-Sigmoid、Tanh-Sigmoid)被视为神经网络的核心所在。

从数学上来看,非线性的Sigmoid函数对中央区的信号增益较大,对两侧区的信号增益小,在信号的特征空间映射上,有很好的效果。

从神经科学上来看,中央区酷似神经元的兴奋态,两侧区酷似神经元的抑制态,因而在神经网络学习方面,可以将重点特征推向中央区,将非重点特征推向两侧区。

无论是哪种解释,看起来都比早期的线性激活函数(y=x),阶跃激活函数(-1/1,0/1)高明了不少。

近似生物神经激活函数:Softplus&ReLu 

2001年,神经科学家Dayan、Abott从生物学角度,模拟出了脑神经元接受信号更精确的激活模型,该模型如左图所示:


这个模型对比Sigmoid系主要变化有三点:①单侧抑制 ②相对宽阔的兴奋边界 ③稀疏激活性(重点,可以看到红框里前端状态完全没有激活)

同年,Charles Dugas等人在做正数回归预测论文中偶然使用了Softplus函数,Softplus函数是Logistic-Sigmoid函数原函数。

  Softplus(x)=log(1+ex) Softplus(x)=log(1+ex)

按照论文的说法,一开始想要使用一个指数函数(天然正数)作为激活函数来回归,但是到后期梯度实在太大,难以训练,于是加了一个log来减缓上升趋势。

加了1是为了保证非负性。同年,Charles Dugas等人在NIPS会议论文中又调侃了一句,Softplus可以看作是强制非负校正函数 max(0,x) max(0,x)平滑版本。

偶然的是,同是2001年,ML领域的Softplus/Rectifier激活函数与神经科学领域的提出脑神经元激活频率函数有神似的地方,这促成了新的激活函数的研究。

有几种变体:

noisy ReLUs

可将其包含Gaussian noise得到noisy ReLUs, f(x)=max(0,x+N(0,σ(x))) ,常用来在机器视觉任务里的restricted Boltzmann machines中。

leaky ReLUs

允许小的非零的gradient ,当unit没有被激活时。 

f(x)={x0.01xif x>0otherwise

生物神经的稀疏激活性

在神经科学方面,除了新的激活频率函数之外,神经科学家还发现了神经元的稀疏激活性。

还是2001年,Attwell等人基于大脑能量消耗的观察学习上,推测神经元编码工作方式具有稀疏性和分布性。

2003年Lennie等人估测大脑同时被激活的神经元只有1~4%,进一步表明神经元工作的稀疏性。

从信号方面来看,即神经元同时只对输入信号的少部分选择性响应,大量信号被刻意的屏蔽了,这样可以提高学习的精度,更好更快地提取稀疏特征。

从这个角度来看,在经验规则的初始化W之后,传统的Sigmoid系函数同时近乎有一半的神经元被激活,这不符合神经科学的研究,而且会给深度网络训练带来巨大问题。

Softplus照顾到了新模型的前两点,却没有稀疏激活性。因而,校正函数 max(0,x) max(0,x)成了近似符合该模型的最大赢家。

 

Part I:关于稀疏性的观点

Machine Learning中的颠覆性研究是稀疏特征,基于数据的稀疏特征研究上,派生了Deep Learning这一分支。

稀疏性概念最早由Olshausen、Field在1997年对信号数据稀疏编码的研究中引入,并最早在卷积神经网络中得以大施拳脚。

近年来,稀疏性研究不仅在计算神经科学、机器学习领域活跃,甚至信号处理、统计学也在借鉴。

总结起来稀疏性大概有以下三方面的贡献:

1.1 信息解离

当前,深度学习一个明确的目标是从数据变量中解离出关键因子。原始数据(以自然数据为主)中通常缠绕着高度密集的特征。原因

是这些特征向量是相互关联的,一个小小的关键因子可能牵扰着一堆特征,有点像蝴蝶效应,牵一发而动全身。

基于数学原理的传统机器学习手段在解离这些关联特征方面具有致命弱点。

然而,如果能够解开特征间缠绕的复杂关系,转换为稀疏特征,那么特征就有了鲁棒性(去掉了无关的噪声)。

1.2 线性可分性

稀疏特征有更大可能线性可分,或者对非线性映射机制有更小的依赖。因为稀疏特征处于高维的特征空间上(被自动映射了)

从流形学习观点来看(参见降噪自动编码器),稀疏特征被移到了一个较为纯净的低维流形面上。

线性可分性亦可参照天然稀疏的文本型数据,即便没有隐层结构,仍然可以被分离的很好。

1.3 稠密分布但是稀疏

稠密缠绕分布着的特征是信息最富集的特征,从潜在性角度,往往比局部少数点携带的特征成倍的有效。

而稀疏特征,正是从稠密缠绕区解离出来的,潜在价值巨大。

1.4 稀疏性激活函数的贡献的作用:

不同的输入可能包含着大小不同关键特征,使用大小可变的数据结构去做容器,则更加灵活。

假如神经元激活具有稀疏性,那么不同激活路径上:不同数量(选择性不激活)、不同功能(分布式激活),

两种可优化的结构生成的激活路径,可以更好地从有效的数据的维度上,学习到相对稀疏的特征,起到自动化解离效果。

 

Part II:基于稀疏性的校正激活函数

2.1 非饱和线性端

撇开稀疏激活不谈,校正激活函数 max(0,x) max(0,x),与Softplus函数在兴奋端的差异较大(线性和非线性)。

几十年的机器学习发展中,我们形成了这样一个概念:非线性激活函数要比线性激活函数更加先进。

尤其是在布满Sigmoid函数的BP神经网络,布满径向基函数的SVM神经网络中,往往有这样的幻觉,非线性函数对非线性网络贡献巨大。

该幻觉在SVM中更加严重。核函数的形式并非完全是SVM能够处理非线性数据的主力功臣(支持向量充当着隐层角色)。

那么在深度网络中,对非线性的依赖程度就可以缩一缩。另外,在上一部分提到,稀疏特征并不需要网络具有很强的处理线性不可分机制。

综合以上两点,在深度学习模型中,使用简单、速度快的线性激活函数可能更为合适。

如图,一旦神经元与神经元之间改为线性激活,网络的非线性部分仅仅来自于神经元部分选择性激活。

2.2 Vanishing Gradient Problem

更倾向于使用线性神经激活函数的另外一个原因是,减轻梯度法训练深度网络时的Vanishing Gradient Problem。

看过BP推导的人都知道,误差从输出层反向传播算梯度时,在各层都要乘当前层的输入神经元值,激活函数的一阶导数。

Grad=ErrorSigmoid(x)x Grad=Error⋅Sigmoid′(x)⋅x。使用双端饱和(即值域被限制)Sigmoid系函数会有两个问题:

①Sigmoid'(x)∈(0,1)  导数缩放

②x∈(0,1)或x∈(-1,1)  饱和值缩放

这样,经过每一层时,Error都是成倍的衰减,一旦进行递推式的多层的反向传播,梯度就会不停的衰减,消失,使得网络学习变慢。

而校正激活函数的梯度是1,且只有一端饱和,梯度很好的在反向传播中流动,训练速度得到了很大的提高。

Softplus函数则稍微慢点,Softplus'(x)=Sigmoid(x)∈(0,1) ,但是也是单端饱和,因而速度仍然会比Sigmoid系函数快。

 

Part III 潜在问题

强制引入稀疏零的合理性?

诚然,稀疏性有很多优势。但是,过分的强制稀疏处理,会减少模型的有效容量。即特征屏蔽太多,导致模型无法学习到有效特征。

论文中对稀疏性的引入度做了实验,理想稀疏性(强制置0)比率是70%~85%。超过85%,网络就容量就成了问题,导致错误率极高。

 

对比大脑工作的95%稀疏性来看,现有的计算神经网络和生物神经网络还是有很大差距的。

庆幸的是,ReLu只有负值才会被稀疏掉,即引入的稀疏性是可以训练调节的,是动态变化的。

只要进行梯度训练,网络可以向误差减少的方向,自动调控稀疏比率,保证激活链上存在着合理数量的非零值。

 

Part IV ReLu的贡献

4.1 缩小做和不做非监督预训练的代沟

ReLu的使用,使得网络可以自行引入稀疏性。这一做法,等效于无监督学习的预训练。

当然,效果肯定没预训练好。论文中给出的数据显示,没做预训练情况下,ReLu激活网络遥遥领先其它激活函数。

甚至出现了比普通激活函数预训练后更好的奇葩情况。当然,在预训练后,ReLu仍然有提升空间。

从这一层面来说,ReLu缩小了非监督学习和监督学习之间的代沟。当然,还有更快的训练速度。

4.2 更快的特征学习

在MNIST+LeNet4中,ReLu+Tanh的组合在epoch 50左右就能把验证集错误率降到1.05%

但是,全Tanh在epoch 150时,还是1.37%,这个结果ReLu+Tanh在epoch 17时就能达到了。

该图来自AlexNet的论文对ReLu和普通Sigmoid系函数做的对比测试,可以看到,ReLu的使用,使得学习周期

大大缩短。综合速率和效率,DL中大部分激活函数应该选择ReLu。

 

Part V  Tensorlfow中ReLu的实现

ReLu可以直接用tf.nn.relu实现.


Tensorflow2.0 激活函数(Relu Sigmoid Tanh)及其梯度 什么是激活函数 激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了,加入(非线性)激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。 Sigmoid激活函数 sig 阅读详情

相关推荐

ReLU激活函数的定义

ReLU函数的数学表达式非常简单: ReLU(x)=max(0,x)当输入 x 为正数时,输出就是 x 本身。当输入 x 为负数时,输出为 0。ReLU激活函数通过引入非线性、缓解梯度消失问题、加速训练和稀疏激活,显著提升了神经网络的性能。尽管它存在一些缺点,如死亡ReLU问题和输出非零中心化,但通过使用其变体(如Leaky ReLU、PReLU、ELU和SELU),可以有效地解决这些问题。在实际应用中,ReLU及其变体被广泛应用于各种深度学习模型中,尤其是在卷积神经网络(CNN)中。当然可以!

m0_68894275的博客 2224

ReLU 修正线性单元激活函数 ( Rectified Linear Unit)

ReLU 是一种常用的激活函数,全称为 Rectified Linear Unit。它在深度学习中被广泛应用,可以用来加速神经网络的训练和提高模型的表现。fxmax⁡0xfxmax0x其中,xxx是输入,fxf(x)fx是输出。ReLU函数的图像是一条斜率为1的直线,当x0x>0x0时,输出fxxf(x) = xfxx,而当x≤0x\leq 0x≤0时,输出fx0f(x) = 0fx0。

AI天才研究院 1万+

激活函数--1.ReLu()函数

ReLU()函数

xianghu_5的博客 3402

ReLU 激活函数

相对于某些传统的激活函数(如Sigmoid或Tanh),ReLU有助于缓解梯度消失问题,因为它的梯度在正区间为1,这有助于更好地传播梯度。小于等于零时,输出为零。这意味着只有大于零的输入才会有非零输出,因此它在激活神经元时具有一定的稀疏性,有助于减少神经元的共同激活。:ReLU是一种非线性激活函数,能够引入非线性因素到神经网络中,使其能够学习和表示更复杂的函数。:ReLU激活函数非常简单,计算高效,因为它只涉及一个简单的阈值比较和最大值操作。大于零时,ReLU的输出是。

danger2的博客 4784

神经网络 - 激活函数ReLU 函数)

ReLURectified Linear Unit,修正线性单元)是一种广泛应用于深度学习中的激活函数。其定义为:f(x) = max(0, x),即当输入大于0时,输出为输入值;当输入小于或等于0时,输出为0。然而,ReLU也存在一些局限性,例如在训练过程中,某些神经元可能会因为始终输出0而“死亡”,即所谓的“神经元死亡”问题。为此,研究者提出了Leaky ReLU、Parametric ReLU等改进版本,以缓解这一问题。

分享技术人生的学习笔记和过往心得,与志同道合者共同进步 2万+

激活函数ReLURectified Linear Unit

之一,通常用于卷积神经网络(CNN)和深层神经网络中。ReLU通过将输入值的负数部分置为0,而保持正数部分不变,引入非线性特征。与传统的Sigmoid或Tanh激活函数相比,ReLU的计算更为简单,且能有效缓解梯度消深度失问题。ReLU函数定义如下:ReLU的输出不具有上限(理论上可趋向正无穷大),但具有下限(即输出不会小于0),使得ReLU具有稀疏性和非线性特性。

Naomi521的博客 2526

ReLURectified Linear Unit)和Sigmoid激活函数

在实际使用中,ReLU常用于隐藏层,而Sigmoid常用于输出层(用于二分类任务)。随着研究的进展,有一些变体,如Leaky ReLU、Parametric ReLU、ELU等,旨在改进激活函数的性能。Sigmoid函数将输入映射到(0,1)之间的范围,常用于二分类问题。然而,Sigmoid函数在输入远离零时梯度接近零,可能导致梯度消失问题,尤其在深度网络中。ReLU是一种简单而有效的激活函数ReLU在许多深度学习模型中被广泛使用,因为它在梯度下降中的计算上相对简单,且有效防止了梯度消失问题。

qq_35831906的博客 2357

yolo检测中的激活函数19:ReLU激活函数 (Rectified Linear Unit)

摘要: ReLURectified Linear Unit)是深度神经网络中广泛使用的激活函数,其核心思想是通过分段线性设计(负值置零,正值保留)解决梯度消失问题,显著提升训练效率。相比Sigmoid和Tanh,ReLU计算简单(快约6倍)、梯度稳定(正区间梯度为1),且能诱导稀疏激活(约50%神经元输出为0)。现代YOLO等目标检测模型常采用其变体(如Leaky ReLU、SiLU)以平衡精度与速度,例如SiLU在COCO数据集上可提升mAP约1-1.5%。代码实现上,ReLU可通过torch.max或

xiaobaiwsc的博客 216

机器学习中的数学——激活函数(三):ReLURectified Linear Unit)函数

ReLUxmax⁡0xx如果x≥00如果x0x & \text{如果 } x \geq 0, \\0 & \text{如果 } x < 0ReLUxmax0xx0​如果x≥0如果x0​。

加油!奥力给 1314

【PyTorch】torch.nn.functional.relu() 函数:计算 ReLURectified Linear Unit激活函数

torch.nn.functional.relu是PyTorch中用于计算ReLURectified Linear Unit激活函数的函数,用于引入非线性,常用于深度神经网络(DNN)、CNN、RNN等。torch.nn.functional.relu(x)计算ReLU,将负值置0,正值保持不变。inplace=True节省内存,但可能影响梯度计算。用于CNN、MLP、RNN等深度学习任务。可用nn.ReLU()在Sequential中定义激活层。

彬彬侠的博客 1223

神经网络中的ReLU激活函数——(Rectified Linear Unit)线性整流函数

理解:https://www.cnblogs.com/lliuye/p/9486500.html 延伸:https://www.cnblogs.com/neopenx/p/4453161.html

weixin_39107928的博客 3578

【深度学习|学习笔记】详述为什么在神经网络中常用ReLURectified Linear Unit)作为激活函数

【深度学习|学习笔记】详述为什么在神经网络中常用ReLURectified Linear Unit)作为激活函数

2401_89898861的博客 1082

ReLu激活函数

**概述:**ReLU函数的计算是在卷积之后进行的,因此它与tanh函数和sigmoid函数一样,同属于非线性激活函数ReLU函数的倒数在正数部分是恒等于1的,因此在深度网络中使用relu激活函数就不会导致梯度小时和爆炸的问题。并且,ReLU函数计算速度快,加快了网络的训练。不过,如果梯度过大,导致很多负数,由于负数部分值为0,这些神经元将无法激活(可通过设置较小学习率来解决)。 1.ReLu:...

lucky_kai的博客 1万+

深度学习论文笔记(ReLU):Deep Sparse Rectifier Neural Networks

文章目录主要工作人工神经网络与生物神经网络的区别稀疏性带来的优势 主要工作 提出了ReLU激活函数ReLU激活函数的表现能力比tanh激活函数的更加好,训练完毕的神经网络具有一定的稀疏性 人工神经网络与生物神经网络有一定的相似性,例如CNN与生物视觉神经处理数据的形式往往相似 人工神经网络与生物神经网络的区别 一、大脑神经元通过稀疏且分布的方式编辑信息。什么是稀疏与分布?我的理解是,只有少部分...

菜到怀疑人生的博客 1万+

激活函数(ReLU, Swish, Maxout)

神经网络中使用激活函数来加入非线性因素,提高模型的表达能力。 ReLU(Rectified Linear Unit,修正线性单元) 形式如下: \[ \begin{equation} f(x)= \begin{cases} 0, & {x\leq 0} \\\\ x, & {x\gt 0} \end{cases} \end{equation} \] ReLU公式近似推导::...

weixin_30950607的博客 3271

深度学习激活函数论文总结

深度学习激活函数论文阅读笔记

qq_40905284的博客 2422

ReLU——Deep Sparse Rectifier Neural Networks

1. 摘要 ReLU 相比 Tanh 能产生相同或者更好的性能,而且能产生真零的稀疏表示,非常适合自然就稀疏的数据。 采用 ReLU 后,在大量的有标签数据下,有没有无监督预训练模型取得的最好效果是一样的,这可以被看做是训练深层有监督网络的一个新的里程碑。 2. 背景 2.1. 神经元科学的观察 对脑能量消耗的研究表明,神经元以稀疏和分布的方式编码信息,同时活跃的神经元的百分比估计在 1%...

seniusen的博客 4820

激活函数ReLU函数

0 前言 激活函数的引入是为了增加神经网络模型的非线性,没有激活函数每层就相当于矩阵相乘。每一层输出都是上层的输入的线性函数,无论神经网络多少层,输出都是输入的线性组合,就是最原始的感知机 加入激活函数,给神经元引入非线性因素,神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。 1 激活函数ReLU函数 ReLU函数是目前比较火的一个激活函数,函数公式:,函...

tian_panda的博客 9万+
上一篇: ORB-SLAM2:基于可识别特征的自主导航与地图构建
下一篇: 安装 ROS Qt Creator Plugin's 错误记录
刘二毛
博客等级 码龄16年 371粉丝 81原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值