神经网络中各种激活函数比较

ReLU 激活函数:

ReLu使得网络可以自行引入稀疏性,在没做预训练情况下,以ReLu为激活的网络性能优于其它激活函数。 
数学表达式: $y = max(0,x)$

Sigmoid 激活函数:

sigmoid 激活函数在神经网络学习方面,可以将重点特征推向中央区,将非重点特征推向两侧区。 
数学表达式: $y = (1 + exp(-x))^{-1}$

Tanh 激活函数:

Tanh 激活函数使得输出与输入的关系能保持非线性单调上升和下降关系,比sigmoid 函数延迟了饱和期,对神经网路的容错性好。 
数学表达式:

不同激活函数的神经网络的表达能力:

  • 每层都是sigmoid,这样会带来训练饱和问题(http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf),你可以笼统认为饱和就是trap在某个区间上,该区间对提升性能毫无帮助。按照原始文章引举的说法,sigmoid的二次导等于,输入为零的时候,二次导为零(曲率为零,hessian带奇点),相当于损失函曲面上有个大平原,导致训练迟缓。
    • 然而这个理论太简单粗暴了,深层网络的损失函出现大平原不是激活函二次导为不为零这么简单的事情。
    • 为了理解这种大平原的出现,我们可以用另外一个直观粗浅地方式理解饱和,该方法笼统来说,如果参W潜在的解空间越大,训练越难找到极小。按照如下方式计算潜在解空间,假设你的输入x都被rescale到0-1之间,你计算信息熵,发现输入x=0.5附近的区间拥有最大的自由度(自由活动空间大小约等于exp(熵)),到了sigmoid中,相当于要求Wx为零。更一般来说,计算输入为高斯时,使得Wx等于k的W解空间大小,可以如下计算:是狄拉克函,对于sigmoid来说,k等于零,上面的积分无穷大(W垂直x便可,有无限解)。对于relu来说,k不等于零,积分结果为有限值,n为x的维度,同k无关。sigmoid的解空间远超relu。导致分类问题中,sigmoid在0.5附近的区间过大,每层都花大量时间搜索,训练没法提升。越深层的网络,越难以跳出,这是熵垒(俗称大平原),用于区别单纯局部极小带来的训练阻碍(坑王之王)。
    • tanh解空间也比sigmoid小,当然上面为了展示思路,理论过于简化了,没法比较tanh和relu,实际上解空间是 exp(信息熵) x(解空间大小),x可以在不是0.5处取极值,实际这样做tanh的解空间还是比relu大不少,推导太长就不写了。
  • sigmoid的好处并不是在训练上的,而是你的模型如果牵涉到许多概率问题,比如DBN,RNN,LSTM中的一些gate,你就不能将sigmoid换成relu了,这样概率表达都错了。
  • relu型的,如上所述用于缓和饱和问题。而且还有部分缓和梯度衰减的作用,不像sigmoid一样,relu没有一个梯度衰减的尾巴,强度上不封顶。使得反向传播过程只有权值的乘积带来梯度的衰减。然而,一些网络可能需要clip掉梯度,避免不封顶的爆炸梯度回传。
  • 稀疏度问题,relu的稀疏机理同dropout机理不一样,dropout等效于动态L2规范带来的稀疏,是通过打压W来实现稀疏的。relu稀疏是因为如果输入为零,输出也会为零,这样多层输入输出更加贴近于原始高维据层的稀疏度,毕竟输入信息本来就是高度稀疏的,当然这个只是形象的理解,确切更严格的理解还请高手解释。
时间: 2024-08-27 06:55:43

神经网络中各种激活函数比较的相关文章

尝试理解神经网络中的激活函数

激活函数引用:https://www.cnblogs.com/ms-uap/p/9962978.html 首先,单个神经元是长这样的: 也就是,当A=σ(Z)=Z时,不使用激活函数的话,那么,单个神经网络,输出只能是A = ΣWX + b 1. 从训练数据来理解.(参考:https://blog.csdn.net/weixin_38275649/article/details/80340538) 假如我们的神经网络,仅仅是一个单细胞的神经元 联想我们的样本,例如在做图片识别的时候,通常来说,训练

浅谈神经网络中的激活函数

