梯度下降原理
直覺理解
想像你站在一座山的某個點,蒙著眼睛要走到山谷最低點。你會怎麼做?
- 用腳感受哪個方向是向下坡
- 往那個方向跨一步
- 重複直到感覺不到下坡
這就是梯度下降!
- 梯度 = 最陡的上坡方向
- 負梯度 = 最陡的下坡方向(我們要走的方向)
- 學習率 = 每一步的大小
\begin{aligned} w_{t+1} = w_t - \eta \cdot \nabla L(w_t) \end{aligned}
其中 $\eta$ 是學習率,$\nabla L(w_t)$ 是損失函數在 $w_t$ 處的梯度。
從零實作
import numpy as np
def gradient_descent(gradient_func, initial_w, lr=0.1, n_steps=100):
"""
gradient_func: 梯度函數
initial_w: 初始參數
lr: 學習率
"""
w = initial_w
history = [w]
for i in range(n_steps):
grad = gradient_func(w)
w = w - lr * grad
history.append(w.copy())
return w, history
Vibe Prompt
🔥 詠唱:「請幫我視覺化梯度下降在 f(x,y)=x²+2y² 上的收斂過程,用等高線圖畫出參數軌跡。」