激活函数比较

激活函数定义

在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数

激活函数作用

我们决定引入非线性函数作为激活函数,这样深层神经网络表达能力就更加强大。如果不用激活函数,每一层节点的输入都是上层输出的线性函数,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机

Sigmoid函数

数学表达式数学表达式
几何图像
导数图像:
在这里插入图片描述

Sigmoid优缺点

优点:
把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1.
缺点:
1. 容易发生梯度消失与爆炸
如果我们初始化神经网络的权值为 [0,1]之间的随机值,由反向传播算法的数学推导可知,梯度从后向前传播时,每传递一层梯度值都会减小为原来的0.25倍,如果神经网络隐层特别多,那么梯度在穿过多层后将变得非常小接近于0,即出现梯度消失现象;
当网络权值初始化为 (1,+∞)区间内的值,则会出现梯度爆炸情况
2.Sigmoid 的 output 不是0均值
导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。若x>0, f=wx+bx>0, 那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢当然了,如果按batch去训练,那么那个batch可能得到不同的信号,所以这个问题还是可以缓解一下的
3.耗时
其解析式中含有幂运算, 计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间

tanh函数

数学表达式

几何图像:
在这里插入图片描述
导数图像:
在这里插入图片描述

tanh优缺点

它解决了Sigmoid函数的不是zero-centered输出问题,然而,梯度消失和幂运算的问题仍然存在

Relu函数

数学表达式:
在这里插入图片描述
几何图像:
在这里插入图片描述
导数图像:
在这里插入图片描述

Relu函数优缺点

优点:
1.解决了gradient vanishing问题 (在正区间)
2.计算速度非常快,只需要判断输入是否大于0
3.收敛速度远快于sigmoid和tanh
缺点:
1.Relu的输出不是zero-centered
2.某些神经元可能永远不会被激活,导致相应的参数永远不能被更新
有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。

参考文章
参考文章1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值