???????激活函数是神经网络中一个重要的环节,本文将介绍为什么神经网络网络要利用激活函数,几种常用的激活函数(逻辑函数Sigmoid.双曲正切函数tanh.线性整流函数(ReLU),神经网络中的梯度消失问题和ReLU如何避免梯度消失. 1 用激活函数的原因 ???????如果神经网络没有进行可以提取非线性特征的卷积操作,而且该神经网络也不用激活函数,那么这个神经网络第i层输出只有Wxi+b.这样此神经网络不论有多少层,第i层的输出都是一个关于第i层输入xi的线性组合,相当于此时多层神经网络退

神经网络中的激活函数具体是什么?为什么Relu要好过与tanh和sigmoid function

为什么要引入激活函数? 如果不用激活函数(其实相当于激励函数是f(x)=x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机了. 正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是是输入的线性组合,可以逼近任意函数).最早的想法是sigmoid函数或者tanh函数,输出有界,很容易充当下一层输入.激活函数的作用是为了增加神经网络模型的非线性.否则你想

记录神经网络中一些小知识点

记录神经网络中一些小知识点 1 Caffe中的blob维度 Caffe中的blob具有4个维度,分别是num,channel,width和height: 其中我们在定义各个网络层时,常用到的一个参数numout,就是指定的channel: 比如说,维度为1*3*5*5的数据输入网络(即每次输入一张5*5大小的3通道图),经过一个stride为2,pad为1,kernel为2,numout为2的卷积层后,维度就变成了1*2*3*3: 假如输入有n个通道,计算时,caffe就会对应产生n个filte

cs231n 卷积神经网络与计算机视觉 5 神经网络基本结构 激活函数总结

1 引入 神经网络中的神经元的灵感来源于人脑,人体中大约有860亿个神经元,大约有 10^14 - 10^15 突触(synapses). 每个神经元由树突dendrites接收信号 轴突axon发射信号. 轴突又连接到其他神经单元 的树突.突触强度synaptic strengths (权重w) 可以经过学习控制输入信号的输出是抑制还是激活( excitory (positive weight) or inhibitory (negative weight)) . 如果经过细胞体汇合之后的信号

神经网络中的反向传播算法

神经网络中的方向传播算法讲得复杂难懂.简单地说明它的原理: 神经网络:输入层,隐藏层,输出层.根据线性关系,激活函数,并最终根据监督学习写出误差表达式.此时,误差函数可写成,那么权值w和它之间存在什么关系?求偏导分析之间的变化关系 不过如此.

神经网络中的参数的求解:前向和反向传播算法

神经网络最基本的知识可以参考神经网络基本知识,基本的东西说的很好了,然后这里讲一下神经网络中的参数的求解方法. 一些变量解释: 标上""的圆圈被称为偏置节点,也就是截距项. 本例神经网络有参数 ,其中 (下面的式子中用到)是第 层第 单元与第 层第 单元之间的联接参数(其实就是连接线上的权重,注意标号顺序), 是第 层第 单元的偏置项. 用 表示第 层的节点数(偏置单元不计在内) 用 表示第 层第 单元的激活值(输出值).当 时, ,也就是样本输入值的第 个特征. 用 表示第层各单元对

Batch Norm 对神经网络中的每一层进行正则化(未完成)

这个算法主要是解决了每一层中的正则化问题 其实我觉得这东西很鸡肋,因为我输入已经归一化了 然后初始的w,b也很小 每一层的输出肯定也很小 使用Batch Norm反而会加大训练时间,弱化神经网络中参数的作用 z(i)是这一层神经网络中第i个神经元,经过激活函数的输出 为了是下一层的输入比较相近,我们就需要使用Batch Norm 原文地址:https://www.cnblogs.com/shensobaolibin/p/8955701.html

浅析神经网络中一点优化知识

在我们了解过神经网络的人中,都了解神经网络一个有很常见的训练方法,BP训练算法.通过BP算法,我们可以不断的训练网络,最终使得http://hz.chinamaofa.com/huxu/12996.html网络可以无限的逼近一种我们想要拟合的函数,最终训练好的网络它既能在训练集上表现好,也能在测试集上表现不错! 那么BP算法具体是什么呢?为什么通过BP算法,我们就可以一步一步的走向最优值(即使有可能是局部最优,不是全局最优,我们也可以通过其它的方法也达到全局最优),有没有一些什么数学原理在里面支