Loading

李宏毅机器学习(六) 神经网络训练技巧(2)

神经网络训练技巧(2)

Loss不降的原因

问题

Q:为什么Loss降到一定程度后不再下降,是因为参数到了critical point 或者 saddle point吗?

image-20210720155141949

A:不一定是参数参数到了critical point 或者 saddle point,也有可能是梯度发生了震荡。

image-20210720155304257

如图所示,300-500轮时,Loss基本无变化,但是梯度会有陡增陡降的情况,这可能是梯度发生了震荡。

image-20210720155454578

如图所示,参数在error surface上发生了震荡现象,梯度激烈变化,但是loss居高不下,始终无法走到更低的地方。

就算没有遇到critical point,训练也不容易。

实例

例如下面这个问题,有两个参数 \(w\)\(b\)\(w\) 对应的梯度相对陡峭一点, \(b\) 对应的梯度相对平坦一点,loss最小的地方在黄色X处,直观感受很容易训练,让我们试一试。

image-20210720160029675

将学习率设为\(10^{-2}\)进行训练,收敛过程如下图所示。

image-20210720160459983

发生了震荡现象,Loss无法收敛,直观感受是学习率设置的太大了,那我们设置小一点试试。

image-20210720160556240

学习率降低为\(10^{-7}\)时,终于不在产生震荡现象,但在经过100000次训练后,前进的距离很小,太小的复杂度导致很难训练。\(10^{-7}\)的学习率适合 \(w\) ,但不适合 \(b\)

分析

单一的学习率不能应对所有的参数训练,应该对每个参数定制对应的学习率。

image-20210720161510503

如图所示,不同的参数的error surface的变化情况不同,也就需要不同的学习率,所以要对的每个参数每个时刻都定制一个学习率。

改进思路:对每一个参数的每一轮更新,我们将其学习率都除以一个超参数\(\sigma_i^t\),每一个参数的每一个轮计算所使用的超参数\(\sigma_i^t\)都是不一样的。

image-20210720170227700

Root Mean Square

RMS的超参数\(\sigma_i^t\)是所有梯度的均方根,计算过程如下。

image-20210720170551664

image-20210720170612832

如上图所示,\(\sigma\)能够很好的适应不同的梯度,在error surface平缓的时候,\(\sigma\)很小,使得参数更新的步伐很大。在error surface陡峭的时候,\(\sigma\)很大,使得参数更新的步伐很小,这种策略运用于Adagrad中。

  • 优点:考虑了历史的梯度情况,可以根据当前的梯度情况对学习率做出调整。

  • 缺点:\(\sigma\)来自于历史所有的梯度的均方根,所以梯度变化时,\(\sigma\)不能很快的变化,使得参数更新的学习率不能及时得到调整。

RMSProp

基于RMS考虑历史梯度的思想,RMSProp在RMS的基础上进行了调整,增加了用于调节历史梯度和当前梯度的权重\(\alpha\) ,使得RMSProp方法能够根据梯度的变化迅速调整学习率。image-20210720192443708

其中\(\sigma\) 来自于历史的 \(\sigma^{2}\)和当前梯度\(g\)的加权和的根,\(\alpha\) 用于调节两者之间的比例,相比与RMS,最近的梯度可以对学习率产生更大的影响。

image-20210720192920095

Adam

Adam方法结合了RMSPropMomentum

  • RMSProp:主要控制参数的更新速率(学习率)

  • Momentum:控制参数更新的方向。

image-20210720193257807

Learning Rate Scheduling

通过使用自适应的学习率后,相比于固定的大的学习率和小的学习率,能顺利完成训练,但是在快要抵达最优点时,蚕食更新方向出现了偏移,这是因为学习率很大,参数\(w\)方向的梯度出现了累积,累积到一定程度改变了参数的更新方向。

image-20210720193749078

为了避免上述现象,我们需要为学习率指定策略,之前我们的改变方法都是将学习率 \(\eta\) 除以一个值,\(\eta\) 自身的取值不变,这就避免了上述情况。

直观方法:模型刚开始时,误差很大,所以需要大的学习率,随着时间变化,模型误差逐渐减小,学习率也应逐渐减小。

image-20210720194859678

所以使用变化的\(\eta\),最开始选用较大的值,随着时间变化,\(\eta\) 越来越小,最终趋近于一个极小值,使用这样的策略,可以避免训练快结束时方向大幅度偏离。

学习率策略一般有两种:Learning Rate DecayWarm Up.

image-20210720195331056

Warm Up: 最开始时,学习率由小到大增长,增长到一定程度便随着时间减小。

Warm Up 直观解释:因用于调节学习率的 $\sigma $ 由历史梯度得到,最开始时$\sigma $ 由少量历史梯度计算得到,不够稳定,若给以较大的\(\eta\) ,则导致学习过程易产生较大的偏差,所以最开始时慢慢提升学习率。

总结

image-20210720195919955

可在传统的梯度更新策略基础上做出如下改变

  • Learning rate scheduling:设置学习率变化策略。

  • Momentum:考虑参数更新的方向。

  • Root Mean Square:考率历史梯度,并对当前参数更新幅度做出调整。

posted @ 2021-07-20 20:06  c0co  阅读(505)  评论(0)    收藏  举报