深度学习优化算法总结
動量(Momentum)算法
動量(Momentum)的引入可以解決“峽谷”和“鞍點(diǎn)”問題的同時(shí)可以加速SGD
在高曲率、小幅但是方向一致的梯度的情況下,原始的 SGD 在下降過程中會發(fā)生來回震蕩;或者在鞍點(diǎn)處因?yàn)橘|(zhì)量小速度很快減為 0,導(dǎo)致無法越過平地。動量方法使軌跡更加穩(wěn)定;同時(shí)因?yàn)樵诎包c(diǎn)處由于動量的作用,更容易越過平地。
SDG
加入動量
參數(shù)更新公式
其中,動量算法的變量 v 速度,相關(guān)的超參數(shù) α(0.9)。原始 SGD 每次更新的步長只是梯度乘以學(xué)習(xí)率;加入動量的SDG的步長也和歷史梯度序列的大小和排列,即使存在許多連續(xù)的梯度指向相同的方向時(shí),步長會被不斷增大;
動量算法描述
動量算法會在負(fù)梯度方向上不斷加速,直到達(dá)到最終速度。在實(shí)踐中, α 的一般取 0.5, 0.9, 0.99,分別對應(yīng)最大2 倍、10 倍、100 倍的步長,和學(xué)習(xí)率一樣,α 也可以使用某種策略在訓(xùn)練時(shí)進(jìn)行自適應(yīng)調(diào)整;一般初始值是一個(gè)較小的值,隨后會慢慢變大。自適應(yīng)學(xué)習(xí)率的優(yōu)化方法NAG 算法(Nesterov 動量)
NAG 把梯度計(jì)算放在對參數(shù)施加當(dāng)前速度之后。這個(gè)“提前量”的設(shè)計(jì)讓算法有了對前方環(huán)境“預(yù)判”的能力。Nesterov 動量可以解釋為往標(biāo)準(zhǔn)動量方法中添加了一個(gè)修正因子。NAG 算法描述
自適應(yīng)學(xué)習(xí)率的優(yōu)化算法
AdaGrad
該算法的思想是獨(dú)立地適應(yīng)模型的每個(gè)參數(shù):具有較大偏導(dǎo)的參數(shù)相應(yīng)有一個(gè)較大的學(xué)習(xí)率,而具有小偏導(dǎo)的參數(shù)則對應(yīng)一個(gè)較小的學(xué)習(xí)率具體來說,每個(gè)參數(shù)的學(xué)習(xí)率會縮放各參數(shù)反比于其歷史梯度平方值總和的平方根AdaGrad 算法描述
全局學(xué)習(xí)率 并沒有更新,而是每次應(yīng)用時(shí)被縮放學(xué)習(xí)率是單調(diào)遞減的,訓(xùn)練后期學(xué)習(xí)率過小會導(dǎo)致訓(xùn)練困難,甚至提前結(jié)束需要設(shè)置一個(gè)全局的初始學(xué)習(xí)率RMSProp
RMSProp 主要是為了解決 AdaGrad 方法中學(xué)習(xí)率過度衰減的問題:根據(jù)平方梯度的整個(gè)歷史來收縮學(xué)習(xí)率,可能使得學(xué)習(xí)率在達(dá)到局部最小值之前就變得太小而難以繼續(xù)訓(xùn)練;RMSProp 使用指數(shù)衰減平均(遞歸定義),使其能夠在找到某個(gè)“凸”結(jié)構(gòu)后快速收斂;此外,RMSProp 還加入了一個(gè)超參數(shù) ρ 用于控制衰減速率。RMSProp?建議的初始值:全局學(xué)習(xí)率 =1e-3,衰減速率 ρ=0.9
RMSProp 算法描述
帶?Nesterov 動量的 RMSProp
RMSProp 已被證明是一種有效且實(shí)用的深度神經(jīng)網(wǎng)絡(luò)優(yōu)化算法。RMSProp 依然需要設(shè)置一個(gè)全局學(xué)習(xí)率,同時(shí)又多了一個(gè)超參數(shù)(推薦了默認(rèn)值)。Adam
Adam 在 RMSProp 方法的基礎(chǔ)上更進(jìn)一步:除了加入歷史梯度平方的指數(shù)衰減平均(r)外,還保留了歷史梯度的指數(shù)衰減平均(s),相當(dāng)于動量。Adam 行為就像一個(gè)帶有摩擦力的小球,在誤差面上傾向于平坦的極小值。Adam 算法描述
其中,s 和 r 初始化為 0;且 ρ1 和 ρ2 推薦的初始值都很接近 1(0.9 和 0.999)。這將導(dǎo)致在訓(xùn)練初期 s 和 r 都很小(偏向于 0),從而訓(xùn)練緩慢。Adam 可通過修正偏差來抵消這個(gè)傾向。
總結(jié)
以上是生活随笔為你收集整理的深度学习优化算法总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科顺防水材料质量好吗?
- 下一篇: 梳理百年深度学习发展史-七月在线机器学习