GD | 公式 | 备注 |
---|---|---|
BGD | θ = θ − η ∇ J ( θ ) \theta=\theta-\eta\nabla J(\theta) θ=θ−η∇J(θ) | |
SGD | θ = θ − η ∇ J ( θ ; x ( i ) , y ( i ) ) \theta=\theta-\eta\nabla J(\theta;x^{(i)},y^{(i)}) θ=θ−η∇J(θ;x(i),y(i)) | 跳出局部极小;对学习率敏感 |
Mini-batch SGD | θ = θ − η ∇ J ( θ ; x ( i : i + n ) , y ( i : i + n ) ) \theta=\theta-\eta\nabla J(\theta;x^{(i:i+n)},y^{(i:i+n)}) θ=θ−η∇J(θ;x(i:i+n),y(i:i+n)) | 对batch szie敏感 |
【统一写法】 |
g
t
=
∇
J
(
θ
)
g_t=\nabla J(\theta)
gt=∇J(θ) m t = ϕ ( g 1 , . . . , g t ) m_t=\phi(g_1,...,g_t) mt=ϕ(g1,...,gt) v t = ψ ( g 1 , . . . g t ) v_t=\psi(g_1,...g_t) vt=ψ(g1,...gt) | |
重写SGD | m t = η g t m_t=\eta g_t mt=ηgt | |
Momentum |
m
t
=
γ
m
t
−
1
+
η
g
t
m_t=\gamma m_{t-1}+\eta g_t
mt=γmt−1+ηgt θ = θ − m t \theta=\theta-m_t θ=θ−mt | 累积梯度即累积之前更新方向、惯性,提升稳定性,减少振荡 |
Nesterov |
m
t
=
γ
m
t
−
1
+
η
∇
J
(
θ
−
γ
m
t
−
1
)
m_t=\gamma m_{t-1}+\eta \nabla J(\theta-\gamma m_{t-1})
mt=γmt−1+η∇J(θ−γmt−1) θ = θ − m t \theta=\theta-m_t θ=θ−mt | |
【Adaptive思想】 | AdaGrad 算法最大的特点是将历史梯度 L2 范数的倒数作为缩放学习率的因子。 直观上,一直拥有较大梯度的参数处于较陡的位置,它离最终收敛还有一段距离,因此我们可以选择较大的学习率而加快梯度下降的速度。而对于较小的梯度,它的位置相对而言比较平坦,且很可能处于接近收敛的范围,因此我们需要减小学习率而更谨慎地搜索最优解。 | |
AdaGrad | θ = θ − α v t + ϵ m t \theta=\theta-\frac{\alpha}{\sqrt{ v_t+\epsilon}}m_t θ=θ−vt+ϵαmt | 学习率自动由大变小,适用于稀疏梯度 |
进一步发展 |
J
(
θ
)
J(\theta)
J(θ)非凸和梯度较密集时,学习率快速衰退,模型的高维空间加剧。 为此提出RMSPROP,Adam,AdaDelta,NAdam;使用历史梯度平方的指数移动均值,更新更多依赖于过去几次迭代的梯度信息 | AdaDelta对学习率不敏感,自动学习 |
RMSprop |
m
t
=
g
t
m_t=g_t
mt=gt v t = E [ g 2 ] t v_t=E[g^2]_t vt=E[g2]t v t = γ v t − 1 + η g t v_t=\gamma v_{t-1}+\eta g_t vt=γvt−1+ηgt θ = θ − α v t + ϵ m t \theta=\theta-\frac{\alpha}{\sqrt{ v_t+\epsilon}}m_t θ=θ−vt+ϵαmt | 最常用,改进学习率过快衰减 |
Adam |
η
=
1
−
γ
\eta=1-\gamma
η=1−γ m t = β 1 m t − 1 + ( 1 − β 1 ) g t m_t=\beta_1 m_{t-1}+(1-\beta_1)g_t mt=β1mt−1+(1−β1)gt v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2 vt=β2vt−1+(1−β2)gt2 θ = θ − α v t + ϵ m t \theta=\theta-\frac{\alpha}{\sqrt{v_t+\epsilon}} m_t θ=θ−vt+ϵαmt | 结合一阶二阶 |
梯度下降查询表
最新推荐文章于 2020-12-29 15:36:40 发布