随机梯度下降的momentum 理解

来源:互联网 发布:nginx rtmp windows 编辑:程序博客网 时间:2024/04/29 04:16

一直以来,不是很懂随机梯度下降中momentum的概念,后来又好好地研究了下momentum,发现它无非就是为了在安全模式下加速学习率的下降罢了,

首先说一下原始的没有momentum的梯度下降,最一开始的每次的迭代过程如下:

  1. 随机抽取m个样本,{x1,x2,...,xm},
  2. 计算梯度并更新参数为如下公式:
    g=1mθi=1mL(f(xi;θ),yi)

    θ=θεg

经过上述操作,每次梯度更新的时候都会更新εg,这个恒定的值会带来很多麻烦,比如说如果梯度下降过程中太平坦,如果还按照之前的步伐走,那么下降的就太快,而如果梯度下降过程中太陡峭,那么下降时就会一直震荡,因而不能够满足开发的要求,

针对上述缺点,提出了momentum这个概念,在这里不讲述其物理意义,因为很容易把人弄晕,到最后速度和位移都混在一起,现在只讲原理,

还是按照上面的思路,不过这里引入了v这个概念,其实这个v就是梯度的改变量, 迭代过程如下所示,

  1. 随机抽取m个样本,{x1,x2,...,xm},
  2. 计算梯度并更新参数为如下公式:
    g=1mθi=1mL(f(xi;θ),yi)

    v=αvεg

    θ=θ+v

经过上述操作, 梯度的变化量的推导公式如下所示,

第一次迭代 θ=θ+v=θεg(其中v=εg)

第二次迭代 θ=θ+v=θ+αvεg=θ(α+1)εg(其中(v=(α+1)εg

第n 次迭代 θ=θ+v=θ+αvεg=θ(1+α+α2+...+αn1)εg=θ11αεg(其中v=11αεg

因而梯度的变化量能够变为原来的11α倍,而且通过第二个公式可以得到,如果上一次和这一次的梯度改变量符号是相同的,那么就能够加速下降,幅度更大,就能够解决原先梯度下降的下降太慢的问题,而如果这一次和上一次的符号是相反的,那么这次就和上次相互抑制,减缓下降的幅度,减缓震荡,因而就解决了原始梯度下降中一直震荡的缺点,是不是很棒!

阅读全文
0 0
原创粉丝点击