zl程序教程

您现在的位置是:首页 >  工具

当前栏目

深度学习激活函数比较

学习 函数 深度 比较 激活
2023-09-11 14:21:07 时间

一、Sigmoid函数

  1)表达式

    

         

 

  2)函数曲线

  

  3)函数缺点

      •  梯度饱和问题。先看一下反向传播计算过程:

          反向求导:

          而其中:

          

            

           所以,由上述反向传播公式可以看出,当神经元数值无线接近1或者0的时候,在反向传播计算过程中,梯度也几乎为0,就导致模型参数几乎不更新了,对模型的学习贡献也几乎为零。也称为参数弥散问题或者梯度弥散问题

          同时,如果初始权重设置过大,会造成一开始就梯度接近为0,就导致模型从一开始就不会学习的严重问题。

      •  函数不是关于原点中心对称的。 

        这个特性会导致后面网络层的输入也不是零中心的,也就是说经过sigmoid发出的值x只可能是正值,而不可能是负值,对于下一层的参数w的更新会有影响,因为下一层参数的更新需要用到这个值x,这个如果既可以为正值又可以为负值的话,那么参数w的更新就可以根据实际需要快速增大或者快速减小,很快收敛。如果激活函数是以零为中心,就可以既发出正值也可以发出负值

         

                   

二、tanh函数

  1)公式

 

  2) 导数

    

  3)曲线

 

 

 

  

  tanh(x)=2sigmoid(2x)-1

      tanh 函数同样存在饱和问题,但它的输出是零中心的,因此实际中 tanh 比 sigmoid 更受欢迎。

 

三、ReLU函数

 

   1)表达式  

      f(x)=max(0,x)

  

 

  2)曲线  

    

 

  相较于 sigmoid 和 tanh 函数,ReLU 对于 SGD 的收敛有巨大的加速作用(Alex Krizhevsky 指出有 6 倍之多)。有人认为这是由它的线性、非饱和的公式导致的。我觉得最起码在右半轴ReLU函数的梯度是恒定的,不存在饱和情况,只是在左侧存在梯度硬饱和,sigmoid函数属于两端都软饱和,这可能是ReLU函数相对比较受欢迎的原因吧,最起码有一端比较完美了。

  ReLU 的缺点是,它在训练时比较脆弱并且可能“死掉”,就是在梯度为0硬饱和的时候,容易出现这种死掉的情况。

  局限性

3)改进

 

参考链接:https://cloud.tencent.com/developer/article/1399909