Gradient Descent (二)

我们做Gradient Descent 需要注意什么呢?

  • Tuning your learning rates

η的大小控制不好,会造成很多问题:

如果η太小,我们w的移动速度太慢,而且会对数据量有一定要求

而如果太大了呢,w会一直在未走到最低点之前震荡,而无法走到最低点

甚至是这样:

我们可以把参数的update和Loss值做一个曲线:

那有什么办法可以自动调节learning rate呢?

    最基本的思路:learning rate随着参数的update越来越小。

                             因为通常在开始的时候,我们设置的参数往往距离最低点比较远,随着update,距离最低点会越来越

                             近,也就更加“谨慎”一些

用一个简单的式子可以表达成这样:

也就是说,每个点都有一个不同的learning rate。

对求learning rate的方法中,一个比较简单的就是Adagrad

什么是Adagrad呢?

即learning rate等于它除以之前所有微分值的均方根

在我们之前的Gradient descent中,

而在Adagrad中:,其中   

然后约分一下:

但是,如果仔细观察这个式子,就会发现一些问题,在我们最开始的式子中,我们可以理解的:当斜率g越大时,w走一步跨的步子越大,但在我们刚刚得出的式子中,分子和分母中都存在g,是不是互相矛盾呢?

一种解释是说Adagrad强调的是本次数据相对于其他数据的反差

  • Stochastic Gradient Descent

在原来的Gradient Descent中,我们是计算完所有的数据loss之后,update一次参数

而在Stochastic Gradient Descent中,我们计算每个数据的loss,每个都update一次参数

  • Feature Scaling

, 如果x2比x1大很多,那就把x2的值缩小,让x1和x2对y的影响程度相似

y

那具体怎么做呢?

至于Gradient Descent的数学理论基础,可以看一下泰勒公式......这个我们以后有空再说

PS:学习笔记,仅用于个人学习。图片来自李老师的ppt 

猜你喜欢

转载自blog.csdn.net/li_k_y/article/details/83926991