官方 handout 完整題名是 Homework 5: Neural Networks,屬於 written+programming。Written 以 feed-forward/backpropagation 手算與 empirical questions 為主;程式要用單一 hidden layer、sigmoid 與 softmax 做 OCR 字母分類。ZIP 提供 neuralnet.py starter、small train/validation CSV、tests.py、unit-test data、incorrect finder 與 visualizer;medium/large datasets 與正式 reference solution 不在公開 ZIP。
從計算圖讀程式
為每個 tensor 標 shape,forward 時只存 backward 真正需要的 cache。反向傳播先寫局部導數,再沿圖累積;不要一口氣抄成長公式。batch 維度、bias broadcasting 與 loss normalization 是最常見的靜默錯誤。
第一個可執行動作與完成判準
先在 bundle 的 handout 目錄跑:
python -m unittest tests
再用 small CSV 執行 handout 的 neuralnet.py 介面,做 finite-difference gradient check,最後嘗試 overfit 極小子集。完成判準是公開 unit tests 通過、small data 的每 epoch loss 與 labels/metrics 格式正確、數值梯度吻合;官方明說公開 tests 不完整,因此不能等同 Gradescope 全過。
先在小計算圖追導數
以下是本文自編的教學例子,不是官方作業答案。
自編純量圖:x=2,h=wx,o=vh,loss=0.5(o-y)²;設 w=3、v=0.5、y=1。forward 得 h=6、o=3、loss=2。backward 從 dloss/do=o-y=2 開始,dloss/dv=2h=12,dloss/dw=2vx=2。
檢查與答案: 若只把 x 改成 1,梯度還是同一組嗎?答案不是:h=3、o=1.5,dloss/dv=0.5×3=1.5,dloss/dw=0.5×0.5×1=0.25。這是線性小圖,不取代官方 sigmoid/softmax 網路。
更新紀錄
- 2026-10-11:補上自編例子、完整計算或推理,以及理解檢查答案。
參考資料
Loading...