Momentum(动量/冲量)的理解及应用

1. 基本概念(Momentum vs SGD)

Momentum 用于加速 SGD(随机梯度下降)在某一方向上的搜索以及抑制震荡的发生。

  • GD(gradient descent)

    θt=θt1ηJθ(θ)θ=θηJ(θ)

    for i in range(num_epochs):
        params_grad = evaluate_gradient(loss_function, data, params)
        params = params - learning_rate * params_grad
  • SGD(stochastic gradient descent)

    θt=θt1ηJθ(θ;x(i),y(i))θ=θηJ(θ;x(i),y(i))

    for i in range(num_epochs):
        np.random.shuffle(data)
        for example in data:
            params_grad = evaluate_gradient(loss_function, example, params)
            params = params - learning_rate * params_grad
  • Momentum(冲量/动量)

    vt=γvt1+ηθJ(θ)θ=θvt

    for i in range(num_epochs):
        params_grad = evaluate_gradient(loss_function, data, params)
        v = gamma*v + learning_rate*params_grad
        params = params - v

    γ 即为此处的动量,要求 γ<1,一般取 γ=0.9 或者更小的值,如本文第二节所示,还可以在迭代过程中设置可变的 γ

2. 可变动量设置

maxepoch = 50;
initialmomentum = .5;
finalmomentum = .9;

for i = 1:maxepoch
    ...
    if i < maxepoch/2
        momentum = initialmomentum
    else
        momentum = finalmomentum
    end
    ... 
end

转载于:https://www.cnblogs.com/mtcnn/p/9421806.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值