L13|反向傳播與多層感知器(MLP)
從零實作簡單的 MLP,用連鎖律理解反向傳播;學會用 PyTorch 算導數、寫 ReLU 和線性層類別、log-sum-exp 技巧,最後寫出訓練迴圈。
L13|反向傳播與多層感知器(MLP)(Backpropagation & MLP)
從零實作簡單的 MLP,用連鎖律理解反向傳播;學會用 PyTorch 算導數、寫 ReLU 和線性層類別、log-sum-exp 技巧,最後寫出訓練迴圈。 (Build a simple MLP from scratch, understand backpropagation through the chain rule, compute derivatives with PyTorch, write ReLU and Linear classes, use the log-sum-exp trick, and write a training loop.)
| 項目 | 內容 |
|---|---|
| 所屬 | Part 2:Deep Learning Foundations to Stable Diffusion |
| 影片 | YouTube |
| 對應書本章節 | 無對應章節(Part 2 以 notebook 為主) |
| 原始頁面 | Lessons/lesson13 |
| 難度(F3 視角) | ★★★★★ 大學程度(F3 只求理解概念) |
影片
本課重點
- MLP 架構:輸入 → 線性層 → ReLU → 線性層 → 輸出。先從零寫出前向傳播。
- 連鎖律與反向傳播:複合函數的導數等於各層導數相乘。反向傳播就是從損失往回,一層層套用連鎖律,算出每個參數的梯度。用 SymPy 驗證導數。
- 除錯工具:用 Python 除錯器 pdb 逐步檢查中間值。
- 把每層寫成類別:ReLU 和 Linear 各自有 forward 和 backward,讓程式結構清楚,也為之後的 nn.Module 鋪路。
- 浮點數與 log-sum-exp:e 的大次方會溢位。log-sum-exp 技巧先減掉最大值再算,數值穩定,用在 log_softmax 和交叉熵。最後寫出完整訓練迴圈。
關鍵概念
| 英文術語 | 中文 | 一句話解釋 |
|---|---|---|
| MLP | 多層感知器 | 由多個全連接層和激活函數組成的網路 |
| Chain rule | 連鎖律 | (f∘g)' = f'(g(x)) × g'(x) |
| Backpropagation | 反向傳播 | 從損失往回套連鎖律,算出所有梯度 |
| pdb | Python 除錯器 | 可以逐行執行並檢查變數 |
| Log-sum-exp trick | log-sum-exp 技巧 | 先減最大值避免指數溢位 |
| log_softmax | 對數 softmax | softmax 再取對數,用於交叉熵 |
認識關聯圖與重點圖
練習題
- y = (3x + 1)²。用連鎖律算 x = 1 時的 dy/dx。
- 用自己的話說明「反向傳播」為什麼要從損失往回算。
- 在 Python 計算 math.exp(1000) 會怎樣?log-sum-exp 技巧怎麼避免這個問題?
- 中文學生作答:L13_中文F3學生_202611041526
- English student answers: L13_EN_F3_Student_202611041526