神经网络中的激活函数ReLU激活函数如何用python写出来?

论文参考:&(很有趣的一篇paper)
起源:传统激活函数、脑神经元激活频率研究、稀疏激活性
传统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+e^{x})$
按照论文的说法,一开始想要使用一个指数函数(天然正数)作为激活函数来回归,但是到后期梯度实在太大,难以训练,于是加了一个log来减缓上升趋势。
加了1是为了保证非负性。同年,Charles Dugas等人在NIPS会议中又调侃了一句,Softplus可以看作是强制非负校正函数$\max(0,x)$平滑版本。
偶然的是,同是2001年,ML领域的Softplus/Rectifier激活函数与神经科学领域的提出脑神经元激活频率函数有神似的地方,这促成了新的激活函数的研究。
生物神经的稀疏激活性
在神经科学方面,除了新的激活频率函数之外,神经科学家还发现了神经元的稀疏激活性。
还是2001年,Attwell等人基于大脑能量消耗的观察学习上,推测神经元编码工作方式具有稀疏性和分布性。
2003年Lennie等人估测大脑同时被激活的神经元只有1~4%,进一步表明神经元工作的稀疏性。
从信号方面来看,即神经元同时只对输入信号的少部分选择性响应,大量信号被刻意的屏蔽了,这样可以提高学习的精度,更好更快地提取稀疏特征。
从这个角度来看,在经验规则的初始化W之后,传统的Sigmoid系函数同时近乎有一半的神经元被激活,这不符合神经科学的研究,而且会给深度网络训练带来巨大问题。
Softplus照顾到了新模型的前两点,却没有稀疏激活性。因而,校正函数$\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)$,与Softplus函数在兴奋端的差异较大(线性和非线性)。
几十年的机器学习发展中,我们形成了这样一个概念:非线性激活函数要比线性激活函数更加先进。
尤其是在布满Sigmoid函数的BP神经网络,布满径向基函数的SVM神经网络中,往往有这样的幻觉,非线性函数对非线性网络贡献巨大。
该幻觉在SVM中更加严重。核函数的形式并非完全是SVM能够处理非线性数据的主力功臣(支持向量充当着隐层角色)。
那么在深度网络中,对非线性的依赖程度就可以缩一缩。另外,在上一部分提到,稀疏特征并不需要网络具有很强的处理线性不可分机制。
综合以上两点,在深度学习模型中,使用简单、速度快的线性激活函数可能更为合适。
如图,一旦神经元与神经元之间改为线性激活,网络的非线性部分仅仅来自于神经元部分选择性激活。
2.2 Vanishing Gradient Problem
更倾向于使用线性神经激活函数的另外一个原因是,减轻梯度法训练深度网络时的Vanishing Gradient Problem。
看过BP推导的人都知道,误差从输出层反向传播算梯度时,在各层都要乘当前层的输入神经元值,激活函数的一阶导数。
即$Grad=Error\cdot Sigmoid'(x)\cdot 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 &Theano中ReLu的实现
ReLu可以直接用T.maximum(0,x)实现,用T.max(0,x)不能求导.
Part VI &ReLu训练技巧
阅读(...) 评论()深度学习基础知识(4)
在深度神经网络中,通常使用一种叫修正线性单元(Rectified linear unit,ReLU)作为神经元的激活函数。ReLU起源于神经科学的研究:2001年,Dayan、Abott从生物学角度模拟出了脑神经元接受信号更精确的激活模型,如下图:&
其中横轴是时间(ms),纵轴是神经元的放电速率(Firing Rate)。同年,Attwell等神经科学家通过研究大脑的能量消耗过程,推测神经元的工作方式具有稀疏性和分布性;2003年Lennie等神经科学家估测大脑同时被激活的神经元只有1~4%,这进一步表明了神经元的工作稀疏性。而对于ReLU函数而言,类似表现是如何体现的?其相比于其他线性函数(如purlin)和非线性函数(如sigmoid、双曲正切)又有何优势?下面请各位看官容我慢慢道来。
首先,我们来看一下ReLU激活函数的形式,如下图:&
从上图不难看出,ReLU函数其实是分段线性函数,把所有的负值都变为0,而正值不变,这种操作被成为单侧抑制。可别小看这个简单的操作,正因为有了这单侧抑制,才使得神经网络中的神经元也具有了稀疏激活性。尤其体现在深度神经网络模型(如CNN)中,当模型增加N层之后,理论上ReLU神经元的激活率将降低2的N次方倍。这里或许有童鞋会问:ReLU的函数图像为什么一定要长这样?反过来,或者朝下延伸行不行?其实还不一定要长这样。只要能起到单侧抑制的作用,无论是镜面翻转还是180度翻转,最终神经元的输出也只是相当于加上了一个常数项系数,并不影响模型的训练结果。之所以这样定,或许是为了契合生物学角度,便于我们理解吧。
那么问题来了:这种稀疏性有何作用?换句话说,我们为什么需要让神经元稀疏?不妨举栗子来说明。当看名侦探柯南的时候,我们可以根据故事情节进行思考和推理,这时用到的是我们的大脑左半球;而当看蒙面唱将时,我们可以跟着歌手一起哼唱,这时用到的则是我们的右半球。左半球侧重理性思维,而右半球侧重感性思维。也就是说,当我们在进行运算或者欣赏时,都会有一部分神经元处于激活或是抑制状态,可以说是各司其职。再比如,生病了去医院看病,检查报告里面上百项指标,但跟病情相关的通常只有那么几个。与之类似,当训练一个深度分类模型的时候,和目标相关的特征往往也就那么几个,因此通过ReLU实现稀疏后的模型能够更好地挖掘相关特征,拟合训练数据。
此外,相比于其它激活函数来说,ReLU有以下优势:对于线性函数而言,ReLU的表达能力更强,尤其体现在深度网络中;而对于非线性函数而言,ReLU由于非负区间的梯度为常数,因此不存在梯度消失问题(Vanishing Gradient Problem),使得模型的收敛速度维持在一个稳定状态。这里稍微描述一下什么是梯度消失问题:当梯度小于1时,预测值与真实值之间的误差每传播一层会衰减一次,如果在深层模型中使用sigmoid作为激活函数,这种现象尤为明显,将导致模型收敛停滞不前。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:304017次
积分:6509
积分:6509
排名:第3652名
原创:209篇
转载:1074篇
评论:37条
(10)(20)(71)(67)(85)(69)(48)(48)(40)(139)(116)(54)(38)(121)(30)(54)(35)(77)(19)(100)(43)浅谈深度学习中的激活函数 - The Activation Function in Deep Learning - This is bill的专属博客 - CSDN博客
博客专家
浅谈深度学习中的激活函数 - The Activation Function in Deep Learning
原文地址:版权声明:本文为博主原创文章,未经博主允许不得转载。激活函数的作用首先,激活函数不是真的要去激活什么。在神经网络中,激活函数的作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题。比如在下面的这个问题中:如上图(),在最简单的情况下,数据是线性可分的,只需要一条直线就已经能够对样本进行很好地分类。但如果情况变得复杂了一点呢?在上图中(),数据就变成了线性不可分的情况。在这种情况下,简单的一条直线就已经不能够对样本进行很好地分类了。于是我们尝试引入非线性的因素,对样本进行分类。在神经网络中也类似,我们需要引入一些非线性的因素,来更好地解决复杂的问题。而激活函数恰好就是那个能够帮助我们引入非线性因素的存在,使得我们的神经网络能够更好地解决较为复杂的问题。激活函数的定义及其相关概念在ICML2016的一篇论文中,作者将激活函数定义为一个几乎处处可微的 h : R → R 。在实际应用中,我们还会涉及到以下的一些概念:a.饱和当一个激活函数h(x)满足<span class="MathJax" id="MathJax-Element-1-Frame" tabindex="0" data-mathml="limn&#x2192;+&#x221E;h&#x2032;(x)=0" role="presentation" style="display: line-height: font-size: 14 text-align: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">limn→+∞h′(x)=0limn→+∞h′(x)=0时我们称之为右饱和。当一个激活函数h(x)满足<span class="MathJax" id="MathJax-Element-2-Frame" tabindex="0" data-mathml="limn&#x2192;&#x2212;&#x221E;h&#x2032;(x)=0" role="presentation" style="display: line-height: font-size: 14 text-align: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">limn→-∞h′(x)=0limn→-∞h′(x)=0时我们称之为左饱和。当一个激活函数,既满足左饱和又满足又饱和时,我们称之为饱和。b.硬饱和与软饱和对任意的<span class="MathJax" id="MathJax-Element-3-Frame" tabindex="0" data-mathml="x" role="presentation" style="display: line-height: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">xx,如果存在常数<span class="MathJax" id="MathJax-Element-4-Frame" tabindex="0" data-mathml="c" role="presentation" style="display: line-height: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">cc,当<span class="MathJax" id="MathJax-Element-5-Frame" tabindex="0" data-mathml="x&c" role="presentation" style="display: line-height: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">x&cx&c时恒有&<span class="MathJax" id="MathJax-Element-6-Frame" tabindex="0" data-mathml="h&#x2032;(x)=0" role="presentation" style="display: line-height: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">h′(x)=0h′(x)=0则称其为右硬饱和,当<span class="MathJax" id="MathJax-Element-7-Frame" tabindex="0" data-mathml="x&c" role="presentation" style="display: line-height: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">x&cx&c时恒 有<span class="MathJax" id="MathJax-Element-8-Frame" tabindex="0" data-mathml="h&#x2032;(x)=0" role="presentation" style="display: line-height: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">h′(x)=0h′(x)=0则称其为左硬饱和。若既满足左硬饱和,又满足右硬饱和,则称这种激活函数为硬饱和。但如果只有在极限状态下偏导数等于0的函数,称之为软饱和。Sigmoid函数Sigmoid函数曾被广泛地应用,但由于其自身的一些缺陷,现在很少被使用了。Sigmoid函数被定义为:<span class="MathJax" id="MathJax-Element-9-Frame" tabindex="0" data-mathml="f(x)=11+e&#x2212;x" role="presentation" style="display: line-height: font-size: 14 text-align: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">f(x)=11+e-xf(x)=11+e-x函数对应的图像是:优点:1.Sigmoid函数的输出映射在<span class="MathJax" id="MathJax-Element-10-Frame" tabindex="0" data-mathml="(0,1)" role="presentation" style="display: line-height: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">(0,1)(0,1)之间,单调连续,输出范围有限,优化稳定,可以用作输出层。2.求导容易。缺点:1.由于其软饱和性,容易产生梯度消失,导致训练出现问题。2.其输出并不是以0为中心的。tanh函数现在,比起Sigmoid函数我们通常更倾向于tanh函数。tanh函数被定义为<span class="MathJax" id="MathJax-Element-11-Frame" tabindex="0" data-mathml="tanh(x)=1&#x2212;e&#x2212;2x1+e&#x2212;2x" role="presentation" style="display: line-height: font-size: 14 text-align: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">tanh(x)=1-e-2x1+e-2xtanh(x)=1-e-2x1+e-2x函数位于[-1, 1]区间上,对应的图像是:优点:1.比Sigmoid函数收敛速度更快。2.相比Sigmoid函数,其输出以0为中心。缺点:还是没有改变Sigmoid函数的最大问题——由于饱和性产生的梯度消失。ReLUReLU是最近几年非常受欢迎的激活函数。被定义为<span class="MathJax" id="MathJax-Element-12-Frame" tabindex="0" data-mathml="y={0(x&#x2264;0)x(x&0)" role="presentation" style="display: line-height: font-size: 14 text-align: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">y={0x(x≤0)(x&0)y={0(x≤0)x(x&0)对应的图像是:但是除了ReLU本身的之外,TensorFlow还提供了一些相关的函数,比如定义为min(max(features, 0), 6)的tf.nn.relu6(features, name=None);或是CReLU,即tf.nn.crelu(features, name=None)。其中(CReLU部分可以参考)。优点:1.相比起Sigmoid和tanh,ReLU在SGD中能够快速收敛。例如在下图的实验中,在一个四层的卷积神经网络中,实线代表了ReLU,虚线代表了tanh,ReLU比起tanh更快地到达了错误率0.25处。据称,这是因为它线性、非饱和的形式。2.Sigmoid和tanh涉及了很多很expensive的操作(比如指数),ReLU可以更加简单的实现。3.有效缓解了梯度消失的问题。4.在没有无监督预训练的时候也能有较好的表现。5.提供了神经网络的稀疏表达能力。缺点:随着训练的进行,可能会出现神经元死亡,权重无法更新的情况。如果发生这种情况,那么流经神经元的梯度从这一点开始将永远是0。也就是说,ReLU神经元在训练中不可逆地死亡了。LReLU、PReLU与RReLU通常在LReLU和PReLU中,我们定义一个激活函数为<span class="MathJax" id="MathJax-Element-13-Frame" tabindex="0" data-mathml="f(yi)={yiif(yi&0)aiyiif(yi&#x2264;0)" role="presentation" style="display: line-height: font-size: 14 text-align: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">f(yi)={yiaiyiif(yi&0)if(yi≤0)f(yi)={yiif(yi&0)aiyiif(yi≤0)-LReLU当<span class="MathJax" id="MathJax-Element-14-Frame" tabindex="0" data-mathml="ai" role="presentation" style="display: line-height: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">aiai比较小而且固定的时候,我们称之为LReLU。LReLU最初的目的是为了避免梯度消失。但在一些实验中,我们发现LReLU对准确率并没有太大的影响。很多时候,当我们想要应用LReLU时,我们必须要非常小心谨慎地重复训练,选取出合适的<span class="MathJax" id="MathJax-Element-15-Frame" tabindex="0" data-mathml="a" role="presentation" style="display: line-height: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">aa,LReLU的表现出的结果才比ReLU好。因此有人提出了一种自适应地从数据中学习参数的PReLU。-PReLUPReLU是LReLU的改进,可以自适应地从数据中学习参数。PReLU具有收敛速度快、错误率低的特点。PReLU可以用于反向传播的训练,可以与其他层同时优化。在论文Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification中,作者就对比了PReLU和ReLU在ImageNet model A的训练效果。值得一提的是,在tflearn中有现成的LReLU和PReLU可以直接用。-RReLU在RReLU中,我们有<span class="MathJax" id="MathJax-Element-16-Frame" tabindex="0" data-mathml="yji={xjiif(xji&0)ajixjiif(xji&#x2264;0)" role="presentation" style="display: line-height: font-size: 14 text-align: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">yji={xjiajixjiif(xji&0)if(xji≤0)yji={xjiif(xji&0)ajixjiif(xji≤0)<span class="MathJax" id="MathJax-Element-17-Frame" tabindex="0" data-mathml="aji&#x223C;U(l,u),l&uandl,u&#x2208;[0,1)" role="presentation" style="display: line-height: font-size: 14 text-align: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">aji~U(l,u),l&uandl,u∈[0,1)aji~U(l,u),l&uandl,u∈[0,1)其中,<span class="MathJax" id="MathJax-Element-18-Frame" tabindex="0" data-mathml="aji" role="presentation" style="display: line-height: font-size: 14 word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">ajiaji是一个保持在给定范围内取样的随机变量,在测试中是固定的。RReLU在一定程度上能起到正则效果。在论文Empirical Evaluation of Rectified Activations in Convolution Network中,作者对比了RReLU、LReLU、PReLU、ReLU 在CIFAR-10、CIFAR-100、NDSB网络中的效果。ELUELU被定义为<span class="MathJax" id="MathJax-Element-19-Frame" tabindex="0" data-mathml="f(x)={a(ex&#x2212;1)if(x&0)xif(0&#x2264;x)" role="presentation" style="display: line-height: font-size: 14 text-align: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">f(x)={a(ex-1)xif(x&0)if(0≤x)f(x)={a(ex-1)if(x&0)xif(0≤x)其中<span class="MathJax" id="MathJax-Element-20-Frame" tabindex="0" data-mathml="a&0" role="presentation" style="display: line-height: font-size: 14 word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">a&0a&0。优点:1.ELU减少了正常梯度与单位自然梯度之间的差距,从而加快了学习。2.在负的限制条件下能够更有鲁棒性。ELU相关部分可以参考。Softplus与SoftsignSoftplus被定义为<span class="MathJax" id="MathJax-Element-21-Frame" tabindex="0" data-mathml="f(x)=log(ex+1)" role="presentation" style="display: line-height: font-size: 14 text-align: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">f(x)=log(ex+1)f(x)=log(ex+1)Softsign被定义为<span class="MathJax" id="MathJax-Element-22-Frame" tabindex="0" data-mathml="f(x)=x|x|+1" role="presentation" style="display: line-height: font-size: 14 text-align: word-spacing: word-wrap: white-space: float: direction: max-width: max-height: min-width: 0 min-height: 0 border: 0 padding: 0 margin: 0 position:">f(x)=x|x|+1f(x)=x|x|+1目前使用的比较少,在这里就不详细讨论了。TensorFlow里也有现成的可供使用。总结关于激活函数的选取,目前还不存在定论,实践过程中更多还是需要结合实际情况,考虑不同激活函数的优缺点综合使用。同时,也期待越来越多的新想法,改进目前存在的不足。文章部分图片或内容参考自:本文为作者的个人学习笔记,转载请先声明。如有疏漏,欢迎指出,不胜感谢。
我的热门文章
即使是一小步也想与你分享

我要回帖

更多关于 神经网络中的激活函数 的文章

 

随机推荐