zoukankan      html  css  js  c++  java
  • pytorch-04-激活函数

    sigmoid函数:

    越大的负数越接近0,越大的正数越接近1
    缺点:
    (1)造成梯度消失:该函数在靠近1和0的两端,梯度几乎变成0,
    梯度下降法:梯度乘上学习率来更新参数,如果梯度接近0,那么没有任何信息来更新参数,会造成模型不收敛
    另外,使用sigmoid函数,在初始化权重时,权重太大,经过激活函数会导致大多数神经元变得饱和,没有办法更新参数
    (2)sigmoid输出不是以0为均值,这就会导致经过sigmoid激活函数之后的输出,作为后面一层网络的输入的时候是非0均值的,这个时候
    如果进入下一层神经元的时候全是正的,这就会导致梯度全是正的,那么在更新梯度的时候永远都是正梯度。
    (详解)p52

    Tanh激活函数:

    将输入的数据转换到-1到1之间,输出变成了0均值,解决了sigmoid的第二个问题。
    但是,仍然存在梯度消失的问题

    Relu函数
    优点:
    (1)相比sigmoid函数和Tanh激活函数,Relu激活函数能够极大的加速随机梯度下降的收敛速度,线性,不存在梯度消失问题。
    (2)计算简单,只需要一个阈值过滤就可以得到结果,不需要进行一大堆复杂的运算。
    缺点:
    训练时脆弱,比如一个很大的梯度经过Relu激活函数,更新参数后,会使这个神经元不会对任何数据有激活现象。如果发生这个情况之后,经过relu的梯度永远都是0,参数无法更新,因为Relu激活函数本质上是一个不可逆的过程,因为它会直接去掉输入小于0的部分。在实际操作中可以通过设置比较小的学习率来避免这个问题。

    Leaky Relu
    是relu的变式,主要修复relu激活函数的脆弱问题,不将x<0的部分变成0,而给它一个很小的负的斜率。

    Maxout:有relu的优点,又避免了relu的缺点,但加倍了模型的参数。
    max(w1*x+b1,w2*x+b2)
    relu 是maxout中w1 =0,b1 =0的特殊形式。

  • 相关阅读:
    动态生成Zip
    Net 项目构建基于Jenkins + Github + Mono 的持续集成环境
    net中使用ETW事件
    JS模板引擎
    DDD事件总线
    ASP.NET5 Beta8
    Big ball of Mud
    Jil序列化JSON
    DotNetOpenAuth实践
    centos安装wget 及配置(转)
  • 原文地址:https://www.cnblogs.com/shuangcao/p/11714947.html
Copyright © 2011-2022 走看看