优化算法进阶

动量法

设时间步t的自变量为xt,学习率为ηt。在时间步0,动量法创建速度变量v0,并将其元素初始化成0。在时间步t>0,动量法对每次迭代的步骤做如下修改,其中,动量超参数γ满足0≤γ<1。当γ=0时,动量法等价于小批量随机梯度下降。

由指数加权移动平均理解动量法

由指数加权移动平均的形式可得,速度变量vt实际上对序列{ηt−igt−i/(1−γ):i=0,…,1/(1−γ)−1}做了指数加权移动平均。换句话说,相比于小批量随机梯度下降,动量法在每个时间步的自变量更新量近似于将最近1/(1−γ)个时间步的普通更新量(即学习率乘以梯度)做了指数加权移动平均后再除以1−γ。所以,在动量法中,自变量在各个方向上的移动幅度不仅取决当前梯度,还取决于过去的各个梯度在各个方向上是否一致。这样,就可以使用较大的学习率,从而使自变量向最优解更快移动。

动量法使用了指数加权移动平均的思想,它将过去时间步的梯度做了加权平均,且权重按时间步指数衰减

动量法使得相邻时间步的自变量更新在方向上更加一致


AdaGrad算法

根据自变量在每个维度的梯度值的大小来调整各个维度上的学习率,从而避免统一的学习率难以适应所有维度的问题

需要强调的是,小批量随机梯度按元素平方的累加变量st出现在学习率的分母项中。因此,如果目标函数有关自变量中某个元素的偏导数一直都较大,那么该元素的学习率将下降较快;反之,如果目标函数有关自变量中某个元素的偏导数一直都较小,那么该元素的学习率将下降较慢。然而,由于sts t ​ 一直在累加按元素平方的梯度,自变量中每个元素的学习率在迭代过程中一直在降低(或不变)。所以,当学习率在迭代早期降得较快且当前解依然不佳时,AdaGrad算法在迭代后期由于学习率过小,可能较难找到一个有用的解。

AdaGrad算法在迭代过程中不断调整学习率,并让目标函数自变量中每个元素都分别拥有自己的学习率

使用AdaGrad算法时,自变量中每个元素的学习率在迭代过程中一直在降低(或不变)


RMSProp算法


AdaDelta算法

           

Adam算法

           

你可能感兴趣的:(优化算法进阶)