一、必要性

**函数的主要作用是提供网络的非线性建模能力。如果没有**函数,那么该网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网络跟单层神经网络也是等价的。因此也可以认为,只有加入了**函数之后,深度神经网络才具备了分层的非线性映射学习能力。

二、种类

  1. sigmoid函数
    机器学习: **函数的认识
    特别注意sigmoid函数的导数求法:

    σ(x)=σ(x)(1σ(x))

    机器学习: **函数的认识
    缺点:
    (1)梯度消失。观察函数图像,当x>10或者x<10,**函数的导数接近0,在利用梯度反向传播法更新权值的时候,会发生梯度值接近0现象。
    (2)输出函数值不是零对称的。就是说Sigmoid函数的输出值恒大于0,这会导致模型训练的收敛速度变慢。举例来讲对σ(wixi+b),如果所有的xi均为正数或负数,那么对它对wi的导数总是正数或者负数,这会导致如下图红色箭头所示的阶梯式更新,这显然并非一个好的优化路径。深度学习往往需要大量时间来处理大量数据,模型的收敛速度是尤为重要的。所以,总体上来讲,训练深度学习网络尽量使用zero-centered数据 (可以经过数据预处理实现) 和zero-centered输出。
    机器学习: **函数的认识
    (3)指数运算耗费时间。

  2. tanh函数,也叫双曲正切函数

    tanh(x)=exexex+ex

    机器学习: **函数的认识
    优点:解决了zero-centered的输出问题。
    缺点:梯度消失的问题和幂运算的问题仍然存在。

三、参考文献

1,斯坦福大学 CS231n
2, http://www.cnblogs.com/willnote/p/6912798.html

相关文章:

  • 2021-08-11
  • 2022-01-05
  • 2021-11-29
  • 2021-04-26
  • 2021-10-20
  • 2022-01-14
  • 2021-04-28
  • 2021-10-31
猜你喜欢
  • 2021-05-29
  • 2021-09-11
  • 2021-04-12
  • 2021-06-30
  • 2022-12-23
  • 2021-11-04
  • 2021-11-30
相关资源
相似解决方案