pytorch神经网络学习笔记(1)

四种激励函数

relu

又称修正线性单元,是一种分段线性函数,弥补了sigmoid函数以及tanh函数的梯度消失问题。relu函数的公式及图形,导数公式如下图
在这里插入图片描述
特点:
1、在输入为正数的时候(对于大多数输入 zz 空间来说),不存在梯度消失问题。
2、计算速度要快很多。relu函数只有线性关系,不管是前向传播还是反向传播,都比sigmoid和tanh要快很多。(sigmoid和tanh要计算指数,计算速度会比较慢)
3、当输入为负时,梯度为0,会产生梯度消失问题
relu目前仍是最常用的激活函数,在搭建人工神经网络的时候推荐优先尝试!

sigmoid

单极性,sigmoid 是常用的非线性的激活函数,该函数是将取值为 (−∞,+∞)(−∞,+∞) 的数映射到 (0,1)之间,它的数学形式和图像如下:
在这里插入图片描述
sigmod激励函数符合实际,当输入很小时,输出接近于0;当输入很大时,输出值接近1,但是sigmoid函数作为非线性激活函数,但是其并不被经常使用,它具有以下几个缺点:
1、当 zz 值非常大或者非常小时,通过右上图我们可以看到,sigmoid函数的导数 g′(z)g′(z) 将接近 0 。这会导致权重 WW 的梯度将接近 0 ,使得梯度更新十分缓慢,即梯度消失。
2、非零中心化,也就是当输入为0时,输出不为0,,因为每一层的输出都要作为下一层的输入,而未0中心化会直接影响梯度下降 。
3、计算量比较大。
sigmoid函数可用在网络最后一层,作为输出层进行二分类,尽量不要使用在隐藏层。

tanh

双极性,该函数是将取值为 (−∞,+∞)(−∞,+∞) 的数映射到 (−1,1)(−1,1) 之间,其数学形式与图形为:
在这里插入图片描述
特点:
1、tanh函数在 0 附近很短一段区域内可看做线性的。由于tanh函数均值为 0 ,因此弥补了sigmoid函数均值为 0.5 的缺点。
2、当z为非常大或者非常小的时候,由导数推断公式可知,此时导数接近与0,会导致梯度很小,权重更新非常缓慢,即梯度消失问题。
3、幂运算问题仍然存在,计算量比较大。

softplus

和relu一样为近似生物神经激活函数,函数数学形式和图像如下:(log里面加1是为了避免非0出现)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值