美文网首页
Training NN -6- Parameter update

Training NN -6- Parameter update

作者: 本地路过 | 来源:发表于2018-03-05 23:50 被阅读30次
参数更新

实践中最优

基于(Nesterov的)动量更新的各种随机梯度下降方法更加常用,因为它们更加简单且容易扩展。

Adam is good

普通更新

在反向传播得到梯度后,- learning rate * dx 就可以进行权重参数更新了

普通更新

使用普通更新方法时,会遇到局部最优解或者鞍点

local minima: 梯度为0,停止梯度下降。Saddle point:一般出现在高维数据中。

Problems with SGD

SGD中,在计算梯度时,使用的是mini-batches,所以一般噪音比较大。

Momentum Update

物理学动量概念的引入,这个方法在深度网络上几乎总能得到更好的收敛速度。

想象一个小球在碗中做摆钟运动,mu * v 类似于摩擦力。在小球运动的过程中,随着时间变化,动能越来越小(克服摩擦力做工),就会停在碗底的部分了。mu一般取值:0.5,0.9,0.99

Momentum Update

Nesterov Momentum

在理论上对于凸函数它能得到更好的收敛,在实践中也确实比标准的Momentum表现更好一些。

区别:既然我们知道动量将会把我们带到绿色箭头指向的点,我们就不要在原点(红色点)那里计算梯度了。使用Nesterov动量,我们就在这个“向前看”的地方计算梯度。

Nesterov Nesterov

AdaGrad Update

根据梯度的大小,对于Learning rate 进行调整。

AdaGrad

如下图,水平方向的梯度较小,垂直方向的梯度较大,所以水平方向,我们更新梯度时,给它一个较高的Learning rate,让它快速接近目标,而垂直方向梯度较大,给它一个较小的Learning rate,这是我们对于不同梯度方向的补偿措施。(实际应用中,梯度较大的地方减慢速度,是比较好的策略

AdaGrad

Q2: What happens to the step size over long time? 

在计算过程中,grad_squared在不断变大(+一个数的平方),对于最后一步的更新而言,更新就会逐渐减小,最后衰减至0,最后完全停止学习。(凸问题中是OK的)

但是在神经网络中,我们希望它可以保持活力,持续变化,从而不断修正参数。所以就有了

RMSProp Update

RMSProp也是基于梯度的大小来对每个权重的学习率进行修改。但是和Adagrad不同,其更新不会让学习率单调变小。

decay_rate是一个超参数,常用的值是[0.9,0.99,0.999]。1e-7 是为了避免分子变为0, 1e-5 等都可以

RMSProp

Adam

看起来像是RMSProp的动量版(既有动量的好处,也有更新尺度的自适应变化)。

区别在于:更新时,使用的不是梯度dx,而是平滑版的first_moment。

动量的作用:在使用Mini-batch进行梯度计算和更新时,会有很多噪音,相较于用每一步计算的梯度进行更新,在这里我们是用前面几个梯度的衰减和,稳定了梯度的方向。

first_moment是关于梯度的一阶表达式、second_moment是关于梯度的二阶表达式。推荐的参数值eps=1e-8, beta1=0.9, beta2=0.999

Adam

Bias Correction:在一开始的时候将first_moment, 和second尽快变大,就不会得到关于梯度一次矩阵和梯度二次矩阵的偏置估计,他们只会在开始的几步中对于first_moment, 和second产生影响。

Adam Full

学习率衰减方法

常见的三种方法:按步递减、指数级衰减和1/t衰减

learning rate decay LR Decay

参数的二阶优化方法

对比图

优点:计算过程没有超参数、没有学习率。

缺点:计算(以及求逆)Hessian矩阵操作非常耗费时间和空间

Hessian has O(N^2) elements、Inverting takes O(N^3)、N = (Tens or Hundreds of) Millions

二阶优化

BGFS相对而言比较流行,将空间复杂度控制在O(n^2)。

BGFS L-BFGS

L-BFGS的应用劣势:需要对整个训练集进行计算,而整个训练集一般包含几百万的样本。

对于fulll batch,确定模型的训练而言,L-BFGS是可以做的很好的。但是和小批量随机梯度下降(mini-batch SGD)不同,让L-BFGS在小批量上运行起来是很需要技巧的。对于如何将L-BFGS在大规模数据、随机模式进行很好的训练,是一个研究热点。

在深度学习和卷积神经网络中,使用L-BFGS之类的二阶方法并不常见。

相关文章

网友评论

      本文标题:Training NN -6- Parameter update

      本文链接:https://www.haomeiwen.com/subject/ccekfftx.html