什麼是梯度下降?
梯度下降法是一種減少成本函數的疊代機器學習優化算法,使我們的模型能夠做出準確的預測。
成本函數(C)或損失函數度量模型的實際輸出和預測輸出之間的差異。成本函數是一個凸函數。
為什麼我們需要梯度下降?
在神經網絡中,我們的目標是訓練模型具有最優的權值(w)來進行更好的預測。
我們用梯度下降法得到最優權值。
如何找到最優的權值?
這可以用一個經典的登山問題來最好地解釋。
在登山問題中,我們想要到達一座山的最低點,而我們的能見度為零。
我們不知道我們是在山頂上,還是在山的中間,還是非常接近底部。
我們最好的選擇是檢查我們附近的地形,並確定我們需要從哪裡下降到底部。我們需要疊代地做這件事,直到沒有更多的下降空間,也就是我們到達底部的時候。
我們將在稍後的文章中討論,如果我們覺得已經到達了底部(局部最小值點),但是還有另一個山的最低點(全局最小值點),我們可以做什麼。
梯度下降法幫助我們從數學上解決了同樣的問題。
我們將一個神經網絡的所有權值隨機初始化為一個接近於0但不是0的值。
我們計算梯度,∂c/∂ω,它是成本相對於權重的偏導數。
α是學習率,有助於對梯度下降法調整權重
我們需要同時更新所有神經元的權重
學習速率
學習率控制著我們應該在多大程度上根據損失梯度調整權重。學習速率是隨機初始化的。
值越低,學習速度越慢,收斂到全局最小。
較高的學習率值不會使梯度下降收斂
由於我們的目標是最小化成本函數以找到最優的權值,所以我們使用不同的權值運行多個疊代,並計算成本以獲得最小的成本,如下所示
這座山可能有兩個不同的底部,用同樣的方法,我們也可以得到成本和權重之間的局部和全局最小點。
全局最小是整個域的最小點,局部最小是一個次優點,在這裡我們得到一個相對最小的點,但不是如下所示的全局最小點。
我們如何避免局部最小值,並始終嘗試得到基於全局最小值的最優權值?
首先我們來了解一下梯度下降的不同類型
不同類型的梯度下降是
- 批處理梯度下降
- 隨機梯度下降法
- 小批量梯度下降
批處理梯度下降
在批量梯度中,我們使用整個數據集來計算梯度下降每次疊代的代價函數的梯度,然後更新權值。
由於我們使用整個數據集來計算梯度收斂速度較慢。
如果數據集很大,包含數百萬或數十億個數據點,那麼它就需要大內存和並且是計算密集的。
批量梯度下降的優點
- 權值和收斂速度的理論分析很容易理解
批量梯度下降的缺點
- 對大型數據集的相同訓練示例執行冗餘計算
- 可能是非常緩慢和棘手的大數據集可能不適合在內存
隨機梯度下降法
在隨機梯度下降法中,我們使用單個數據點或實例來計算梯度,並在每次疊代中更新權值。
我們首先需要將數據集的樣本隨機排列,這樣我們就得到了一個完全隨機的數據集。由於數據集是隨機的,並且每個示例的權值都是可以更新的,所以權值和代價函數的更新將是到處亂跳的,如下所示
隨機樣本有助於得到全局的最小值,避免陷入局部的最小值。
對於非常大的數據集,學習要快得多,收斂也快得多。
隨機梯度下降法的優點
- 學習比批量梯度下降快得多
- 當我們一次抽取一個訓練樣本進行計算時,冗餘的計算被移除
- 當我們一次抽取一個訓練樣本進行計算時,可以動態更新新數據樣本的權重
隨機梯度下降法的缺點
- 隨著權重的頻繁更新,成本函數波動較大
小批量梯度下降
摘要小批量梯度法是一種隨機梯度下降法,它不採用單一訓練樣本,而是採用小批量樣本。
小批量梯度下降法應用廣泛,收斂速度快,穩定性好。
批處理大小可以根據數據集的不同而有所不同。
當我們取一批不同的樣本時,它減少了權值更新的方差噪聲,有助於更快地獲得更穩定的收斂。
小批量梯度下降的優點
- 減少了參數更新的方差,從而達到穩定收斂的目的
- 學習速度快
- 有助於估計實際最小值的近似位置
小批量梯度下降的缺點
- 每一個小批都要計算損失,因此所有小批都要累計總損失