神经网络激活函数的介绍

1、Sigmoid
Sigmoid函数在以往的神经网络里是很常用的,但在深度学习里用的并不那么多,它主要有以下不足:
a、容易过饱和并且造成梯度消失。从图中可以看出当Sigmoid函数的值为0或1时,而我们知道sigmoid函数的导数等于其本身乘以1-其本身,那么就导致梯度为0的情况出现,考虑到梯度传播时需要与本地的梯度相乘,那么梯度通过该门函数后几乎没有信号流出。因此,在初始化梯度时一定要很小心,否则很容易使大部分的神经元过饱和。
这里写图片描述
b、Sigmoid函数不是以0为中心的。假设数据全部为正,那么W的梯度一定是全正或者全负的,这样优化W时就会有之子型的线路,寻找最优W可能会很费时。但这个问题不如a问题严重
c、Sigmoid函数包含exp函数,计算exp函数的开销是很大的
2、tanh
tanh函数是对sigmoid函数的改进,他的特性如下:
a、依然有sigmoid函数过饱和的潜在可能,可能会造成梯度消失
b、是以原点为中心的,这是其一个优势
c、依然有指数运算
3、Relu函数
全称是 The Rectified Linear Unit,其函数表达式为f(x) = max(0, x)
这里写图片描述
a、相比于sigmoid和tanh,计算速度大大增加主要得益于其分段线性的特性
b、不是以原点为中心,和sigmoid函数一样有很大缺点
c、没有指数运算、收敛速度快
d、注意当位于负半轴时,会使网络处于‘dead’的状态(在训练过程中不会再激活)。设置合适的学习速率可以避免这个问题。工程中在初始化参数时,往往设置一个很小的bias比如0.01
4、Leaky Relu
既然Relu可能会使神经元失活,那么一种改进方法是,将Relu的负半轴加一个很小的斜率。 f(x)=1(x<0)αx+1(x>=0)x 其中 α 是一个较小的常数。但值得注意的是Leaky Relu的效果还没有持续性。其究竟能带来多少性能的提升还是一个未知数。
5、Maxout
这种方法是对Relu和Leaky Relu的概括,其表达为 max(wT1x+b1,wT2x+b2) ,其中Relu和Leaky Relu均是该方法的特例,因此该方法拥有Relu的优势,同时,没有Relu的不足如神经元失活的情况。但是缺点是相比Relu多了一些参数

  • 值得注意的是很少在实际中将这些激活函数综合使用
  • 在工程使用中,多实用Relu函数,但是需要小心调整学习速率,并且要监控失活神经元的比例。同时,可以尝试Relu和Maxout。但是不要用sigmoid,可以用tanh,但是不要期望效果会比Relu或Maxout好
  • 已经有定理证明,单隐含层的神经网络可以拟合任意曲线。既然这样,为何还要加深神经网络的层数呢?主要原因在于实际中神经网络之所以能够取得不错的效果,就是因为神经网络能够利用平滑的曲线拟合数据的分布,而且很容易去优化。但是,说深层的神经网络比浅层的神经网络效果更好,只是一种经验的观察。尽管他们的表征能力可能相当。
  • 但是,在实际中3层隐含单元的网络可能要好于2层,但是4、5、6层的效果不一定会更好。但在卷积神经网络中是一个例外。深层网络可能会对效果有很大的提升。
  • 隐含层的个数太多的话可能会引起过拟合,但是通常不会因为此来减少隐含层的个数来防止过拟合,通常的做法是使用L2 Regulation
  • 通常来说,较小的神经网络会有较少的局部最优解,但是这些局部最优解是很差的(相对于最优解来说);但较大的神经网络会有非常多的局部最优解,这些局部最优解相对最优解来说差别更小,即使陷入局部最优解,那么性能也不会差太远。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值