💡一句話定義
梯度下降(Gradient Descent)= 沿著損失函數梯度的反方向,一步一步調整參數,讓損失逐漸下降,直到收斂到(局部)最小值。每一步跨多大,由學習率 η 決定。
它是幾乎所有神經網路訓練的核心引擎:損失函數告訴模型「錯多少」,梯度下降負責「往哪個方向改、改多少」。
⛰️用「迷霧下山」來想
🎮互動:把球滾到谷底
球在 L = w² 的曲線上。按單步執行看它每次往低處移動;拉學習率滑桿改變步伐大小。試試把學習率調到 0.9 或 1.05,看它怎麼在谷底來回震盪、甚至飛出去。
梯度下降 (Gradient Descent) 視覺化
當前權重 (w)
0.00
梯度 (Gradient)
0.00
損失 (Loss)
0.00
* 提示:試著將學習率調高到 0.9 或 1.05,觀察會發生什麼事。
🧮核心公式
wnew = wold − η · (∂L / ∂w)
以 L = w² 為例,梯度(斜率)就是 ∂L/∂w = 2w。若現在 w=−2.5,梯度是 −5(往左是上坡),於是往反方向(右)走 η·5 的距離,w 就變大、更靠近谷底 0。
- w:要優化的參數(權重)。
- ∂L/∂w:梯度,也就是損失對這個參數的斜率。
- η(eta):學習率,決定一步跨多大。
🗺️梯度下降 ≠ 反向傳播(易混)
很多人搞混這兩個:反向傳播(Backpropagation)是「畫地圖的過程」——利用連鎖律,從最後一層的誤差一路往回,精確算出每個參數的梯度 ∂L/∂w;梯度下降則是「走路的動作」——拿到梯度後,按公式更新參數。先反向傳播算梯度,再梯度下降走一步,兩者搭配完成一次訓練。
🎚️學習率的影響
| 學習率 η | 會發生什麼 |
|---|---|
| 太小 | 每步移動極少,收斂非常慢,易卡在平坦區 |
| 適中 | 穩定且快速地走向谷底(理想) |
| 太大 | 步伐過大,跨過谷底來回震盪 |
| 極大(>臨界) | 越跳越高、發散,損失飆到無限大 |
實務:常用學習率排程(先大後小)或自適應優化器(如 Adam)自動調整步伐,兼顧速度與穩定。
📦三種梯度下降:BGD / SGD / mini-batch
差別在每次更新用多少資料來估梯度:
| 類型 | 每次用的資料 | 特點 |
|---|---|---|
| 批次 BGD | 全部資料 | 梯度最準、最穩,但每步很慢、吃記憶體 |
| 隨機 SGD | 一筆 | 更新快、能跳出局部,但方向抖、噪音大 |
| 小批次 mini-batch | 一小批(如 32/64) | 兼顧速度與穩定,深度學習主流 |
🕳️常見陷阱:鞍點與特徵尺度
🪑鞍點 > 壞局部最小
深度網路是非凸的,但高維空間中卡住多半是鞍點而非糟糕的局部最小;動量、Adam 通常能滑過去。
深度網路是非凸的,但高維空間中卡住多半是鞍點而非糟糕的局部最小;動量、Adam 通常能滑過去。
📐先標準化特徵
特徵尺度差很多時,損失等高線很扁,梯度會鋸齒前進、收斂慢;標準化讓等高線變圓、收斂更快。
特徵尺度差很多時,損失等高線很扁,梯度會鋸齒前進、收斂慢;標準化讓等高線變圓、收斂更快。
✅自我檢測
Q1. 為什麼是往「梯度的反方向」走?
梯度指向函數上升最快的方向。我們要讓損失下降到最小,所以往它的反方向走,才會下坡。這就是公式裡是「減」η·梯度的原因。
Q2. 學習率太大、太小分別會怎樣?
太小:收斂很慢、易卡平坦區。太大:跨過谷底來回震盪;再大會發散、損失飆升。實務用學習率排程或 Adam 平衡。
Q3. 梯度下降和反向傳播差在哪?
反向傳播用連鎖律「算出」每個參數的梯度(畫地圖);梯度下降拿到梯度後「更新」參數(走路)。先算後走,兩者搭配。
Q4. BGD、SGD、mini-batch 怎麼選?
BGD 用全部資料(準但慢)、SGD 每次一筆(快但抖)、mini-batch 用一小批兼顧兩者,是深度學習主流做法。
🎯重點整理
- 做什麼:沿梯度反方向更新參數,逐步降低損失。
- 公式:w ← w − η·∂L/∂w,η 是學習率。
- 與反向傳播:反傳算梯度(連鎖律)、梯度下降走一步。
- 學習率:太小慢、太大震盪、極大發散;用排程或 Adam。
- 變體:BGD/SGD/mini-batch;mini-batch 為主流。
- 陷阱:高維多鞍點;先標準化特徵幫助收斂。