Tuning your learning rates
注:Learning rate即为移动一步的步幅
Gradient方向和Movement方向始终是相反的,因为:
绿色,当learning rate太大时,一开始下降得很快,但是很快就会被卡住
蓝色,当learning rate太小时,下降的速度很慢,如果给足够的时间,是可以走到最低点的,但是这个时间是难以忍受的
众所周知,要不断的手动调learning rate很麻烦,我们能不能想办法让它自己调呢?
自适应梯度算法
梯度下降优化算法:
the previous derivatives:之前算过的那些微分值(所有)
Adagrad整体而言是会越来越慢的,这只是最简单最的一种方法。还有Adem,Adaboost等等。
在做一般的Gradient Descent的时候
问题:为什么要造成反差?如何理解?
结论:Gradient(斜率)的值越大,离最低点的距离越远
当考虑多个参数时:
Gradient的值越大就不见得跟最低点的距离越远,在有多个参数时,就不一定成立了
关于a,b,c,d四个点
上图,我们考虑 w 1 w_1 w1的变化,a点的gradient值更大,且a点里最低点的距离更远是成立的
如果我们同时考虑 w 2 w_2 w2的变化,c的gradient值比d大大,且c点里最低点的距离比d更远是成立的
but,如果我们比较的是跨参数的a点和c点呢?你又能如何作比较?
以上结论就不成立了,事实上虽然a点的gradient值比c小,但确实是a点离最低点更远,由此以上结论不再适用,于是我们引入second derivative(二阶偏微分)
上式的二次微分是2a(分母),最好是要把二次微分考虑进来
在
w
1
w_1
w1方向上,smaller second,比较平滑,一次比较小,二次也比较小,于是两者相比,就可以作为衡量标准
在 w 2 w_2 w2方向上,larger second,比较陡峭
光比较a和b的微分值是不够的,要把二次微分考虑进去做平减,除以它的二阶偏微分,才能真正更好的表示当前点到最低点的距离
和Adagrad式子联系起来:
参数的update量如下:
在sample点数量很多的情况下,你是可以在一次微分上面做sampling求得二次微分的近似值。
这里我们只是近似把分母作为second derivative,是在不增加计算量下的一种近似。当然你可以直接去算二次微分…但当参数很多的时候,算一次就很难了,你真的很难去算二次微分。