1. 基本概念(Momentum vs SGD)

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

  • GD(gradient descent)

    θt=θt−1−η∇Jθ(θ)⇒θ=θ−η∇J(θ)

    \theta_t=\theta_{t-1}-\eta \nabla J_\theta(\theta) ⇒ \quad \theta = \theta-\eta\nabla J(\theta)

    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=θt−1−η∇Jθ(θ;x(i),y(i))⇒θ=θ−η∇J(θ;x(i),y(i))

    \theta_t=\theta_{t-1}-\eta \nabla J_\theta(\theta;x^{(i)}, y^{(i)}) ⇒ \quad \theta = \theta-\eta\nabla J(\theta;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=γvt−1+η∇θJ(θ)θ=θ−vt

    \begin{split}&v_t=\gamma v_{t-1}+\eta\nabla_\theta J(\theta)\\&\theta=\theta-v_t\end{split}

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

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

2. 可变动量设置

maxepoch = 50;
initialmomentum = .5;
finalmomentum = .9;for i = 1:maxepoch...if i < maxepoch/2momentum = initialmomentumelsemomentum = finalmomentumend...
end

Momentum(动量/冲量)的理解及应用相关推荐

  1. 路遥知马力——Momentum动量梯度

    NAG:在滑板下降过程中 也就是速度加快的时候 增大水平方向的力(累计的动量方向) 而在上升的过程中 也就是速度下降的时候 减少垂直方向的力(当前的梯度方向) 两种情况下 的最终结果 都是加大了往最优 ...

  2. 一阶动量与二阶动量的角度理解优化

    对于一阶动量与二阶动量的理解: 我的理解是一阶动量为过去各个时刻梯度的线性组合,而二阶动量自然是过去各个时刻梯度的平方的线性组合.举个例子:我们取 为最近两个时间步的加权和,如(这里的加权值之和不一定 ...

  3. weight decay(权值衰减)、momentum(冲量)和normalization

    一.weight decay(权值衰减)的使用既不是为了提高你所说的收敛精确度也不是为了提高收敛速度,其最终目的是防止过拟合.在损失函数中,weight decay是放在正则项(regularizat ...

  4. 深度学习学习笔记 --- 动量momentum

    一.动量momentum的由来 训练网络时,通常先对网络的初始值按照某种分布进行初始化,如:高斯分布.初始化权值操作对最终的网络性能影响比较大,合适的网络初始权值操作能够使损失函数在训练过程中收敛速度 ...

  5. 深度学习中的动量momentum

    训练网络时,通常先对网络的初始权值按照某种分布进行初始化,如:高斯分布.初始化权值操作对最终网络的性能影响比较大,合适的网络初始权值能够使得损失函数在训练过程中的收敛速度更快,从而获得更好的优化结果. ...

  6. 冲量(momentum)的原理与Python实现

    冲量(momentum)的原理与Python实现 前言 参考:https://www.jianshu.com/p/58b3fe300ecb 梯度下降法(Gradient Descent)是机器学习中最 ...

  7. talib 中文文档(八): Momentum Indicator Functions 动量指标

    Momentum Indicator Functions ADX - Average Directional Movement Index 函数名:ADX 名称:平均趋向指数 简介:使用ADX指标,指 ...

  8. 梯度下降法快速教程 | 第二章:冲量(momentum)的原理与Python实现

    北京 | 深度学习与人工智能研修 12月23-24日 再设经典课程 重温深度学习阅读全文> 01 前言 梯度下降法(Gradient Descent)是机器学习中最常用的优化方法之一,常用来求解 ...

  9. Talib中文文档(二):Momentum Indicators 动量指标

    ADX - Average Directional Movement Index 函数名:ADX 名称:平均趋向指数 简介:使用ADX指标,指标判断盘整.振荡和单边趋势. 公式: 一.先决定股价趋势( ...

最新文章

  1. Jmeter调试工具---Debug Sampler
  2. 【五线谱】五线谱的常用符号 ( 花连谱号 | 高音谱号 | 低音谱号 | 休止符 | 小节线 )
  3. 对于初学者学习Java语言的建议(转载)
  4. 用计算机计算板书,用计算器计算教案板书设计
  5. es6 --- Promise.all等待多个异步任务执行
  6. 流程管理软件如何适应变化
  7. delphi 中如果不进行 closehandle 会怎么样_心理学:当你迷茫了,请坚持做三件事,你的未来会越来越好...
  8. 浮动元素的均匀分布和两端对齐
  9. 加速包可能没用!12306屏蔽多个抢票软件
  10. html文字自适应屏幕居中显示,DIV+CSS经典布局[宽度自适应][自动屏幕居中]的实现...
  11. Xcode 插件失效的临时解决方案
  12. Unity 协同程序
  13. 使用AMOS软件构建结构方程模型
  14. python之pygame安装教程_Pygame安装教程
  15. 度量学习中的马氏距离
  16. html 自动获取屏幕分辨率,HTML5教程 如何获取手机屏幕分辨率和浏览器分辨率
  17. layui多图片上传并限制上传的图片数量
  18. 基于python的音乐数据分析_基于Python的亚马逊音乐产品评论分析
  19. 人工智能AI实训平台
  20. Fuchsia编译系统的GN结构

热门文章

  1. linux在哪里储存变量值,关于linux:在bash中,如何在变量中存储返回值?
  2. php算法求出一个数可以被分解成多少个_小学数学必考的34个数学重难点公式,赶紧给孩子收藏!...
  3. Maven的性质与部署整理
  4. thriftserver与spark application的区别
  5. MySQL5.7安装教程(windows .zip)
  6. linux内核版本2 3 20,redhat9装配RTLINUX-3.2,内核版本为Kernel-2.4.23
  7. 鸿蒙OS的指纹储存在哪里,鸿蒙OS发布以后,我们去哪里学习?
  8. linux查看日历_能从远程获得乐趣的 Linux 命令 | Linux 中国
  9. Bug(二)——error LNK1104:无法打开“opengl32.lib”
  10. 设计模式综和实战项目x-gen系列一