---
title: "隨機梯度下降（Stochastic Gradient Descent）"
slug: stochastic-gradient-descent
language: zh-TW
source: https://aiterms.tw/terms/stochastic-gradient-descent
updated_at: 2026-07-29
tags: [機器學習, 深度學習, 模型訓練, 最佳化, 神經網路, 數學基礎, iPAS中級]
ipas_term: false
---

# 隨機梯度下降（Stochastic Gradient Descent）

> **你有沒有想過，模型到底是怎麼學會、怎麼驗收、怎麼慢慢變準的？**
>
> 你可以把它想成先看答案，再用誤差修正模型。
> 隨機梯度下降 的重點是 隨機梯度下降（SGD）是一種迭代優化算法，用於最小化目標函數。它每次迭代僅使用一個或少量樣本計算梯度，加速訓練過程，但可能導致收斂不穩定。
> 它重要，是因為學習速度、穩定度和泛化能力，會決定模型最後能不能上線。

### 容易混淆
> **隨機梯度下降 vs 梯度下降**
> 隨機梯度下降：偏向 讓模型學習、更新與驗收
> 梯度下降：偏向 更完整的梯度下降家族
> 最關鍵的區別：隨機梯度下降看的是「讓模型學習、更新與驗收」，梯度下降看的是「更完整的梯度下降家族」。
>
> **隨機梯度下降 vs 學習率**
> 隨機梯度下降：偏向 讓模型學習、更新與驗收
> 學習率：偏向 更新步伐的大小設定
> 最關鍵的區別：隨機梯度下降看的是「讓模型學習、更新與驗收」，學習率看的是「更新步伐的大小設定」。
>

### 記住這句就好
> 有答案、會更新、看泛化。

### 實際案例
> **案例：用標答案資料訓練垃圾郵件分類器**
> 訓練時看標籤，部署時只看新郵件內容
>
> **案例：先保留一批沒看過的資料來驗收模型**
> 這樣才能知道它是真的會做，還是只會背題
>

### 算法與應用
> 先看資料，再更新參數，最後看驗證或測試表現
> 學習率、批次大小和損失函數，常一起決定收斂速度
> 重點不是背熟訓練集，而是遇到新資料也能做對

### 三種梯度下降的比較

> 梯度下降的更新規則都一樣：
>
> `θ ← θ − η × ∇J(θ)`
>
> θ 是參數，η 是學習率，∇J(θ) 是損失函數對參數的梯度。差別只在「這個梯度是用多少筆資料算出來的」。

| 方法 | 每次更新用幾筆 | 每步成本 | 梯度品質 | 實務地位 |
| --- | --- | --- | --- | --- |
| 全批次（BGD） | 全部 | 極高 | 精確 | 資料量大時不可行 |
| 隨機（純 SGD） | 1 筆 | 極低 | 雜訊很大 | 幾乎不用 |
| 小批次 | 32 到 512 | 適中 | 夠好 | 深度學習的標準做法 |

> 現在文獻與框架裡寫 SGD，指的幾乎都是小批次版本。純粹一次一筆的做法無法利用 GPU 的平行能力，實際上比小批次還慢。

### 雜訊是缺點也是優點

> 用少量資料估出來的梯度方向不準，所以 SGD 的下降路徑是抖的，不像全批次那樣平滑。這看起來是缺點，但它帶來兩個好處。
>
> **能跳出不好的局部最小值與鞍點。** 高維空間裡真正的局部最小值其實不多，麻煩的是鞍點：梯度接近 0 但不是最小值。全批次梯度下降到了鞍點就卡住，SGD 的雜訊會把它推出去。
>
> **偏好平坦的極小值。** 雜訊讓參數待不住尖銳的谷底，最後停在較平坦的區域，而平坦通常對應較好的泛化。

### 常見的改良

> **動量（Momentum）。** 把過去的更新方向累積起來，像滾下坡的球。能加速在一致方向上的前進，也能抑制來回震盪。
>
> **Nesterov 動量。** 先按動量往前看一步再算梯度，修正得更準一點。
>
> **Adam。** 同時做兩件事：對每個參數各自調整學習率（依梯度平方的移動平均），並加上動量。收斂快、對學習率不那麼敏感，是現在的預設選擇。
>
> **但 SGD 加動量沒有被淘汰。** 在影像分類這類任務上，仔細調過的 SGD 加動量最終泛化常常比 Adam 好一點，所以追求極致成績的訓練設定仍然會用它。實務建議是：先用 Adam 把東西跑起來，需要最後那幾個百分點時再試 SGD 加動量並配合學習率排程。

### 情境判斷
> **Q1（直覺題）：** 資料很多又想先跑起來，這類方法適不適合？
> → 適合，尤其是你已經有標答案資料，想先做一版可用模型時。
>
> **Q2（判斷題）：** 資料很少但每一步都要很穩，這類方法一定是最佳解嗎？
> → 看情況，資料少時通常還要配合正則化、驗證策略或其他方法，不能只靠同一招。
>

### 常見問題
> **Q：這類方法什麼時候最值得用？**
> 當你有標答案資料，而且想要穩定做預測、分類或評估時，最值得用。
>
> **Q：什麼情況下要先換方法，不要硬調參？**
> 如果資料太少、標籤品質很差，或任務本身不適合這種學習方式，先換策略通常更有效。
>
> **Q：它和盲目背題有什麼不同？**
> 好方法追求泛化，不是把訓練資料背熟；一旦新資料出現，還能不能做對才是重點。
>

### 相關術語
> - **梯度下降**：先看它，能補基礎
> - **學習率**：對照它，能分清邊界
> - **批次大小**：它常一起出現
> - **損失函數**：它能補常見使用情境

---

來源：https://aiterms.tw/terms/stochastic-gradient-descent
快查頁：https://aiterms.tw/terms/stochastic-gradient-descent
最後更新：2026/07/29
深度解說：https://aiterms.tw/learning/what-is-stochastic-gradient-descent