2.3-简单激活函数分析

参考视频:2.3-激活函数_哔哩哔哩_bilibili

参考笔记:https://github.com/dxc19951001/Study_TF2.0/blob/master/tensorflow2.md 

在神经网络中,如果不对上一层结点的输出做非线性转换的话,再深的网络也是线性模型,只能把输入线性组合再输出,不能学习到复杂的映射关系,因此需要使用激活函数这个非线性函数做转换。引入非线性转换后,神经网络的表达能力大大提升,使其能够逼近任何复杂的函数关系,这是基于万维空间中任何函数都可以由足够深的神经网络逼近的通用逼近定理的思想。

激活函数:

1,tf.nn.sigmoid(x)

sigmoid函数图像

sigmoid导数图像

目前使用sigmoid函数为激活函数的神经网络已经很少了

特点

(1)易造成梯度消失

​ 深层神经网络更新参数时,需要从输入层到输出层,逐层进行链式求导,而sigmoid函数的导数输出为[0,0.25]间的小数,链式求导需要多层导数连续相乘,这样会出现多个[0,0.25]间的小数连续相乘,从而造成结果趋于0,产生梯度消失,使得参数无法继续更新。

(2)输出非0均值,收敛慢

​ 希望输入每层神经网络的特征是以0为均值的小数值,但sigmoid函数激活后的数据都时整数,使得收敛变慢。

(3)幂运算复杂,训练时间长

​ sigmoid函数存在幂运算,计算复杂度大。

2,tf.math.tanh(x)

特点

(1)输出是0均值

(2)易造成梯度消失

(3)幂运算复杂,训练时间长

3,tf.nn.relu(x)

优点:

  1. 解决了梯度消失问题(在正区间)
  2. 只 需判断输入是否大于0,计算速度快
  3. 收敛速度远快于sigmoid和tanh

缺点:

  1. 输出非0均值,收敛慢
  2. Dead ReIU问题:某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。

4,tf.nn.leaky_relu(x) 

理论上来讲,Leaky Relu有Relu的所有优点,外加不会有Dead Relu问题,但是在实际操作当中,并没有完全证明Leaky Relu总是好于Relu。

总结

  • 首选relu激活函数;
  • 学习率设置较小值;
  • 输入特征标准化,即让输入特征满足以0为均值,1为标准差的正态分布;
  • 初始参数中心化,即让随机生成的参数满足以0为均值,为标准差的正态分布。
  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值