关于Adaptive Learning Rates(Adagrad)与Feature Scaling的理解

参考视频

参考自:李宏毅Machine Learning P5(Gradient Descent),在此基础上融入一些自己的理解:
https://www.bilibili.com/video/BV1JE411g7XF?p=5

Adaptive Learning Rates

Learning Rate对于机器学习/深度学习来说,都是一个非常重要的超参数。如果过大,Model将无法收敛,过小,Model收敛过慢,那么有没有自动调整learning rate的办法呢?

Popular & Simple Idea: Reduce the Learning Rate by some factor every epochs. (合适的Learning Rate应该随着参数的update会越来越小)因为通过在初始值时,参数离最优参数点的距离很远,这时候需要迈大步子;而经过一段时间的更新之后,离最优点的距离越来越短,这时需要迈小步子。例如,我们可以设置如下Learning Rate更新公式,t为当前更新次数:
关于Adaptive Learning Rates(Adagrad)与Feature Scaling的理解

Learning rate can’t be one-size-fits-all: 不同的参数应该设置不同的Learning Rate,例如Adagrad

Adagrad

核心思想:Divide the learning rate of each parameter by the root mean square of its previous derivatives.

普通Gradient Descent(单参数):其中w为模型的一个参数
关于Adaptive Learning Rates(Adagrad)与Feature Scaling的理解
Adagrad: Learning Rate会再除以一个σt,σt为参数w在之前更新过程中所产生的Derivatives
关于Adaptive Learning Rates(Adagrad)与Feature Scaling的理解
Adagrad参数更新示例:
关于Adaptive Learning Rates(Adagrad)与Feature Scaling的理解
结合之前的式子,将σt和ηt代入Adagrad中,得到最终的形式为:
关于Adaptive Learning Rates(Adagrad)与Feature Scaling的理解
问题:在普通Gradient Descent中,gradient越大,每次update的步子也就越大,这是符合常理的(后面会解释这个理解的局限性),因为gradient越大,往往当前参数距离最优点也越远;但在Adagrad中,由于η的分母部分与gradient成正比,这样会导致gradient越大,step反而越小。

解释

  • Adagrad表示How Surperise it is(体现反差),示例如下,Adagrad会强调当前的反差,如果gradient突然变大或变小,通过Adagrad会表现出它的反差(比如,对于突然变大的导数,我们给予更多的关注,Step也就越大;对于突然变小的导数,Step越小)。
    关于Adaptive Learning Rates(Adagrad)与Feature Scaling的理解
    其次Gradient descent越大,离最优点最远越是相对于只考虑一个参数时来说的,如下方的单参数图。如果Model中含有多个参数,我们无法衡量距离的远近,如下方的多参数示意图:只考虑单参数,对于w1来说,a的导数比b大,因此a比b距离optimal更远;对于w2来说,c的导数比d大,c比d距离optimal更远;考虑跨参数之后,虽然c的导数比a大,说c比a距离optimal距离远显然是错的。

单参数关于Adaptive Learning Rates(Adagrad)与Feature Scaling的理解
多参数关于Adaptive Learning Rates(Adagrad)与Feature Scaling的理解
上面的例子反映了,如果仅靠gradient来衡量距离的远近,对于多参数的model来说是不可靠的。那么,怎么才能正确反映参数与最优点之间的距离,从而决定Step的大小呢?其实,衡量距离时不单单要考虑一次微分,还需要考虑二次微分,如下,x0与optimal的距离其实是一次微分/二次微分

关于Adaptive Learning Rates(Adagrad)与Feature Scaling的理解
在很多时候,参数是复杂的,计算gradient可能就需要耗费很多时间,在这个基础上在计算二次微分通常在时间上是无法接受的,并且有些时候根本无法计算二次微分。Adagrad要做的事情就是,让分母部分起到二次微分的效果(使用一次微分估计二次微分)。关于Adaptive Learning Rates(Adagrad)与Feature Scaling的理解
在分母部分,将之前所有的一次微分结果都考虑了进来,求一个l2范式,这样做为什么能代表二次微分呢。如上图,如果蓝色的函数,二次微分比绿色函数的二次微分要小。求得一次微分函数,采集一批样本并得到其对应的一次微分,它们的l2范式在一定程度上能代表二次微分的大小,例如蓝色函数的结果要比绿色函数小

Feature Scaling

在机器学习中,通常会进行Feature Scaling来使得各特征之间拥有相同的尺度,主要起到以下两点作用:

  1. 消除特征间单位和尺度差异的影响,同等看待每维特征
    关于Adaptive Learning Rates(Adagrad)与Feature Scaling的理解
  2. 在使用梯度下降时,Feature Scaling后loss会更趋向于圆形,这使得Gradient Descent更有效,减少了update时的震荡,从而更快到达圆心(Optimal)
    关于Adaptive Learning Rates(Adagrad)与Feature Scaling的理解

关于Feature Scaling的深层理解可以参考这个blog,写得很好:https://www.cnblogs.com/shine-lee/p/11779514.html