Momentum(动量/冲量)的理解及应用
2017-04-02 10:37
155 查看
1. 基本概念(Momentum vs SGD)
Momentum 用于加速 SGD(随机梯度下降)在某一方向上的搜索以及抑制震荡的发生。GD(gradient descent)
θt=θt−1−η∇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=θt−1−η∇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=γvt−1+η∇θ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
相关文章推荐
- Metabuilders.Webcontrols.Masterpages应用的一点理解
- 理解企业应用框架
- 【我翻译的文章】理解和应用F#中的“use”语法
- 2007-12-21 对三层应用序程的初识,及个人理解.
- 从NUnit中理解.NET自定义属性的应用
- 帮助理解可变参数的应用【转贴】
- C# 泛型的小应用,不知道理解的对不对
- 理解HTTP session原理及应用
- 理解HTTP session原理及应用
- 我所理解的计算机(三) 之 数据库、企业应用与歌剧
- WPF中MatrixTransform的理解与应用
- UML的硬伤?UML在系统分析、设计方面的应用理解
- 理解与应用LDAP服务器
- 理解HTTP session原理及应用
- 从NUnit中理解.NET自定义属性的应用(转载)
- 理解企业应用框架- -
- Java事件机制理解及应用
- 应用反编译命令JavaP理解String和StringBuffer的区别
- 深入理解.net framwork中的Application domain(应用域) 概念
- 关于DataRow和DataColumn的一点个人简单理解-.NET教程,数据库应用