1. SGD的不足:
①呈“之”字型,迂回前進,損失函數值在一些維度的改變得快(更新速度快),在一些維度改變得慢(速度慢)- 在高維空間更加普遍
②容易陷入局部極小值和鞍點:
局部最小值:
鞍點:
③對於凸優化而言,SGD不會收斂,只會在最優點附近跳來跳去 - 可以通過使用不固定的learning rate來解決
(凸優化的全局最優點是針對訓練數據而言的,更換了當前訓練數據,當前的最優點就變了。所以SGD本來就沒有固定的全局最優點。最后得到的是多個batch上最優點的一個或幾何均值)
2. SGD+Momentum(動量梯度下降):在SGD的基礎上,引入一階動量,增加慣性。SGD的缺點是參數更新方向只依賴於當前batch計算出的梯度,因此十分的不穩定。為了抑制SGD的震盪,可以在梯度下降的過程中加入慣性。t時刻的下降方向,不僅由當前點的梯度方向決定,還由此前的累積的梯度來決定。若當前的梯度方向與累積的歷史梯度方向一致,則當前的梯度會被加強,從而這一步下降的幅度更大。若當前的梯度方向與累積的梯度方向不一致,則會減弱當前下降的梯度幅度
①一階動量:是指到此刻為止的梯度的指數加權平均
β的經驗值一般為0.9:下降方向主要是此前累積的下降方向,並略微偏向當前時刻的下降方向,利用當前batch微調最終的更新方向。如果當前梯度方向與歷史梯度一致,會增強該方向的梯度。如果不一致,能夠減少更新
②指數加權平均(指數衰減平均):增加一個衰減系數來控制歷史信息的獲取多少,約等於1 /(1−β)個歷史時刻的梯度向量和的平均值
③利用momentum和當前梯度來更新位置(公式):下一個位置 = 當前位置 - 學習率*到此刻為止所積累的梯度 ;
到此刻為止所積累的梯度 = 動量因子*此前積累的梯度 +(1-動量因子)*此刻的梯度
x_t+1:下一個位置 x_t:當前位置
v_t+1:當前積累的梯度 v_t:此前積累的梯度 ▽f(x_t):此刻的梯度
α:學習率 p:動量因子
④SDG和Momentum的區別:SGD每次都會在當前位置上沿着負梯度方向更新,並不考慮之前的方向梯度大小;而動量(moment)通過引入一個新的變量 v 去積累之前的梯度通過指數衰減平均得到v,達到加速學習過程的目的
⑤優點:
- 增加了穩定性;
- 收斂速度更快;
- 具有一定擺脫局部最優的能力
因為下一個位置不僅取決於當前的梯度,還取決於之前積累的梯度,因此可以避免陷入局部最小值(梯度為0)和越過鞍點:
3. Nesterov Momentum(牛頓動量梯度下降):在Nesterov Momentum中,先沿着之前積累的梯度走一步,然后再計算這一步的終點的梯度,利用該梯度進行校正,得到最終的更新方向。相當於在Nesterov中添加了一個校正因子,Nesterov Momentum的位置更新取決於之前積累的梯度和根據之前積累梯度走到的位置的梯度
(不太明白這個公式)
Nesterov與Nesterov Momentum的區別:
在Nesterov中,t時刻的下降方向,不僅由當前點的梯度方向決定,還由此前的累積的梯度來決定;
在Nesterov Momentum中,t時刻的下降方向,取決於之前積累的梯度和根據之前積累梯度走到的位置的梯度
4. AdaGrad(Adaptive Gradient)自適應梯度下降:能夠在訓練中自動對learning rate進行調整;每一次更新參數時(一次迭代),不同的參數使用不同的學習率,對於出現頻率較低的參數采用較大的α更新;對於出現頻率較高的參數采用較小的α更新;在每輪訓練中對每個參數θi的學習率進行更新,將每一個參數的每一次迭代的梯度取平方累加再開方,用學習率除以這個數;AdaGrad適合處理稀疏矩陣(為什么)
公式:
二階動量:到此刻為止的梯度平方的累加(AdaGrad的二階動量是到此刻為止的梯度平方的累加)
優點和缺點:
5. RMSProp(root mean square prop)均方根傳播: 使用指數加權平均(指數衰減平均)只保留過去給定窗口大小的梯度,而非累加全部歷史梯度。累加之前所有的梯度平方和容易造成梯度消失,所以RMSProp只關注過去一段時間窗口的下降梯度,避免了二階動量持續累積,導致訓練過程提前結束的問題
①二階動量:到此刻為止的梯度的指數加權平均(RMSProp的二階動量是到此刻為止的梯度的指數加權平均)
B常取0.9:
AdaGrad和RMSProp的區別:
6. Adam(Adaptive Moment Estimation)自適應矩估計:將Momentum和RMSprop結合在一起,引入一階動量和二階動量,利用梯度的一階矩估計和二階矩估計動態調整每個參數的學習率;經過偏置校正后,每一次迭代學習率都有個確定范圍,使得參數比較平穩
m_t:一階動量 v_t:二階動量
^m_t:一階動量的校正 ^v_t:二階動量的校正
θ_t+1:下一個位置 θ_t:當前位置
β1、β2:加權平均數,用於控制一階動量和二階動量
①一階優化與二階優化:
一階優化:
(1)使用梯度形式的線性近似
(2)最小化近似的步驟
二階優化:
(1)利用梯度和Hessian形成二次逼近
(2)逼近最小值的步驟
②目前實踐中優先選擇Adam:
參考:
https://blog.csdn.net/u012328159/article/details/80311892
https://blog.csdn.net/yinyu19950811/article/details/90476956
https://blog.csdn.net/u010089444/article/details/76725843