zoukankan      html  css  js  c++  java
  • 深度学习之优化算法

    前言

              以下内容是个人学习之后的感悟,转载请注明出处~

    Mini-batch梯度下降法

      见另一篇文章:梯度下降法

    指数加权平均

      其原理如下图所示,以每天的温度为例,每天的温度加权平均值等于β乘以前一天的温度加权平均值,再加上(1-β)乘以

    当天温度的和。β值得选取对温度加权平均值的影响非常明显,图中的红黄绿三条曲线即β取不同值时的曲线。

                 

      不过此方法有个弊端,就是前期v0为0,导致初期阶段的值很小,并不准确。对此,我们可以对它进行偏差修正,

    vt  := v/ ( 1-β t ) 。但是大部人都不太喜欢用偏差修正,宁愿忍受初期阶段。

    动量(momentum)梯度下降法

      有时候遇到下图中的情况,我们用传统的梯度下降法,需要花费很长的时间这并不是我们想要的效果。

                     

      想要解决这种问题,我们能够快速想到的便是增大横向的跨度,减小纵向的跨度,那么具体该怎么实施呢?

      这就需要用到动量梯度下降法了,其具体实现如下图所示,其中β一般取0.9 。

                                     

      总之,该方法可以加快梯度下降。

    RMSprop

      除了上述的方法外,RMSprop也可以加快梯度下降,解决动量梯度下降法提到的问题。其具体实现如下图所示,其中写成β2

    为了和上面的β区分开来,取值一般取0.999,至于ε是为了防止分母太接近0,其一般取10-8

                                            

    Adam优化算法

      该算法结合了动量(momentum)下降梯度法和RMSprop法,其具体实现见下图:

                                  

      其具体参数的取值一般如下图所示:

                                              

    学习率衰减

       在训练模型的时候,通常会遇到这种情况:我们平衡模型的训练速度和损失(loss)后选择了相对合适的学习率(learning rate),

    但是训练集的损失下降到一定的程度后就不在下降了,比如training loss一直在0.7和0.9之间来回震荡,不能进一步下降。如下图所示:

                                             

      遇到这种情况通常可以通过适当降低学习率(learning rate)来实现。但是,降低学习率又会延长训练所需的时间。

      学习率衰减(learning rate decay)就是一种可以平衡这两者之间矛盾的解决方案。学习率衰减的基本思想是:学习率随着训练的

    进行逐渐衰减。

      学习率衰减基本有两种实现方法:

    1. 线性衰减。例如:每过5个epochs学习率减半
    2. 指数衰减。例如:每过5个epochs将学习率乘以0.1

    注:不同的优化算法适用于不同的深度结构。

    以上是全部内容,如果有什么地方不对,请在下面留言,谢谢~

  • 相关阅读:
    There is an overlap in the region chain修复
    There is an overlap in the region chain
    region xx not deployed on any region server
    python 中的re模块,正则表达式
    TCP粘包问题解析与解决
    yield from
    Git push提交时报错Permission denied(publickey)...Please make sure you have the correct access rights and the repository exists.
    mysql 中Varchar 与char的区别
    Mysql 字符集及排序规则
    请实现一个装饰器,限制该函数被调用的频率,如10秒一次
  • 原文地址:https://www.cnblogs.com/steed/p/7522975.html
Copyright © 2011-2022 走看看