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

为什么要引入激活函数?

如果不用激活函数(其实相当于激励函数是f(x)=x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机了。

正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是是输入的线性组合,可以逼近任意函数)。最早的想法是sigmoid函数或者tanh函数,输出有界,很容易充当下一层输入。激活函数的作用是为了增加神经网络模型的非线性。否则你想想,没有激活函数的每层都相当于矩阵相乘,就算你叠加了若干曾之后,无非还是个矩阵相乘罢了。所以你没有非线性结构的话,根本就算不上什么神经网络。

它能够把输入的连续实值“压缩”到0和1之间,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1.

signoid函数曾经被使用的很多,不过近年来,用它的人越来越少了。主要是因为他的一些缺点:

当输入非常大或者非常小的时候,这些神经元的梯度是接近于0的,从图中可以看出梯度的趋势;

sigmoid的输出不是0均值,这回导致后一层的神经元将得到上一层输出的非0均值信号将作为输入(为什么不能是非0均值的???)

Tanh是Sigmoid的变形,与sigmoid不同的是,tanh是0均值的,因此,实际应用中,tanh会比sigmoid更好。

ReLU函数

从图中可以看出,输入负信号时,输出都是0,非负的情况下,输出就等于输入。

解决了gradient vanishing问题(在正区间)

计算速度非常快,只需要判断输入是否大于0

收敛速度远快于sigmoid和tanh

ReLU也有几个需要特别注意的问题:
1、ReLU的输出不是0均值的

2、Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生:(1)非常不幸的参数初始化,这种情况比较少见(2)learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免learning rate设置他打或者使用adagrad等自动调节learning rate的算法

为什么会引入Relu呢?

第一,采用Sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。

第二:对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导致趋于0,这种情况会造成信息丢失,从而无法完成深层网络的训练)

第三:ReLU会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。

当然现在也有一些对ReLU的改进,比如prelu。random relu等,在不同的数据集上会有一些训练速度上或者准确率上的改进

现在主流的做法,会多做一些batch normalization,尽可能保证每一层网络的输入具有相同的分布。而最新的论文中,有加入bypass connection之后,发现改变batch normalization的位置会有更好的效果。

深度学习的基本原理是基于人工神经网络,信号从一个神经元进入,经过非线性的activation function,传入到下一层神经元;再经过该层神经元的activate,继续往下传递,如此循环往复,直到输出层。正是由于这些非线性函数的反复叠加,才使得神经网络有足够的capacity来抓取复杂的pattern,在各个领域取得state-of-the-art的结果。显而易见,activation function在深度学习中非常重要,也是很活跃的研究领域之一。

原文地址:https://www.cnblogs.com/zhibei/p/9782909.html

时间: 2024-10-01 15:01:53

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

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

激活函数引用: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 激活函数: ReLu使得网络可以自行引入稀疏性,在没做预训练情况下,以ReLu为激活的网络性能优于其它激活函数. 数学表达式: $y = max(0,x)$ Sigmoid 激活函数: sigmoid 激活函数在神经网络学习方面,可以将重点特征推向中央区,将非重点特征推向两侧区. 数学表达式: $y = (1 + exp(-x))^{-1}$ Tanh 激活函数: Tanh 激活函数使得输出与输入的关系能保持非线性单调上升和下降关系,比sigmoid 函数延迟了饱和期,对神经网路的容错

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

记录神经网络中一些小知识点 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算法,我们就可以一步一步的走向最优值(即使有可能是局部最优,不是全局最优,我们也可以通过其它的方法也达到全局最优),有没有一些什么数学原理在里面支