推荐学习资料:
[1] 从 SGD 到 Adam —— 深度学习优化算法概览(一)
[2] 深度学习——优化器算法Optimizer详解
[3] 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam
[4] 什么是指数加权平均、偏差修正?
这里仅记录公式,方便对比记忆,而不解释由来,其他细节可以看上面说的资料。
设:
- 参数向量为
θ
- 学习率为
η
- 用于数值稳定的接近0的常数
ϵ
- 用于计算指数平均的接近1的常数
γ、
β1、
β2
- 在
t 时刻损失函数对
θ 的梯度
gt=∇θJ(θ)
- 在
t 时刻的一阶动量
mt,根据
{g1,g2,⋯,gt} 算出
- 在
t 时刻的二阶动量
vt,根据
{g12,g22,⋯,gt2} 算出,其中
gt2=gt⊙gt
梯度更新公式为:
θt+1=θt−Gt(1)
各优化算法对
Gt 的计算不同。
对于 SGD,
Gt=ηgt(2)
对于 SGD with Momentum,
Gt=γGt−1+ηgt(3)
对于 Adagrad,
vt=i=1∑tgi2(4)
Gt=vt+ϵ
ηgt(5)
对于 RMSprop,
vt=γvt−1+(1−γ)gt2(6)
Gt=vt+ϵ
ηgt(7)
对于 Adam,
mt=β1mt−1+(1−β1)gt(8)
vt=β2vt−1+(1−β2)gt2(9)
m^t=1−β1tmt(10)
v^t=1−β2tvt(11)
Gt=v^t+ϵ
ηm^t(12)