神经网络中激活函数总结

http://blog.csdn.net/whiup/article/details/52276110

1. sigmoid激活函数

sigmoid将一个实数输入映射到[0,1]范围内,如下图(左)所示。使用sigmoid作为激活函数存在以下几个问题:

  • 梯度饱和。当函数激活值接近于0或者1时,函数的梯度接近于0。在反向传播计算梯度过程中:δ(l)=(W(l))Tδ(l+1)?f′(z(L)),每层残差接近于0,计算出的梯度也不可避免地接近于0。这样在参数微调过程中,会引起参数弥散问题,传到前几层的梯度已经非常靠近0了,参数几乎不会再更新。
  • 函数输出不是以0为中心的。我们更偏向于当激活函数的输入是0时,输出也是0的函数。

因为上面两个问题的存在,导致参数收敛速度很慢,严重影响了训练的效率。因此在设计神经网络时,很少采用sigmoid激活函数。

2. tanh激活函数

tanh函数将一个实数输入映射到[-1,1]范围内,如上图(右)所示。当输入为0时,tanh函数输出为0,符合我们对激活函数的要求。然而,tanh函数也存在梯度饱和问题,导致训练效率低下。

3.Relu激活函数

Relu激活函数(The Rectified Linear Unit)表达式为:f(x)=max(0,x)。如下图(左)所示:

相比sigmoid和tanh函数,Relu激活函数的优点在于:

  • 梯度不饱和。梯度计算公式为:1{x>0}。因此在反向传播过程中,减轻了梯度弥散的问题,神经网络前几层的参数也可以很快的更新。
  • 计算速度快。正向传播过程中,sigmoid和tanh函数计算激活值时需要计算指数,而Relu函数仅需要设置阈值。如果x<0,f(x)=0,如果x>0,f(x)=x。加快了正向传播的计算速度。

因此,Relu激活函数可以极大地加快收敛速度,相比tanh函数,收敛速度可以加快6倍(如上图(右)所示)。

时间: 2024-10-23 19:46:58

神经网络中激活函数总结的相关文章

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

激活函数引用: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的线性组合,相当于此时多层神经网络退

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

记录神经网络中一些小知识点 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

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

神经网络中的方向传播算法讲得复杂难懂.简单地说明它的原理: 神经网络:输入层,隐藏层,输出层.根据线性关系,激活函数,并最终根据监督学习写出误差表达式.此时,误差函数可写成,那么权值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算法,我们就可以一步一步的走向最优值(即使有可能是局部最优,不是全局最优,我们也可以通过其它的方法也达到全局最优),有没有一些什么数学原理在里面支

神经网络中的权值初始化方法

1,概述 神经网络中的权值初始化方法有很多,但是这些方法的设计也是遵循一些逻辑的,并且也有自己的适用场景.首先我们假定输入的每个特征是服从均值为0,方差为1的分布(一般输入到神经网络的数据都是要做归一化的,就是为了达到这个条件). 为了使网络中的信息更好的传递,每一层的特征的方差应该尽可能相等,如果保证这个特征的方差是相等的呢.我们可以从初始化的权重值入手. 首先来做一个公式推导: $var(s) = var(\sum_i^n w_i x_i)$ $var(s) = \sum_i^n var(w

浅谈神经网络中的bias

1.什么是bias? 偏置单元(bias unit),在有些资料里也称为偏置项(bias term)或者截距项(intercept term),它其实就是函数的截距,与线性方程 y=wx+b 中的 b 的意义是一致的.在 y=wx+b中,b表示函数在y轴上的截距,控制着函数偏离原点的距离,其实在神经网络中的偏置单元也是类似的作用. 因此,神经网络的参数也可以表示为:(W, b),其中W表示参数矩阵,b表示偏置项或截距项. 2.bias的计算方式? 神经网络结构中对偏置单元的计算处理方式有两种,