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