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的特殊形式。

  • 相关阅读:
    Linux JDK安装
    Redis集群搭建
    Struts2 中添加 Servlet
    js小技巧:数组去重
    修改Request 中的数据
    JAVA 图形界面开发基础详解
    JAVA 类和对象基础知识详解
    Java 类的继承详解
    C++ 大学课堂知识点总结
    数据库简单练习 建表+select
  • 原文地址:https://www.cnblogs.com/shuangcao/p/11714947.html
Copyright © 2011-2022 走看看