優化算法的目的
重要概念
梯度:損失函數對於權重函數的導數
梯度下降:根據梯度來更新權重,使損失變小的方法
所有優化算法的目的
據梯度更新權重,找到使得損失變得最小的方法。
各種優化算法
所有梯度算法都是基於梯度下降法進行演進的。
主要分爲三大階段,第一階段是梯度下降法,這個階段的優化算法可以找到局部最優解,但是無法找到全局最優解,很容易陷入鞍點。
第二階段爲動量梯度法,這個階段的優化算法考慮了權重的優化方向,借鑑了動量的原理,可以在某種程度上跳出局部最優解,但是很容易在優化的過程中,超過最優解。
第三階段爲Adam優化算法,這個階段的算法綜合了動量梯度算法的優點,同時考慮了隨着迭代的輪次增加,學習率也會針對不同的權重進行相應的調整,保證所有的權重更新步調相一致,同時還要保證迭代次數增加時,繼續保證權重可以大幅更新。
梯度下降法
GD
**意義:**所有優化算法的基礎。
**方法:**使用全部數據計算梯度
公式:
其中,爲學習率,爲樣本總數。
缺點:容易陷入鞍點,找到全局最小值。
SGD
方法:使用一條數據或者一個batch數據。
目的:增加隨機性,避免陷入局部最優解。
動量梯度法
動量梯度法
方法:借用了動量的概念,用來描述梯度優化的方向,而且這樣的動量能夠避免陷入局部最優解。
公式:
如圖所示:小球演示了動量法的意義。
Nesterov Momentum
方法:計算權值的變量時,提前計算了動量的增量。
公式:
如圖所示:演示了增量w的幾何意義。
Adam優化算法
特點:(1)所有權重參數更新的步調相一致。
(2)考慮梯度歷史更新的累積。
缺點:權重更新越來越慢。
公式: