學習率優化
優化方法
學習率衰減
- 等間隔調整學習率 StepLR
- 多間隔調整學習率 MultiStepLR
- 指數衰減調整學習率 ExponentialLR
- 餘弦退火函數調整學習率:CosineAnnealingLR
- 根據指標調整學習率 ReduceLROnPlateau
當某指標(loss或accuracy)在最近幾個epoch中都沒有變化(下降或升高超過給定閾值)時,調整學習率。
自適應學習率調整(學習率優化)
傳統SGD的缺點,爲什麼提出學習率優化
- 學習率大小和策略選擇困難
- 學習率不夠智能,對所有參數一視同仁。
- 同時面臨局部極值和鞍點的問題。
Momentum 動量法
協同參考之前累積的的梯度方向
Nesterov牛頓動量法(根據累計梯度計算提前點)
先按照動量方向前進到點C,再根據C點的梯度進行梯度下降,相比動量法
Adagrad(累計梯度反比)
對於不同的參數動態的採取不同的學習率,讓目標函數更快的收斂。
將每一個參數的累計梯度平方和開方,用基礎學習率除以這個數,來做學習率的動態更新。
adagrad算法一開始是激勵收斂,到了後面就慢慢變成懲罰收斂,速度越來越慢。
why?
不同維度變量的梯度變化率不一致,更新的步長不僅要與函數值變化率(一次微分)成正比,還要與導數變化率(二次微分)成反比,因爲曲線曲率越大,那麼導數變得快,到極值點的距離就越小,曲線曲率越小,導數變得慢,到極值點的距離越大。
這裏用累計梯度平方和來近似二次微分。
RMSprop(滑動窗口)
上述Adagrad 分母項爲前序梯度的累加值,會出現學習率越來越小,造成學習停滯問題。很可能出現早期迭代到不好的極值點之後,由於學習率太小而無法衝出這個極值點導致最後收斂到的解不優。RMSprop採用指數加權移動平均的方法解決。(滑動窗口思想)
AdaDelta(自適應學習率)
使用上次的近似變化量來近似學習率
Adam算法
= 動量法+RMSProp