zoukankan      html  css  js  c++  java
  • 激活函数与Loss的梯度

    一、梯度

    1、导数、偏微分、梯度的区别:

      1)导数:是标量,是在某一方向上变化的效率

      2)偏微分,partial derivate:特殊的导数,也是标量。函数的自变量的方向,函数的自变量越多,偏微分就越多。

      

      3)梯度,gradient:把所有的偏微分集合成向量,是向量。

      

      梯度向量的长度代表函数在当前点变化的速率。

    2、梯度的作用:

      1)作用通过梯度来找到函数的极小值

      2)如何找到极小值,通过以下公式:

      

      学习步长就是学习率。

      不断更新自变量,当偏导(梯度)趋近于0的时候,函数值也就趋近于极小值。

      3)举例:

      

     3、梯度的优化方法:

      

      不同的优化方法具有不同的效率、准确率。有的快,有的准确率高。主要通过以下几个方向优化:

      1)初始化数据(initialization)

        初始状态的不同,对结果的影响可能有很大区别

        如果不清楚的话,就使用目前主流的初始化方法。

      2)学习率(learning rate)

        过大会导致数据不收敛,过小会导致计算量的增加。

      3)动量(monument)

        给数据一个惯性,当惯性达到一定程度后,可以减少数据陷入局部极小值的情况。

    4、凸函数(convex function):

    向一个碗一样,两点中点处,均值大于实际值,如下图所示

    5、局部极小值(local minima):

     局部极小值较多的情况的解决办法:

    6、鞍点(saddle point):

      一个点,在某一方向上是极小值,在另一方向上又是极大值。如下图中红点所示:

      

    二、激活函数

    1、激活函数的点

      1)作用

      当函数值达到某一阈值后,激活函数将函数值设置为特定值(根据激活函数公式而定),从而达到激活的目的

      

      2)激活函数均不可导

    2、常用激活函数

      1)sigmoid

      

      * sigmoid导数(derivative):

      

       * sigmoid用处:

       a)因为sigmoid输出的值是在0~1之间,所以适用于概率问题;也适用于图像的RGB问题,因为RGB值是0~255之间

       b)sigmoid的缺点:因为sigmoid函数在处于+∞和-∞时候,导数趋近于0,会使得数据处于更新非常缓慢(长时间loss保持不变的情况),即:梯度弥散问题。

      * sigmoid函数的pytorch实现

      

      2)tanh

      

      输出值在[-1, 1]之间

      在RNN里面用得比较多

      * tanh的求导推导过程

      

      * tanh在pytorch中的实现

      

      3)relu(Rectified Liner Unit,调整的线性流单元)

      

      * 被大量的实验证明,relu函数很适合做deep learning。

      因为:z<0时,梯度是0,z>0时,梯度是1。因为在向后传播时候,因为梯度是1,所以对于搜索最优解,梯度计算时候非常方便,也不会被放大和缩小,很难出现梯度弥散和梯度爆炸的情况。所以在神经网络中优先使用此函数。

      * relu在pytorch中的实现

      

    三、Loss以及Loss的梯度

    1、MSE(mean square error):均方差

      

       pytorch中mse的求解方法:torch.norm().pow(2)  # 要记得平方

      * MSE求导

      

      * 使用pytorch自动求导

      1)法一:

      使用torch.autograd.grad()

       

      2)法二:

      使用mse.backward()

      

      * 注意w.norm(),w.grad(),w.grad().norm()的区别:

      w.norm()是均方差的平方根

      w.grad()是导数

      w.grad().norm()是导数的均方差的平方根

    2、Cross Entropy Loss:

      

       Softmax:

      

      * softmax特点:

      1)输出的所有值的范围是0~1

      2)所有概率之和等于1。(注:sigmoid函数,所有概率的和一般是不等于1的)

      输出概率最大值的 索引。

      3)会将原有值之间的差距拉大。

      * softmax求导:

      

      

      1)当i=j时

      

      2)当i ≠ j时

      

      3)综合

      

      * softmax在pytorch中的实现

      

      上图中最后4行,分别表示:δp1/δai ,δp2/δai (i∈[0, 2])求偏导

  • 相关阅读:
    初识 visJs (基于html5 canvas开发的可视化框架)
    VueJs
    VueJS 使用i18n做国际化切换中英文
    vue-cli项目接口地址可配置化(多环境部署)一处修改多处适用
    vue + element-ui 制作下拉菜单(可配置路由、可根据路由高亮list、可刷新自动展开定位路由)
    vue-cli -- > 项目基本构建的方法
    javascript代码工具库
    HTML5新功能之六 《Web通信、WebSockets和跨文档消息传输》
    《响应式Web设计:HTML5和CSS3实战》 读书笔记
    HTML5新功能之二 《Geolocation获取地理位置》
  • 原文地址:https://www.cnblogs.com/jaysonteng/p/12596079.html
Copyright © 2011-2022 走看看