梯度下降原理

直覺理解

想像你站在一座山的某個點,蒙著眼睛要走到山谷最低點。你會怎麼做?

  1. 用腳感受哪個方向是向下坡
  2. 往那個方向跨一步
  3. 重複直到感覺不到下坡

這就是梯度下降!

  • 梯度 = 最陡的上坡方向
  • 負梯度 = 最陡的下坡方向(我們要走的方向)
  • 學習率 = 每一步的大小

\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² 上的收斂過程,用等高線圖畫出參數軌跡。」

會員專屬免費教學

本章節為註冊會員專屬的免費開放內容!請先登入或註冊會員,即可立即解鎖閱讀。

立即登入 / 註冊