常用梯度下降算法SGD, Momentum, RMSprop, Adam详解

摘要

本文给出常用梯度下降算法的定义公式, 并介绍其使用方法.

相关

配套代码, 请参考文章 :

纯Python和PyTorch对比实现SGD, Momentum, RMSprop, Adam梯度下降算法

系列文章索引 :

https://blog.csdn.net/oBrightLamp/article/details/85067981

正文

1. SGD

随机梯度下降 (Stochastic Gradient Descent) 是最基础的神经网络优化方法.

Stochastic 一词是随机的意思, 表示每次都随机选择样本计算损失值和梯度, 进行参数更新.

随机选择样本非常重要, 主要是为了避免模型参数在某种潜在错误方向上走的过远, 导致收敛速度过慢.

1.1 算法定义

SGD 参数更新的算法 :
p = p − l r ∗ g p = p - lr * g p=plrg

1.2 使用方法

假设一个神经网络模型经过 n n n 次反向传播, 使用向量 g g g 表示所有求得的梯度, 初始参数为 p 0 p_0 p0, 求学习完成后的参数值 p n p_n pn.
g = ( g 1 , g 2 , g 3 , ⋯   , g n ) g = (g_1,g_2,g_3,\cdots,g_n) g=(g1,g2,g3,,gn)
求解过程 :
p 1 = p 0 − l r ∗ g 1 p 2 = p 1 − l r ∗ g 2 p 3 = p 2 − l r ∗ g 3 ⋮ p n = p n − 1 − l r ∗ g n p_1 = p_0 - lr * g_1\\ p_2 = p_1 - lr * g_2\\ p_3 = p_2 - lr * g_3\\ \vdots\\ p_n = p_{n-1} - lr * g_{n}\\ p1=p0lrg1p2=p1lrg2p3=p2lrg3pn=pn1lrgn

2. Momentum SGD

Momentum SGD 是基于动量的算法.

2.1 算法定义

Momentum SGD 参数更新的算法 :
v = m ∗ v + g p = p − l r ∗ v v = m * v + g \\ p = p - lr * v v=mv+gp=plrv

其中 p, g, v 和 m 分别表示参数, 梯度, 速度和动量.
另外一种定义是 :
v = m ∗ v + l r ∗ g p = p − v v = m * v + lr * g \\ p = p - v v=mv+lrgp=pv

本文使用前一种算法, 也是 PyTorch 推荐使用的算法.

Momentum SGD 的必要参数是动量 m, 一般取 m = 0.9 m=0.9 m=0.9

注意, 若 m = 0 m=0 m=0 , Momentum SGD 将退化成 SGD 算法.

2.2 使用方法

假设一个神经网络模型经过 n n n 次反向传播, 使用向量 g g g 表示所有求得的梯度, 初始参数为 p 0 p_0 p0, 初始速度为 0, 动量参数为 m m m, 学习率为 l r lr lr , 求学习完成后的参数值 p n p_n pn.

求解过程 :
v 1 = g 1 ,      p 1 = p 0 − l r ∗ v 1 v 2 = m ∗ v 1 + g 2 ,      p 2 = p 1 − l r ∗ v 2 v 3 = m ∗ v 2 + g 3 ,      p 3 = p 2 − l r ∗ v 3 ⋮ v n = m ∗ v ( n − 1 ) + g n ,      p n = p ( n − 1 ) − l r ∗ v ( n ) v_1 = g_1, \;\;p_1 = p_0 - lr * v_1\\ v_2 =m * v_1 + g_2, \;\;p_2 = p_1 - lr * v_2\\ v_3 =m * v_2 + g_3, \;\;p_3 = p_2 - lr * v_3\\ \vdots\\ v_n =m * v_{(n-1)} + g_n, \;\;p_n = p_{(n-1)} - lr * v_{(n)}\\ v1=g1,p1=p0lrv1v2=mv1+g2,p2=p1lrv2v3=mv2+g3,p3=p2lrv3vn=mv(n1)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值