北京短视频代运营,北京抖音广告片,北京抖音代运营公司欢迎您 ! 联系朗创|收藏本站|网站地图

朗创seo公司

北京专业抖音代运营广告片拍摄10年短视频运营经验!

咨询电话:13683819778

北京seo服务首选朗创网络营销
您的位置: 资讯中心 > 行业资讯 >

一篇文章理解了各种神经网络优化算法:从梯度下降到亚当方法

作者: 1 来源:朗创seo公司 发布日期: 2018-09-21 09:17:05
信息摘要:
在调整模型更新权重和偏差参数的方法时,您考虑过哪种优化算法可以使模型产生更好、更快的结果吗我们应该使用梯度下降法、随机梯度下降法或亚当法吗 模型中的一些参数用于计算

在调整模型更新权重和偏差参数的方法时,您考虑过哪种优化算法可以使模型产生更好、更快的结果吗我们应该使用梯度下降法、随机梯度下降法或亚当法吗
    
     模型中的一些参数用于计算测试集中目标值Y的真实值和预测值之间的偏差。基于这些参数,形成损失函数E(x)。
    
    
    
     模型的内部参数对模型的有效训练和产生准确的结果起着重要作用,因此需要采用多种优化策略和算法来更新和计算影响模型训练和模型输出的网络参数,从而提高模型的性能。S逼近或达到更优值。
    
     该算法利用每个参数的梯度值来更小化或更大化损失函数E(x)。
    
     函数梯度:导数dy/dx的多元表达式,用来表示Y相对于X的瞬时变化率。为了计算多变量函数的导数,用梯度代替导数,用偏导数代替c梯度和导数之间的主要区别是函数的梯度形成向量场。
    
     因此,导数被用来分析单变量函数,而梯度是基于多元函数产生的。这里不再解释更多的理论细节。
    
     二阶优化算法使用二阶导数(也称为Hessian方法)来更小化或更大化损失函数,由于二阶导数的计算成本很高,所以这种方法没有得到广泛的应用。
    
     网络更新参数的公式为:θ=θx(θ)。j(θ),这里是学习率,(θ)。J(θ)是损失函数J(θ)的梯度。
    
     目前,梯度下降法主要用来更新神经网络模型中的权重,即在一个方向上更新和调整模型的参数,使损失函数更小。
    
     2006年引入的反向传播技术使得训练深层神经网络成为可能。反向传播技术计算输入信号的乘积及其在正向传播中的相应权重,然后对这些乘积之和起激活作用。将输入信号转换成输出信号是模拟复杂非线性函数的重要手段。引入非线性激活函数,使模型学习几乎任何形式的函数映射,然后在网络反向传播过程中返回相关误差,通过梯度下降更新权值。通过计算误差函数E相对于权重参数W的梯度,在损失函数梯度的相反方向上更新权重参数。
    
     图1显示了权重更新过程与梯度向量误差相反,其中U曲线是梯度的。应当注意,当权重值W太小或太大时,将会出现较大的误差,需要更新和优化权重,使其成为适当的值,因此,我们试图找到一个局部更优值在相反的方向上的梯度。
    
     传统的批量梯度下降算法计算整个数据集的梯度,但仅进行一次更新,因此处理大型数据集时速度非常慢,难以控制,甚至导致内存溢出。
    
     权值更新的速度由学习速率_决定,在凸误差曲面上收敛到全局更优值,在非凸曲面上趋向于局部更优值。
    
     标准形式的批量梯度下降的另一个问题是在训练大型数据集时存在冗余的权重更新。
    
     随机梯度下降法(SGD)更新每个训练样本的参数,每次执行更新一次,执行速度更快。
    
     频繁的更新导致参数之间的高平方误差,并且损失函数随不同的强度而波动。这实际上是一件好事,因为它帮助我们找到新的、可能更好的局部极小,并且标准梯度下降将仅收敛到局部更优。
    
     然而,SGD的问题在于,频繁的更新和波动更终将收敛到更小值,并且由于波动将频繁地超调。
    
     图2:每个训练样本中高方差的参数更新将导致损失函数大幅波动,因此我们可能无法获得更小损失函数。
    
     另一种变型称为小批量梯度下降,可以解决参数更新和高方差的不稳定收敛问题。
    
     为了避免SGD和标准梯度下降的问题,一种改进的方法是Mini Batch Gradient Des.,它对每批N个训练样本只执行一次更新。
    
     2)利用更新的深度学习库中的通用矩阵优化方法,可以更有效地计算小批量数据的梯度。
    
     1。选择合适的学习速率是困难的,过小的学习速率会导致网络的收敛太慢,过大的学习速率会影响收敛,导致损失函数在更小的波动下,甚至出现梯度发散。
    
     2。另外,相同的学习速率并不适用于所有的参数更新,如果训练集数据稀疏,并且特征频率非常不同,则不应该更新到相同的程度,但是对于稀有特征,应该使用更大的更新速率。
    
     三。使神经网络中的非凸误差函数更小化的另一个关键挑战是避免陷入多个其他的局部更小值。事实上,问题不是由局部极小值引起的,而是由鞍点、一维向上倾斜而另一维向下倾斜的点引起的。叠加点通常被同一个误差平面所包围,这使得SGD算法很难去除,因为所有维的梯度都接近于零。
    
     SGD中的高方差振荡使得网络难以稳定收敛。为此,提出了利用动量法来优化相关方向的训练,减弱无关方向的振荡,从而加快SGD的训练。ATE载体。
    
     这里的动量与经典物理学中的动量是一致的,比如从山上扔球,在落下时收集动量,并且球的速度增加。
    
     动量项γ在梯度指向实际运动方向时增加,当梯度与实际运动方向相反时减小,这意味着动量项仅更新相关样本的参数,减少不必要的参数更新,从而快速、稳定的收敛收敛,减少了振荡过程。
    
     如果一个滚下山坡的球在斜坡上盲目地滑倒,这是非常不合适的。一个更聪明的球应该注意它的去向,所以当球再次向上倾斜时,它应该减速。
    
     事实上,当球到达曲线上的更低点时,动量是相当高的。因为高动量会导致球完全错过更小值,所以球不知道什么时候减速,所以它继续向上运动。
    
     Yurii Ne.v在1983年发表了一篇关于解决动量问题的论文,所以我们称这种方法为Nestrov梯度加速法。
    
     在该方法中,他建议根据之前的动量进行大跳跃,然后计算校正梯度,以便更新参数。锿。
    
     Ne.v梯度加速度(NAG)是一种利用动量项γV(t1)来改变参数θ,从而给出动量项预测能力的方法。因此,代替计算当前参数θ的梯度,我们可以通过相关参数的近似未来位置来有效地预测未来。
    
     现在,我们可以根据每个参数的重要性来调整和更新相应的参数,以便通过使网络更新适应误差函数的斜率并依次加速SGD来执行更大或更小的更新。
    
     Adagrad方法通过参数调整适当的学习速率_by,对稀疏参数进行实质性更新,对频繁参数稍加更新,非常适合处理稀疏数据。
    
     在时间步长中,Adagrad方法根据每个参数计算的过去梯度,为不同的参数θ设置不同的学习速率。
    
     以前,每个参数θ(I)使用相同的学习速率,并且每次更新每个参数θ。在每个时间步骤t中,Adagrad方法为每个参数θ选择不同的学习速率,更新相应的参数,然后对其进行向量化。在t参数(i)到g(t,i)的损失函数的梯度。
    
     Adagrad方法根据先前计算的参数梯度,在每个时间步长修改每个参数θ(i)的相应学习速率_i。
    
     AdGrad方法的主要优点是不需要人工学习来调整学习速率,大多数参数使用默认值0.01并且保持不变。
    
     因为每个增编是正的,并且在分母中积累了几个平方梯度,所以累积的和在训练期间持续增长。这反过来导致学习率下降到非常小的数量级,并且模型完全停止学习并停止获取。新的和额外的知识。
    
     由于学习速度越来越小,模型的学习能力迅速下降,收敛速度很慢,需要长时间的训练和学习,即学习速度正在下降。
    
     这是AdaGrad的扩展方法,它倾向于解决学习速率衰减的问题,Adadelta将先前梯度的窗口限制为固定大小的W,而不是累积所有以前的平方梯度。
    
     不同于先前对w的前方梯度的无效存储,梯度的和被递归地定义为所有前方梯度的衰减平均值。电流梯度。
    
     在前一种方法中,计算每个参数的相应学习速率,但是为什么不计算每个参数的相应动量变化并独立存储呢这是亚当算法提出的改进点。
    
     Adam算法称为自适应矩估计算法,它能够计算各参数的自适应学习率,该方法不仅存储了AdaDelta前一个平方梯度的指数衰减均值,而且保留了前一个梯度M(t)的指数衰减均值。CH与动量相似:
    
     在实际应用中,Adam方法效果良好,与其他自适应学习速率算法相比,该算法具有更快的收敛速度和更有效的学习效果,并能够纠正其它优化技术中存在的学习速率消失、学习速度慢、学习效率低等问题。方差或高方差参数更新导致损失函数的大波动。
    
     从以上动画可以看出,自适应算法在参数更新中能够快速收敛并找到正确的目标方向,而标准SGD、NAG和动量法收敛速度慢,难以找到正确的方向。
    
     在建立神经网络模型时,选择更优化器进行快速收敛和正确学习,并调整内部参数以更大限度地更小化损失函数。
    
     如果输入数据集是稀疏的,那么SGD、NAG和动量项可能不能很好地工作。因此,对于稀疏数据集,应该使用一些自适应学习速率方法,另一个优点是使用默认参数可以获得更优值,而不需要调整学习ra。人为地。
    
     如果要使训练深层网络模型快速收敛或神经网络更复杂,则应该使用Adam或其他自适应学习速率方法,因为这些方法在实践中更有效。
    
     量子位正在为在自动驾驶领域工作的学生或一线工程师组成一个自动驾驶技术小组。欢迎来到WeChat(qbitbot)。
    
     Qubits正在北京中关村招聘编辑、记者、运营商、产品等职位。详情请到公众对话界面回复:招聘。
    
    

咨询热线

13683819778