| 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敏感 |
| 【统一写法】 | gt=∇J(θ)g_t=\nabla J(\theta)gt=∇J(θ) mt=ϕ(g1,...,gt)m_t=\phi(g_1,...,g_t)mt=ϕ(g1,...,gt) vt=ψ(g1,...gt)v_t=\psi(g_1,...g_t)vt=ψ(g1,...gt) | |
| 重写SGD | mt=ηgtm_t=\eta g_tmt=ηgt | |
| Momentum | mt=γmt−1+ηgtm_t=\gamma m_{t-1}+\eta g_tmt=γmt−1+ηgt θ=θ−mt\theta=\theta-m_tθ=θ−mt | 累积梯度即累积之前更新方向、惯性,提升稳定性,减少振荡 |
| Nesterov | mt=γmt−1+η∇J(θ−γmt−1)m_t=\gamma m_{t-1}+\eta \nabla J(\theta-\gamma m_{t-1})mt=γmt−1+η∇J(θ−γmt−1) θ=θ−mt\theta=\theta-m_tθ=θ−mt | |
| 【Adaptive思想】 | AdaGrad 算法最大的特点是将历史梯度 L2 范数的倒数作为缩放学习率的因子。 直观上,一直拥有较大梯度的参数处于较陡的位置,它离最终收敛还有一段距离,因此我们可以选择较大的学习率而加快梯度下降的速度。而对于较小的梯度,它的位置相对而言比较平坦,且很可能处于接近收敛的范围,因此我们需要减小学习率而更谨慎地搜索最优解。 | |
| AdaGrad | θ=θ−αvt+ϵmt\theta=\theta-\frac{\alpha}{\sqrt{ v_t+\epsilon}}m_tθ=θ−vt+ϵαmt | 学习率自动由大变小,适用于稀疏梯度 |
| 进一步发展 | J(θ)J(\theta)J(θ)非凸和梯度较密集时,学习率快速衰退,模型的高维空间加剧。 为此提出RMSPROP,Adam,AdaDelta,NAdam;使用历史梯度平方的指数移动均值,更新更多依赖于过去几次迭代的梯度信息 | AdaDelta对学习率不敏感,自动学习 |
| RMSprop | mt=gtm_t=g_tmt=gt vt=E[g2]tv_t=E[g^2]_tvt=E[g2]t vt=γvt−1+ηgtv_t=\gamma v_{t-1}+\eta g_tvt=γvt−1+ηgt θ=θ−αvt+ϵmt\theta=\theta-\frac{\alpha}{\sqrt{ v_t+\epsilon}}m_tθ=θ−vt+ϵαmt | 最常用,改进学习率过快衰减 |
| Adam | η=1−γ\eta=1-\gammaη=1−γ mt=β1mt−1+(1−β1)gtm_t=\beta_1 m_{t-1}+(1-\beta_1)g_tmt=β1mt−1+(1−β1)gt vt=β2vt−1+(1−β2)gt2v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2vt=β2vt−1+(1−β2)gt2 θ=θ−αvt+ϵmt\theta=\theta-\frac{\alpha}{\sqrt{v_t+\epsilon}} m_tθ=θ−vt+ϵαmt | 结合一阶二阶 |
梯度下降查询表
最新推荐文章于 2025-07-16 17:51:08 发布
本文深入解析了梯度下降算法的各种变种,包括批量梯度下降(BGD)、随机梯度下降(SGD)、动量法(Momentum)、Nesterov加速梯度(NAG)以及自适应学习率算法如AdaGrad、RMSprop、Adam等。探讨了不同算法的特点及适用场景,为读者提供了优化算法的全面理解。
729

被折叠的 条评论
为什么被折叠?



