神经网络中的激活函数

为什么要引入激活函数

如果不使用非线性的激活函数,无论叠加多少层,最终的输出依然只是输入的线性组合。
引入非线性的激活函数,使得神经网络可以逼近任意函数。
TensorFlow 中有如下激活函数
它们定义在 tensorflow-1.1.0/tensorflow/python/ops/nn.py 文件中,
这里包括平滑非线性的激活函数,如:

 sigmoid、tanh、elu、softplus 和 softsign

也包括连续但不是处处可微的函数 :

 relu、relu6、crelu 和 relu_x,

以及随机正则化函数dropout:
tensorflow中各激活函数的为:

tf.nn.relu()
tf.nn.sigmoid()
tf.nn.tanh()
tf.nn.elu()
tf.nn.bias_add()
tf.nn.crelu()
tf.nn.relu6()
tf.nn.softplus()
tf.nn.softsign()
tf.nn.dropout() # 防止过拟合,用来舍弃某些神经元
常用的激活函数

在这里插入图片描述
sigmoid函数

在这里插入图片描述
sigmoid函数,该函数是将取值为 (−∞ ,+∞)的数映射到 (0,1)(0,1) 之间。sigmoid函数的公式以及图形如下:
在这里插入图片描述

求导推导为:

在这里插入图片描述
sigmoid函数作为非线性激活函数,但是其并不被经常使用,它具有以下几个缺点:

  1. 当 z 值非常大或者非常小时,通过上图我们可以看到,sigmoid函数的导数 g′(z) 将接近 0。这会导致权重 W 的梯度将接近 0

  2. 函数的输出不是以0为均值,将不便于下层的计算,具体可参考网页中的课程。sigmoid函数可用在网络最后一层,作为输出层进行二分类,尽量不要使用在隐藏层。

     y_sigmoid = sess.run(tf.nn.sigmoid(x_vals))
    

tanh双曲正切函数
在这里插入图片描述
tanh函数相较于sigmoid函数要常见一些,该函数是将取值为 (−∞,+∞)(−∞,+∞) 的数映射到 (−1,1)(−1,1) 之间
在这里插入图片描述
tanh函数在 0 附近很短一段区域内可看做线性的。由于tanh函数均值为 0,因此弥补了sigmoid函数均值为 0的缺点
tanh的求导公式为:
在这里插入图片描述
tanh函数的缺点同sigmoid函数的第一个缺点一样,当 z 很大或很小时,g′(z) 接近于 0 ,会导致梯度很小,权重更新非常缓慢,即梯度消失问题。
经验表明,在隐藏层中使用tanh函数的效果是优于sigmoid函数的,因为其输出更接近零均值。这会使得下一层的学习更加简单。

y_tanh = sess.run(tf.nn.tanh(x_vals))

ReLU修正线性单元

在这里插入图片描述
ReLU函数又称为修正线性单元(Rectified Linear Unit),是一种分段线性函数,其弥补了sigmoid函数以及tanh函数的梯度消失问题。
在这里插入图片描述
求导公式为:
在这里插入图片描述
ReLU函数的优点:

  1. 在输入为正数的时候(对于大多数输入 z空间来说),不存在梯度消失问题。
  2. 计算速度要快很多。ReLU函数只有线性关系,不管是前向传播还是反向传播,都比sigmod和tanh要快很多。(sigmod和tanh要计算指数,计算速度会比较慢)
  3. Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。

ReLU函数的缺点:
   (1)当输入为负时,梯度为0,会产生梯度消失问题。
(2)学习率设计得过大会造成梯度为0,导致神经元死亡,并且是不可逆的。
在零点的导数不存在,在实际使用中,z不会恰好为0,一般为一个很小的浮点数,这时导数取0或1都可以。
ReLU易于优化。只要出现激活状态,导数都能保持较大。梯度不仅大而且一致。二阶导数几乎处处为0,并且在ReLU处于激活状态时,一阶导数处处为1。
通常将偏置b设置成一个小的正值,如0.1。使得其对训练集中大多数输入呈现激活状态,并且允许导数通过。
ReLU是最常用的激活函数。

	y_relu = sess.run(tf.nn.relu(x_vals))

Leaky ReLU
在这里插入图片描述
这是一种对ReLU函数改进的函数,又称为PReLU函数,但其并不常用。在这里插入图片描述
其中 a 取值在 (0,1) 之间。
  Leaky ReLU函数的导数为:
在这里插入图片描述
leakyrelu的优点

  1. 相比于sigmoid等,计算量小,
  2. 相比于sigmoid,不容易出现梯度消失情况,能加速网络训练速度
  3. 使得一些神经元输出为0,增加稀疏性,防止过拟合。

ELU

定义如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ELU也是为解决ReLU存在的问题而提出,显然,ELU有ReLU的基本所有优点,以及:
不会有Deal ReLU问题
输出的均值接近0,zero-centered,它的一个小问题在于计算量稍大。类似于Leaky ReLU,理论上虽然好于ReLU,但在实际使用中目前并没有好的证据ELU总是优于ReLU。

优点:
  (1)ELU减少了正常梯度与单位自然梯度之间的差距,从而加快了学习。
  (2)在负的限制条件下能够更有鲁棒性。
网址深度学习之激活函数的python实现方式

其他一些常用的激活函数如下:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值