神经网络中常用的几个激活函数

大家好,今天给大家介绍一下神经网络中的几个激活函数。

1. 什么是激活函数

在神经网络中,我们经常可以看到对于某一个隐藏层的节点,该节点的激活值计算一般分为两步

神经网络中常用的几个激活函数_第1张图片

2. 常用的激活函数

  在深度学习中,常用的激活函数主要有:sigmoid函数,tanh函数,ReLU函数。下面我们将一一介绍。

2.1 sigmoid函数

神经网络中常用的几个激活函数_第2张图片

神经网络中常用的几个激活函数_第3张图片

sigmoid函数作为非线性激活函数,但是其并不被经常使用,它具有以下几个缺点

神经网络中常用的几个激活函数_第4张图片

神经网络中常用的几个激活函数_第5张图片

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

2.2 tanh函数

神经网络中常用的几个激活函数_第6张图片

tanh函数在 0 附近很短一段区域内可看做线性的。由于tanh函数均值为 0 ,因此弥补了sigmoid函数均值为 0.5 的缺点。

  对于tanh函数的求导推导为:

神经网络中常用的几个激活函数_第7张图片

2.3 ReLU函数

  ReLU函数又称为修正线性单元(Rectified Linear Unit),是一种分段线性函数,其弥补了sigmoid函数以及tanh函数的梯度消失问题。ReLU函数的公式以及图形如下:

神经网络中常用的几个激活函数_第8张图片

ReLU函数的优点
   (1)在输入为正数的时候(对于大多数输入 z 空间来说),不存在梯度消失问题。

   (2) 计算速度要快很多。ReLU函数只有线性关系,不管是前向传播还是反向传播,都比sigmod和tanh要快很多。(sigmod和tanh要计算指数,计算速度会比较慢)
  ReLU函数的缺点
   (1)当输入为负时,梯度为0,会产生梯度消失问题。

2.4 Leaky ReLU函数

  这是一种对ReLU函数改进的函数,又称为PReLU函数,但其并不常用。其公式与图形如下:

神经网络中常用的几个激活函数_第9张图片

Leaky ReLU函数解决了ReLU函数在输入为负的情况下产生的梯度消失问题

3. 为什么要用非线性激活函数?

  我们以这样一个例子进行理解。
  假设下图中的隐藏层使用的为线性激活函数(恒等激活函数),也就是说 g(z)=z。

神经网络中常用的几个激活函数_第10张图片

于是我们可以得出:

神经网络中常用的几个激活函数_第11张图片

可以看出,当激活函数为线性激活函数时,输出不过是输入特征 x  的线性组合(无论多少层),而不使用神经网络也可以构建这样的线性组合。而当激活函数为非线性激活函数时,通过神经网络的不断加深,可以构建出各种有趣的函数。

引用及参考:
[1] https://mooc.study.163.com/learn/2001281002?tid=2001392029#/learn/content?type=detail&id=2001702017
[2] https://blog.csdn.net/kangyi411/article/details/78969642
[3] https://blog.csdn.net/cherrylvlei/article/details/53149381

写在最后:本文参考以上资料进行整合与总结,属于原创,文章中可能出现理解不当的地方,若有所见解或异议可在下方评论,谢谢!

转载来源:https://www.cnblogs.com/lliuye/p/9486500.html

作者:LLLiuye

成都CDA数据分析师

定期分享

数据分析的干货和岗位内推机会

神经网络中常用的几个激活函数_第12张图片

你可能感兴趣的:(神经网络,深度学习,循环神经网络,fp,支持向量机)