激活函数小结

1.首先为什么要有激活函数 

   若网络中不用激活函数,那么每一层的输出都是输入的线性组合。无论神经网络有多少层,网络的输出都是输入的线性组合,这种网络就是原始的感知机。若网络没有激活函数,则每层就相当于矩阵相乘,深层神经网络,无非是多矩阵相乘。激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。网络使用非线性激活函数后,可以增加神经网络模型的非线性因素,网络可以更加强大,表示输入输出之间非线性的复杂的任意函数映射。网络的输出层可能会使用线性激活函数,但隐含层一般都是使用非线性激活函数

 

2.激活函数需要具备的性质

  1连续并可导允许少数点上不可导的非线性函数可导的激活函数,可以直接利用数值优化的方法来学习网络参数
  (2激活函数及其导函数要尽可能的简单有利于提高网络计算效率
  (3激活函数的导函数的值域要在一个合适的区间内不能太大也不能太小否则会影响训练的效率和稳定性

3.几种常见的激活函数

  3.1 Sigmoid

    Sigmoid 型函数是指一类 S 型曲线函数为两端饱和函数常用的 Sigmoid型函数有 Logistic函数和 Tanh函数.即定义域为负无穷到正无穷,值域为0到1.
    它可以将负无穷到正无穷的数映射到0,1区间内

    

 

  缺点:  

  • 激活函数计算量大,反向传播求误差梯度时,求导涉及除法;

  • 反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练;

  • Sigmoid 是非零均值的函数,收敛缓慢。

  • 易发生梯度消失现象,即太大或太小都会造成梯度为零,进而使得反向传播算法无法计算。

 

  3.2 TanH激活函数

     它也是一种Sigmoid函数,其定义为

     

 

    它与上面的区别就是tanh激活函数是零均值的,即

    

 

    TanH函数的缺点与sigmoid函数的缺点类似。当取值很大或很小时,会导致梯度很小,权重更新非常缓慢,即梯度消失问题

  

  3.3 ReLU激活函数

     目前深度神经网络中经常使用的激活函数,

    

  • ReLU 激活函数的特点是:输入信号小于时,输出都是0,输入信号大于0时,输出等于输入。

  • ReLU 的优点是使用ReLU 得到的SGD的收敛速度会比使用sigmoid/tanh的SGD快很多。

  • ReLU 的缺点是神经网络训练的时候很“脆弱”,很容易就会出现神经元死亡。

    例如,一个非常大的梯度流过一个ReLU神经元,更新过参数之后,这个神经元再也不会对任何数据有激活现象了,那么这个神经元的梯度就永远都会是0。(Dead ReLU Problem)。

  • 非零均值,所以一般ReLU后会加BN。

    3.3.1 Leakly ReLu

      

 

    3.3.2 ELU

      

    3.3.3总结

      如下图,ReLu是一个单侧抑制的激活函数,而Leaky ReLu是在抑制的一侧,添加了一点梯度避免梯度死亡,ELU则是一个近似零均值化的激活函数,

softplus是ReLu的平滑版本,但也还有单侧抑制。

 

    

 

 

 

 

 

 

  3.4  Softmax 激活函数

    

 

 

  3.5 softplus激活函数

    可以看作是ReLu的平滑版本,定义为:

    

 

 

 

     

参考资料:

    zongchen 1994的github

    《神经网络与深度学习》——邱锡鹏

 

posted @   Dr_Zhou  阅读(112)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示