zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    常用css3属性
    jQuery瀑布流
    jQuery事件对象
    jQuery动画
    面向对象复习
    php 面向对象
    git
    存储数据
    ajax
    对象
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421807.html
Copyright © 2011-2022 走看看