大家好,欢迎来到IT知识分享网。
文章目录
1. 梯度下降法(batch gradient densent BGD)
全局最优
每次迭代都需要把所有的样本都送入,这样的好处是每次迭代都顾及了全部的样本,做的是全局最优化。
2. 随机梯度下降法 (Stochastic gradient descent SGD)
随机的从样本中抽出一个样本进行梯度的更新
针对梯度下降法训练速度慢的缺点,提出了随机梯度下降算法,随机梯度下降算法是从样本中随机抽出一组,训练后按梯度更新一次,然后再抽取一组,再更新一次,在样本量极其大的情况下,可能不用训练完所有的样本就可以获得一个损失值在可接受范围之内的模型了。
3. 小批量梯度下降 (Mini-batch gradient descent MBGD)
找一波数据计算梯度,使用均值更新参数
SGD相对来说要快得多,但是也有存在问题,由于单个样本的训练可能带来很多噪声使得SGD并不是每次迭代都向着整体优化方向,因此在刚开始训练时可能收敛的很快,但是训练一段时间后就会变得很慢。在此基础上又提出了小批量梯度下降法,它是每次从样本中随机抽取一小批进行训练,而不是一组,这样既保证了效果又保证了速度。
4. 动量法
对梯度进行平滑处理,防止振幅过大
mini-batch SGD算法虽然这种算法能够带来很好的训练速度,但是在到达最优点的时候并不能够总是真正到达最优点,而是在最优点附近徘徊。
另一个缺点就是mini-batch SGD需要我们挑选一个合适的学习率,当我们采用小的学习率的时候,会导致网络在训练的时候收敛太慢;当我们采用大的学习率的时候,会导致在训练过程中优化的幅度跳过函数的范围,也就是跳过最优点。我们所希望的仅仅是网络在优化的时候网络的损失函数有一个很好的收敛速度同时又不至于摆动幅度太大。
5. AdaGrad
自适应学习率
AdaGrad算法就是将每一个参数的每一次迭代的梯度取平方累加后再开方,用全局学习率除以这个数,作为学习率的动态更新,从而达到自适应学习率的效果
g r a d i e n t = h i s t o r y g r a d i e n t + ( Δ w ) 2 gradient=history_{gradient}+(\Delta w)^2 gradient=historygradient+(Δw)2
w = w − α g r a d i n e t + δ Δ w , δ 为小常数,为了数值稳定大约设置为 1 0 − 7 w=w-\frac{\alpha }{\sqrt{gradinet}+\delta }\Delta w , \delta 为小常数,为了数值稳定大约设置为 10^{-7} w=w−gradinet+δαΔw,δ为小常数,为了数值稳定大约设置为10−7
6. RMSProp
让步长越来越小
Momentum优化算法中,虽然初步解决了优化中摆动幅度大的问题,为了进一步优化损失函数在更新中存在摆动幅度过大的问题,并且进一步加快函数的收敛速度,RMSProp算法对参数的梯度使用了平方加权平均数。
g r a d i e n t = 0.8 ∗ h i s t o r y g r a d i e n t + 0.2 ∗ ( Δ w ) 2 gradient=0.8*history_{gradient}+0.2*(\Delta w)^2 gradient=0.8∗historygradient+0.2∗(Δw)2
w = w − α g r a d i n e t + δ Δ w w=w- \frac{\alpha}{\sqrt{gradinet}+\delta }\Delta w w=w−gradinet+δαΔw
7. Adam
动量法+RMSprop,学习率能够自适应,梯度的振幅不会过大
Adam(Adaptive Moment Estimation)算法是将Momentum算法和RMSProp算法结合起来使用的一种算法,能够达到防止梯度的幅度过大,同时还能够加快收敛速度
a. 需要初始化梯度的累积量和平方累积量
v w = 0 , s w = 0 v_w=0,s_w=0 vw=0,sw=0
b. 第 t 轮训练中,我们首先可以计算得到 Momentum 和 RMSProp 的参数更新
v w = 0.8 v + 0.2 Δ w , M o m e n t u m 计算的梯度 v_w=0.8v+0.2\Delta w,Momentum计算的梯度 vw=0.8v+0.2Δw,Momentum计算的梯度
s w = 0.8 ∗ s + 0.2 ∗ ( Δ w ) 2 , R M S P r o p 计算的梯度 s_w=0.8 * s+0.2*(\Delta w)^2,RMSProp 计算的梯度 sw=0.8∗s+0.2∗(Δw)2,RMSProp计算的梯度
c. 对其中的值进行处理后,得到
w = w − α s w + δ v w w=w-\frac{\alpha }{\sqrt{s_w} +\delta }v_w w=w−sw+δαvw
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118100.html