机器学习系列 四 Gradient Descent以及升级内容

前情回顾
回顾上节课中涉及到的Gradient Descent 内容:
现在假设θ就是一个模型的参数集合,我们使用loss function 来更新参数集合的变化。
然后我们使用如下式子来代表Loss function对于参数的偏微分:


那我们用可视化的方式来看这个问题:目前假设只有两个参数,我们随机选一个初始位置θ0,
我们一步一步按照graident descent的方式,红色代表gradient,就是看做等高线的法线,那我们要做的就是反向移动,一直移动

关于Learning rate
learning设置的大小将影响在Loss function上更新的参数的快慢和幅度。如果太大,可能无法真正进入到全局最低点,如果太小,可能步伐太小,太慢。
所以在做gradient descent的时候要把这下面这个图画出来,如果不画出来,会觉得非常卡。
learning rate太大,就会飞出去,太小太缓慢,大一点就又不够拟合。
有的时候,我们在做测试会发现情况不好,所以就要回头看看这个曲线,是否需要调整Learning rate,但是调整learning rate比较麻烦,如何自动的调整呢?

大原则:
1. Learning Rate通常会随着参数的update,变得越来越小   
    1.1 因为通常最开始的时候,初始点距离最优点比较远,所以我们希望步伐大一点,尽快走到最低点。
    1.2 但经过几次参数更新后,我们会比较接近最优点,这时候就需要减少learning rate 让它能够收敛在最低点附近。
    1.3 例如,在 t 时刻,我们让他的learning rate 除以t+1 开根号,来进行减小。
    
但是这样还不够!!!
    因为不可能one-size-fits-all.最好的情况是每一次的参数update,我们都给他不通的learning rate。

下面介绍一些大招:

1. Adagrad
以上就是Adagrad 的做法,是说,每次参数更新的learning rate, 都给他 除以之前算出来微分值的root mean square ( 均方根 )

设如下的式子,gt是t时刻的Loss function 对参数w的偏微分。学习率唉塔t。


在之前我们普通gradient descent中,更新w参数,我们会直接减去这个唉塔t乘以gt。

Adagrad里面我们把学习率除以西格玛t,这个西格玛t是过去所有参数w的偏微分值得均方根(root mean square )。
现在也就是说对于每次更新参数,learning rate的值都不一样。
所以在 Adagrad里面就是这么做的:
第一次,更新w1,我们回去给学习率learning rate去除以一个 
那西格玛0又等于过去所有参数w的偏微分值得均方根,在第一次的场景下,他就等于g0的均方根。
那第二次,更新w2,我们学习率就等于上面是式子的,然后我们更新本次的学习率,去求,让去除以之前所有参数w的偏微分值得均方根,那么本次他应该等于g0的平方+ g1的平方,然后取平均(除以2),再开根号。
     
然后第三次:
重复这个动作,直到第t次,的算法,就是把之前所有对于w的偏微分平方和取平均后开根号。

总结下来Adagrad的算法就简写成这个样子,这里给出了的算法,

               
由于上面式子,分子分母都有同样的一个t+1分之1的开根号,所以这个约掉之后就生下面的简写:

Adagrad是adaptive learning rate里面最简单的,这种方法在更新的后期会越来越慢,因为学习率变得越来越小。使用 Adam的话就比较不会有这样的情况。    
而在普通的gradient descent下面,更新快慢取决于两个参数,一个是学习率,一个是偏微分gradient。gradient 越大step越大。
然而在 Adagrad里面看着有点矛盾。
下面可以看出,gradient越大step越大, 而分母,确实gradient越大step越小,自相矛盾??

这里就牵扯出来Adagrad的设计理念,它本来的理念是想看看这个模型到底有多大的 反差!    
例如上面这个例子,在两次training的时候,每次参数都有一个非常大的反差值,这个时候Adagrad就可以利用分子分母的制约来看看到底有多大的反差。

正式的解释:
考虑这样一个曲线,然后y对于x作微分,可以得出|2ax + b|的两条直线
这个函数的最低点,是

现在随机选一个点X0,怎么的一个步伐是最好的呢,当然直接一步到位,步伐长度直接都等于他到最低点之间的距离最好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值