网站建设市场分析做电力 公司网站
web/
2025/9/28 2:43:58/
文章来源:
网站建设市场分析,做电力 公司网站,老公的姐姐一直用我们的手机号码,thinkphp网站开发实例教程学习需要#xff0c;总结一些常用优化器。 目录 前言SGD#xff1a;随机梯度下降BGD#xff1a;批量梯度下降MBGD#xff1a;小批量梯度下降MomentumAdaGradRMSpropAdam: Adaptive Moment EstimationAdamW参考文章 前言
优化器的本质是使用不同的策略进行参数更新。常用的…学习需要总结一些常用优化器。 目录 前言SGD随机梯度下降BGD批量梯度下降MBGD小批量梯度下降MomentumAdaGradRMSpropAdam: Adaptive Moment EstimationAdamW参考文章 前言
优化器的本质是使用不同的策略进行参数更新。常用的方法就是梯度下降那梯度下降是指在给定待优化的模型参数 θ ∈ R d \theta \in R^d θ∈Rd和目标函数 J ( θ ) J(\theta) J(θ)算法通过沿梯度 ∇ J ( θ ) \nabla J(\theta) ∇J(θ)的反方向更新权重 θ \theta θ来最小化目标函数。 学习率 μ \mu μ决定了每一时刻的更新步长。对于每一个时刻 t 我们可以用下述公式描述梯度下降的流程 θ t 1 θ t − μ ∇ J ( θ ) \theta_{t1} \theta_{t} - \mu \nabla J(\theta) θt1θt−μ∇J(θ) 梯度下降法目前主要分为三种方法区别在于每次参数更新时计算的样本数据量不同批量梯度下降法(BGD, Batch Gradient Descent)随机梯度下降法(SGD, Stochastic Gradient Descent)及小批量梯度下降法(Mini-batch Gradient Descent)。
SGD随机梯度下降
随机梯度下降是指在一个批次的训练样本中我随机挑选一个样本计算其关于目标函数的梯度然后用此梯度进行梯度下降。 设选择的样本为 ( x i , y i ) (x^i,y^i) (xi,yi)首先计算其梯度 ∇ J ( θ , x i , y i ) \nabla J(\theta,x^i,y^i) ∇J(θ,xi,yi)然后进行权值更新 θ t 1 θ t − μ ∇ J ( θ , x i , y i ) \theta_{t1} \theta_{t} - \mu \nabla J(\theta,x^i,y^i) θt1θt−μ∇J(θ,xi,yi) SGD的优点是实现简单、效率高缺点是收敛速度慢、容易陷入局部最小值迭代次数多
BGD批量梯度下降
与SGD对应的BGD是对整个批次的训练样本都进行梯度计算。 设批样本为 { ( x 1 , y 1 ) , . . . , ( x n , y n ) } \{(x^1,y^1),..., (x^n,y^n)\} {(x1,y1),...,(xn,yn)}首先计算所有的样本梯度的平均值 1 n ∑ i 1 n ∇ J ( θ , x i , y i ) \frac{1}{n} \sum _{i1} ^{n} \nabla J(\theta,x^i,y^i) n1∑i1n∇J(θ,xi,yi)然后进行梯度更新: θ t 1 θ t − μ 1 n ∑ i 1 n ∇ J ( θ , x i , y i ) \theta_{t1} \theta_{t} - \mu \frac{1}{n} \sum _{i1} ^{n} \nabla J(\theta,x^i,y^i) θt1θt−μn1i1∑n∇J(θ,xi,yi) BGD得到的是一个全局最优解但是每迭代一步都要用到训练集的所有数据如果样本数巨大大那上述公式迭代起来则非常耗时模型训练速度很慢迭代次数少
MBGD小批量梯度下降
是BGD和SGD的折中从训练样本中选取一小批样本进行梯度计算然后更新梯度 θ t 1 θ t − μ 1 b ∑ i 1 b ∇ J ( θ , x i , y i ) \theta_{t1} \theta_{t} - \mu \frac{1}{b} \sum _{i1} ^{b} \nabla J(\theta,x^i,y^i) θt1θt−μb1i1∑b∇J(θ,xi,yi)
Momentum
指数加权移动平均是一种常用的序列数据处理方式用于描述数值的变化趋势本质上是一种近似求平均的方法。计算公式如下 v t β v t − 1 ( 1 − β ) θ t v_tβv _{t−1}(1−β)θ_t vtβvt−1(1−β)θt v t v_t vt 表示第t个数的估计值 β \beta β为一个可调参数能表示 v t − 1 v_{t-1} vt−1 的权重 θ t \theta_t θt 表示第t个数的实际值
Momentum就是在普通的梯度下降法中引入指数加权移动平均即定义一个动量它是梯度的指数加权移动平均值然后使用该值代替原来的梯度方向来更新。定义的动量为 v t β v t − 1 ( 1 − β ) ∇ θ J ( θ t ) v_tβv _{t−1}(1−β)\nabla_{ \theta} J(\theta_t) vtβvt−1(1−β)∇θJ(θt) 因此梯度下降表达式为 θ t 1 θ t − η v t \theta_{t1}\theta_{t} - η v_t θt1θt−ηvt 普通的随机梯度下降法中由于无法计算损失函数的确切导数嘈杂的数据会使下降过程并不朝着最佳方向前进使用加权平均能对嘈杂数据进行一定的屏蔽使前进方向更接近实际梯度。此外随机梯度下降法在局部极小值极有可能被困住但Momentum由于下降方向由最近的一些数共同决定能在一定程度反应总体的最佳下降方向所以被困在局部最优解的可能会减小。
AdaGrad
Adagrad是对学习率进行了一个约束对于经常更新的参数由于已经积累了大量关于它的知识不希望被单个样本影响太大所以希望学习速率慢一些对于偶尔更新的参数由于了解的信息太少希望能从每个偶然出现的样本身上多学一些即需要学习率大一些。 该方法开始使用二阶动量才意味着“自适应学习率”优化算法时代的到来。二阶动量是用来度量历史更新频率的即迄今为止所有梯度值的平方和。二阶动量越大学习率就越小这一方法在稀疏数据场景下表现非常好。 v t ∑ i 1 n g t 2 v_{t} \sum _{i1} ^{n} g^2_t vti1∑ngt2 θ t 1 θ t − η v t ϵ \theta_{t1}\theta_{t} - \frac{η}{\sqrt{v_t \epsilon}} θt1θt−vtϵ η 缺点 仍需要手工设置一个全局学习率 , 如果 设置过大的话会使regularizer过于敏感对梯度的调节太大 中后期分母上梯度累加的平方和会越来越大使得参数更新量趋近于0使得训练提前结束无法学习
RMSprop
RMSProp算法修改了AdaGrad的梯度平方和累加为指数加权的移动平均还将学习速率除以平方梯度的指数衰减平均值使得其在非凸设定下效果更好。设定参数全局初始率η默认设为0.001decay rate β \beta β默认设置为0.9一个极小的常量 通常为10e-6。E是取期望的意思。 E [ g 2 ] t β E [ g 2 ] t ( 1 − β 1 ) g t 2 E[g^2]_t \beta E[g^2]_t(1-\beta _{1})g^2_{t} E[g2]tβE[g2]t(1−β1)gt2 θ t 1 θ t − η E [ g 2 ] t ϵ g t \theta_{t1}\theta_{t} - \frac{η}{\sqrt{E[g^2]_t} \epsilon}g_t θt1θt−E[g2]t ϵηgt
Adam: Adaptive Moment Estimation
对AdaGrad的优化一种通过计算模型参数的梯度以及梯度平方的加权平均值一阶动量和二阶动量来调整模型的参数。 g t ∇ θ J ( θ t ) g_t \nabla_{ \theta} J(\theta_t) gt∇θJ(θt) 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 _{2}v_{t-1} (1-\beta _{2})g^2_{t} vtβ2vt−1(1−β2)gt2 m t ^ m t 1 − β 1 t \hat{m_t}\frac{m_t}{1-\beta^t_{1}} mt^1−β1tmt v t ^ v t 1 − β 2 t \hat{v_t}\frac{v_t}{1-\beta^t_{2}} vt^1−β2tvt θ t 1 θ t − η v t ^ ϵ m t ^ \theta_{t1}\theta_{t} - \frac{η}{\sqrt{\hat{v_t}} \epsilon}\hat{m_t} θt1θt−vt^ ϵηmt^ 其中各个变量含义如下 g t g_t gt模型参数在第t次迭代时的梯度 m t 和 v t m_t和v_t mt和vt模型参数在第t次迭代时的一阶动量和二阶动量 β 1 和 β 2 \beta _{1}和\beta _{2} β1和β2超参数默认是0.9和0.999 β 1 t 和 β 2 t \beta _{1}^{t}和\beta _{2}^{t} β1t和β2t β 1 \beta _{1} β1和 β 2 \beta _{2} β2的t次方。 m t ^ \hat{m_t} mt^和 v t ^ \hat{v_t} vt^ t是梯度的偏差纠正后的移动平均值 Adam优化器的主要优点是它能够自适应地调整每个参数的学习率从而提高模型的收敛速度和泛化能力。
AdamW
Adam 虽然收敛速度快但没能解决参数过拟合的问题。学术界讨论了诸多方案其中包括在损失函数中引入参数的 L2 正则项。这样的方法在其他的优化器中或许有效但会因为 Adam 中自适应学习率的存在而对使用 Adam 优化器的模型失效因为正则项同时存在于adam的分子和分母参考adam的公式这样正则就抵消了。AdamW就是在AdamL2正则化的基础上进行改进的算法。 以往的L2正则是直接加在损失函数上比如加入正则损失函数变化如下 L l 2 ( θ ) L ( θ ) 1 2 λ ∣ ∣ θ ∣ ∣ 2 L_{l_2}(\theta)L(\theta) \frac{1}{2}λ||\theta||^2 Ll2(θ)L(θ)21λ∣∣θ∣∣2 图片中红色是上述的AdamL2 regularization的方式绿色就是adamw即Adam weight decay的方式。 为什么这么做bert给出的解释是
参考文章
[1] 梯度下降优化算法Momentum [2]多种梯度下降优化算法总结分析
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83100.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!