批梯度下降:
1)採用所有資料來梯度下降,在樣本量很大的時,學習速度較慢,因為處理完全部資料,我們僅執行了一次引數的更新。
2)在學習過程中,我們會陷入損失函式的區域性最小值,而永遠無法達到神經網路獲得最佳結果的全域性最優值。
這是因為我們計算的梯度大致相同。
所以,我們實際上需要的是一些嘈雜的漸變。方向值的這種小偏差將使梯度跳出損失函式的區域性最小值,並朝著全域性最小值繼續更新。
3)鞍點:損失函式存在梯度為 $0$ 的區域,那麼當引數位於這些區域時,沒有辦法再繼續更新了。
隨機梯度下降:
1)由於在處理每個資料例項之後執行更新,因此隨機梯度下降可能會導致學習更快。
2)在批次梯度下降中,我們對梯度求平均以得到乙個最終梯度,在隨機梯度下降中,我們使用每個單個梯度來更新權重。這些梯度可能非常嘈雜,
並且其方向和值存在很大差異。換句話說,在這種情況下,我們會有很多噪音。但這其實也是它的乙個優點,有利於避免訓練過程中的區域性最小值。
3)隨機梯度下降無法解決損失函式的整體最小值。由於嘈雜,將很難找到並保持在全域性最小值。
小批梯度下降:
1)就計算效率而言,此技術介於之前介紹的兩種技術之間。
2)朝著全域性最小值收斂更穩定,因為我們計算了小批量 $m$ 個樣本的平均梯度,從而減少了雜訊。
3)與隨機梯度下降相比,我們執行權重更新的頻率更高,因此可以更快地學習。
4)小批量梯度下降中引入了乙個新的超引數 $m$,稱為批次大小。已經表明,學習率之後的批次大小是神經網路整體效能的第二重要的超引數。因此,
需要花一些時間並嘗試許多不同的批次大小,直到找到與其他引數(例如學習率)最匹配的最終批次大小。
閱讀下面內容之前,可先去閱讀指數加權移動平均。
紅色表示 sgd 的收斂路徑,棕色表示批梯度下降的收斂路徑。普通的 gd 演算法就是計算出每一時刻最陡的下降趨勢(梯度),sgd 在隨機挑選的某一分量的
梯度方向進行收斂。
從圖中可以看出,損失函式從某一點開始的梯度下降過程是及其曲折的。並不是直接走向中心點,而是需要浪費很多時間折來折去,這
樣的速度就會變慢,
有沒有辦法解決這個問題呢?
可以使用動量梯度下降法來解決這個問題,引數更新公式為:
$$v_ = \beta \cdot v_ + (1 - \beta) \cdot dw \\
v_ = \beta \cdot v_ + (1 - \beta) \cdot db \\
\rightarrow \left\
w = w - \alpha \cdot v_ \\
b = b - \alpha \cdot v_
\end\right.$$
在這個公式中,並不是直接減去 $\alpha \cdot dw$ 和 $\alpha \cdot db$,而是計算出了乙個 $v_$ 和 $v_$。
使用這個公式,可以將之前的 $dw$ 和 $db$ 都
聯絡起來,不再是每一次梯度都是獨立的情況。
其中 $\beta$ 是可以自行設定的超引數,一般情況下預設為 $0.9$,
也可以設定為其他數值。$\beta$ 代表了現在的 $v_$ 和 $v_$ 與之前
的 $\frac$ 個 $v_$ 和 $v_$ 有關。
動量梯度下降(momentum)
動量梯度下降法是對梯度下降法的改良版本,通常來說優化效果好於梯度下降法。對梯度下降法不熟悉的可以參考梯度下降法,理解梯度下降法是理解動量梯度下降法的前提,除此之外要搞懂動量梯度下降法需要知道原始方法在實際應用中的不足之處,動量梯度下降法怎樣改善了原來方法的不足以及其具體的實現演算法。依次從以下幾個方...
動量梯度下降法 Momentum
動量梯度下降法是對梯度下降法的一種優化演算法,該方法學習率可以選擇更大的值,函式的收斂速度也更快。梯度下降法就像下面這張圖,通過不斷的更新 w與b,從而讓函式移動到紅點,但是要到達最優解,需要我們不斷的迭代或者調整學習率來達到最後到達最優解的目的。但是調大學習率會導致每一次迭代的步長過大,也就是擺動...
線性回歸之動量梯度下降(momentum)
如果嫌隨機梯度下降的方法還不夠快,沒事,總會有大神跳出來說還有動量梯度下降。隨機下降在這裡 普通梯度下降,每次調整權重的方法就是梯度乘以學習速率 g g 而動量梯度下降,不僅考慮了當前的梯度,還用到了之前的梯度 lg lg disc ount gl g lg d isco unt g l g l g...