什麼是梯度下降法(Gradient descent)

求出損失函數的梯度(對各參數的偏微分),並反覆將參數朝與梯度相反的方向稍微移動,以尋找使損失變小之參數的最佳化方法。更新以 w ← w − η∇L 表示,η稱為學習率。以部分資料(小批次)求得之梯度進行更新的隨機梯度下降法(SGD),以及其改良版的動量法與Adam,被廣泛用於神經網路的訓練。

日文名稱: 勾配降下法

「梯度下降法(Gradient descent)」出現在1領域的1道練習題中(機器學習基礎等)。

這個名詞所屬的領域: 機器學習基礎

更新式與學習率

把損失L看成權重w的函數,梯度∂L/∂w表示w稍微增加時L增加的方向與大小。因此以 w ← w − η × ∂L/∂w 將w朝與梯度相反的方向移動。例如 L = (w − 3)²、從 w = 0 開始,梯度為 2 × (0 − 3) = −6,η = 0.1 時w前進到0.6。在此例中,η為0.1時,到最小點 w = 3 的剩餘距離每次更新縮小為0.8倍;η為1.1時則每次更新都越過最小點,距離每次擴大為1.2倍而發散。

批次、小批次與隨機梯度下降法

以全部訓練資料精確求出損失的梯度後才更新一次的方法稱為批次梯度下降法,但資料量大時,每次更新都很耗時。因此改用只以從資料中選出的一部分(小批次)求梯度並反覆更新的隨機梯度下降法。梯度中會混入雜訊,但能增加更新的次數,且可將小批次設成便於GPU平行運算的大小。訓練資料全部使用過一輪稱為1個epoch。

改良的方法

單純的SGD在形狀像狹長山谷的損失上,會沿著橫越山谷的方向來回擺動,使前進變慢。動量法像慣性一樣延續過去更新的方向,以抑制這種振盪。Adam與RMSProp則依各參數梯度大小的歷史,自動調整更新的幅度。訓練初期逐漸提高學習率的暖身(warm-up),以及隨訓練進行而降低學習率的排程也很常用。

練習梯度下降法(Gradient descent)的題目

在梯度下降法中,權重 w = 2.0 處損失的梯度 ∂L/∂w 為0.5、學習率為0.1時,更新一次後的權重為何者?

  1. A1.5
  2. B1.95
  3. C2.05
查看答案與解析

正確答案:B. 1.95

梯度下降法將權重朝損失變小的方向,也就是與梯度相反的方向移動,以 w ← w − η × ∂L/∂w 更新(η為學習率)。本題中 w = 2.0 − 0.1 × 0.5 = 1.95。學習率過大時會越過損失的谷底而振盪或發散,過小時訓練則遲遲無法進展。實際訓練中,會使用以部分資料(小批次)求得的梯度反覆更新的隨機梯度下降法(SGD),以及其改良版Adam等。

常見問題

梯度下降法與反向傳播有何不同?

反向傳播是有效率地計算損失對神經網路所有權重之梯度的方法。梯度下降法則是利用這些梯度來更新權重的方法。訓練時會反覆進行以前向傳播求損失、以反向傳播求梯度、再以梯度下降法更新權重的流程。

梯度下降法能找到最佳解嗎?

若損失函數為凸函數(只有一個谷底),選擇適當的學習率就能接近最小點。神經網路的損失並非凸函數,因此找到的多半是局部解,但經驗上已知,參數眾多的網路即使如此,往往也能得到實用上足夠的性能。

解析中的「梯度下降法(Gradient descent)」

出現「梯度下降法(Gradient descent)」的題目(1題)

  1. 在梯度下降法中,權重 w = 2.0 處損失的梯度 ∂L/∂w 為0.5、學習率為0.1時,更新一次後的權重為何者?

相關名詞

主成分分析(PCA) 正規化(Regularization) 交叉驗證(Cross-validation) 卷積神經網路(CNN) 非監督式學習(Unsupervised learning) 強化學習(Reinforcement learning) 啟動函數(Activation function) 混淆矩陣(Confusion matrix) 過擬合(Overfitting) 監督式學習(Supervised learning)

前往名詞解釋列表