zoukankan      html  css  js  c++  java
  • 深度学习激活函数比较

    一、Sigmoid函数

      1)表达式

        

             

     

      2)函数曲线

      

      3)函数缺点

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

              反向求导:

              而其中:

              

                

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

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

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

          这个特性会导致后面网络层的输入也不是零中心的,进而影响梯度下降的运作。

          因为如果输入都是正数的话(如 $$f=w^{T}x+b$$ 中每个元素都 $$x>0$$ ),那么关于 $$w$$ 的梯度在反向传播过程中,要么全是正数,要么全是负数(具体依据整个表达式 $$f$$ 而定),这将会导致梯度下降权重更新时出现 z 字型的下降。

                     

    二、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

  • 相关阅读:
    ASP.NET MVC搭建项目后台UI框架—3、面板折叠和展开
    ASP.NET MVC搭建项目后台UI框架—2、菜单特效
    ASP.NET MVC下使用文件上传
    为vs2012添加背景和皮肤
    ASP.NET Redis 开发
    Nginx详解-服务器集群
    6、ASP.NET MVC入门到精通——ASP.Net的两种开发方式
    NHibernate可视化设计插件——Mindscape.NHibernateModelDesigner
    .NET出现频率非常高的笔试题
    19、ASP.NET MVC入门到精通——Unity
  • 原文地址:https://www.cnblogs.com/gczr/p/7520723.html
Copyright © 2011-2022 走看看