6.4 隨機梯度下降法
上節(jié)我們講解了梯度下降法,一種深度學習中十分常用而且重要的模型參數(shù)最優(yōu)化方法。明確了它的基本原理后,我們也介紹了它的優(yōu)缺點。
最基本的的梯度下降法是采用全數(shù)據(jù)集(Full Batch Learning)的形式,它的好處明顯。首先,確定的方向能夠更好地代表樣本總體,能更準確地朝向極值所在的方向。此外,可以更有針對性的選取不同的學習率。但這種方法的缺點很顯著。一是不能保證被優(yōu)化函數(shù)達到全局最優(yōu)解,只有當損失函數(shù)為凸函數(shù)時,梯度下降算法才能保證達到全局最優(yōu)解;二是計算時間太長,因為要在全部訓練數(shù)據(jù)上最小化損失,小數(shù)據(jù)集還行,數(shù)據(jù)量一多耗時嚴重;此外,如果函數(shù)的形態(tài)很復雜,那么梯度下降法可能會在局部最小值附近來回震蕩,而不是直接收斂到最優(yōu)解。梯度下降法對于初始值的選擇非常敏感,在訓練過程中可能會被卡在局部最優(yōu)解。因此,在實際應(yīng)用中,我們通常會使用一些改進的優(yōu)化算法。本節(jié)咱們就來看一種簡單的改進版變體:隨機梯度下降法。
6.4.1?基本思想

6.4.2?優(yōu)缺點比較
隨機梯度下降法是梯度下降法的改進,因為它在保留了梯度下降法的基本思想的同時,還有一些改進。首先,隨機梯度下降法每次迭代中僅使用一個樣本計算梯度,這使得計算速度快很多。相比之下,梯度下降法每次迭代中都需要使用所有的樣本計算梯度,這使得計算速度要慢很多。其次,隨機梯度下降法每次迭代中僅使用一個樣本計算梯度,這使得它比梯度下降法更加穩(wěn)定。
事物都是有兩面性的。隨機梯度下降法也有一些缺點:首先,由于每次迭代中只使用一個樣本計算梯度,因此每次迭代的梯度都是有噪聲的。這會導致每次迭代的收斂速度變化很大,并且在目標函數(shù)有多個局部最小值時可能會被卡在局部最小值中。但是,因為總的迭代次數(shù)很多,所以隨機梯度下降法最終會收斂到最優(yōu)解。其次,由于每次迭代中只使用一個樣本計算梯度,因此每次迭代的計算代價都很低。但是,如果訓練集很大,那么總的計算代價就會變得很高,因為我們需要計算很多次梯度。最后,隨機梯度下降法在每次迭代中都只使用一個樣本,因此我們不能利用批量計算的優(yōu)勢來加速計算。
面對這些缺點,在人工智能的發(fā)展史上科學家們開動腦筋想了不少辦法,動態(tài)學習率就是其中之一。
?
6.4.3?動態(tài)學習率
我們知道,學習率是梯度下降算法中非常關(guān)鍵的超參數(shù)。當使用常規(guī)的梯度下降法(Batch Gradient Descent)訓練模型時,我們通常會使用固定的學習率。但是在使用隨機梯度下降法時,因為每一次迭代都是隨機選擇一個樣本來計算梯度并更新參數(shù)的值,所以使用固定的學習率可能并不是最優(yōu)的。使用動態(tài)學習率可以幫助模型更快地收斂。你可以在每一次迭代之后根據(jù)模型的訓練情況來動態(tài)地調(diào)整學習率的值,使得模型能夠更快地收斂。

當然,你還可以根據(jù)模型的訓練情況來自定義動態(tài)學習率的策略。
梗直哥提示:盡管動態(tài)學習率部分的彌補了隨機梯度下降法的缺點,但并沒有從根本上解決其固有問題。因此,科學家又進一步提出了一種這種方案,這就是小批量梯度下降法。
?更深入地講解,歡迎訂閱我的課程。
