梯度下降 是什麼?

Gradient Descent:梯度下降 的完整解釋

梯度下降是一種透過反覆運算,沿損失函數的梯度方向,逐步逼近損失函數最小值的演算法

容易混淆

梯度下降 vs 隨機梯度下降 梯度下降每次看整批資料 隨機梯度下降每次看較小的資料片段 最關鍵的區別是穩定慢,還是快但抖

梯度下降 vs 最小平方法 梯度下降是迭代式優化 最小平方法是直接求解析解的路徑 最關鍵的區別是反覆逼近,還是一次算出來

記住這句就好

沿著最陡方向往山谷走,慢慢修正。

實際案例

線性回歸 你要找一條最適合資料的直線時,梯度下降可以一點一點把參數調到更好的位置。

神經網路訓練 深度學習裡的大多數權重更新,本質上都是梯度下降在工作。

算法與應用

核心三件事是梯度、學習率和損失函數,這三個要一起看。 步伐太大會震盪,太小會很慢,所以調學習率幾乎是每次訓練都會做的事。

主要用途:這是最常被問的一句

梯度下降(Gradient Descent)的主要用途是最小化損失函數,藉此找出模型參數。它不是分類方法,也不是特徵處理方法,而是訓練階段用來「往哪個方向調參數」的最佳化演算法。

更新規則只有一行:

新參數 = 舊參數 − 學習率 × 損失函數對該參數的梯度

梯度指向損失上升最快的方向,所以前面要加負號,往反方向走才是下降。學習率決定一步走多遠。

三種變體

變體 每次更新用多少資料 特性
批次梯度下降(BGD) 全部訓練資料 方向最準,但資料一大就跑不動
隨機梯度下降(SGD) 一筆 更新快、雜訊大,雜訊有時反而幫忙跳出局部低點
小批次梯度下降(Mini-batch GD) 一小批,常見 32 到 512 兼顧穩定與效率,實務上的預設做法

平常講的 SGD,在深度學習框架裡指的其實幾乎都是小批次版本。

常見的改良與卡住的地方

動量(Momentum):把過去的更新方向累積下來,像滾下坡的球。可以壓平震盪、加速穿過狹長的谷地。

AdaGrad、RMSProp、Adam:依每個參數自己的梯度歷史調整有效步長。梯度長期很小的參數會拿到比較大的步長。Adam 等於動量加上 RMSProp,是目前最通用的預設選擇。

鞍點比局部最低點更棘手。高維空間裡真正的局部最低點很少,大部分讓訓練停滯的是鞍點(某些方向往上、某些方向往下)。動量類方法主要就是在處理這件事。

梯度消失與梯度爆炸:深層網路裡梯度連乘會指數縮小或放大。對策包括殘差連接、正規化層、梯度裁剪(gradient clipping)與適當的初始化。

前提是損失函數要可微。不可微的目標函數(例如直接最佳化準確率)就不能用梯度下降,得改用其他搜尋方法。

情境判斷

Q1: 損失一直掉得很慢,第一個會懷疑什麼? → 先看學習率是不是太小,或者特徵和模型是否太保守。

Q2: 訓練到一半損失忽上忽下,會想到什麼? → 可能學習率太高,或批次太小導致更新太晃。

梯度下降 在 iPAS 考試中的重點

根據歷年統計,梯度下降 相關題目 平均佔 AI 技術類考題 8%, 屬於高頻考範圍。

常見出題方向:優化演算法比較(40%)、梯度下降原理(40%)、演算法效率評估(20%)。

相關術語

常見問題

梯度下降一定會找到全域最小值嗎?

不一定,尤其在非凸問題上可能卡在局部最小值或鞍點。

學習率越大越好嗎?

不是,太大會震盪甚至發散。

什麼時候要用批次梯度下降?

當你想要比較穩定的更新,而且資料量和算力允許時。

資料來源

← 回到 梯度下降 快查頁

測驗你對 梯度下降 的理解

透過模擬考系統檢驗學習成果

開始測驗