随机梯度下降(Stochastic Gradient Descent)SGD
经典的梯度下降法每次对模型参数更新时,需要遍历所有的训练数据。随机梯度下降法用单个训练样本的损失来近似平均损失。
θt+1=θt−ηgt(公式1) \theta_{t+1} = \theta_{t}-\eta g_t (公式1) θt+1=θt−ηgt(公式1)
小批量梯度下降法(Mini-Batch Gradient Descent)
把SGD中用单个训练样本改成用m个,实际中有这么几个问题:
- 如何选取m:m一般是2的幂,方便指数运算
- 如何挑选m个训练数据:为了避免数据特定顺序给算法收敛性带来的影响,一般每次训练前都需要随机排序,然后按照随机后的顺序依次取m个
- 如何选取学习速率(learning rate lr)η\etaη:开始时用较大的学习速率,进入平台期后,用较小的学习速率
Momentum 动量方法 保持原来一定的方向
简单来说就是把当前的负梯度和前一步的负梯度加一个权重,保持一定之前的速度,在前面公式1的基础上,
vt=γvt−1+ηgtθt+1=θt−vt(公式2) v_t = \gamma v_{t-1} + \eta g_t \\ \theta_{t+1} = \theta_{t}-v_t (公式2) vt=γvt−1+ηgtθt+1=θt−vt(公式2)
Adagrad 历史梯度平方和来降learning rate
适合做广告、推荐精排中dense部分的优化器
θt+1=θt−η这个方向上历史梯度平方和gt(公式3) \theta_{t+1} = \theta_{t}-\frac{\eta}{\sqrt{这个方向上历史梯度平方和}} g_t (公式3) θt+1=θt−这个方向上历史梯度平方和ηgt(公式3)
展开写准确点就是
θt+1=θt−η1vt+ϵgtvt=vt−1+gt2gt=∇θJ(θt)+αθt \theta_{t+1} = \theta_{t}- \eta \frac{1}{\sqrt{v_t+\epsilon}}g_t \\ v_t = v_{t-1}+g_t^2 \\ g_t = \nabla_\theta J(\theta_t)+\alpha \theta_t θt+1=θt−ηvt+ϵ1gtvt=vt−1+gt2gt=∇θJ(θt)+αθt
其中αθt\alpha \theta_tαθt代表着L2正则项的梯度
RMSProp (Root Mean Square) 可以看成是Adam的简化版,Adagrad对二阶矩过大进行修正
RMSProp is an unpublished adaptive learning rate optimizer proposed by Geoff Hinton.
θt+1=θt−ηgtE(gt2)(公式5) \theta_{t+1} = \theta_{t}-\eta \frac{g_t}{\sqrt{E(g_t^2)}} (公式5) θt

本文深入探讨了各种优化算法,包括随机梯度下降、小批量梯度下降、动量方法、Adagrad、RMSProp、Adam及其变种,如AdamW、Lion,并对比了它们在不同场景下的应用及优缺点。
最低0.47元/天 解锁文章
1104

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



