Appearance
閱讀評論 — micrograd
優點
- 極致的可讀性 — 100 行做出 autograd,任何人一個下午就能讀完
- 自包含 — 不需任何深度學習框架即可運作
- 正確性驗證 — 附有與 PyTorch 比對的單元測試
- 漸進式教學 — engine → nn → demo notebook,層層遞進
- 視覺化支援 — trace_graph.ipynb 可畫出計算圖,幫助理解
設計取捨與權衡
| 取捨 | micrograd 的選擇 | PyTorch 的選擇 |
|---|---|---|
| 運算單元 | 標量(scalar) | 張量(tensor) |
| 圖構建 | 動態(每次 forward 重建) | 動態(eager mode) |
| 反向傳播 | 每個節點存 _backward 閉包 | 註冊 autograd Function |
| 效能 | 慢(但夠教學) | 快(GPU 加速) |
批判性思考
ReLU 的梯度實作中,使用
out.data > 0而非self.data > 0來判斷。當self.data < 0時out.data = 0,所以兩者等價。但用out.data更符合「運算節點自己決定梯度」的封裝原則。__pow__只支援 int/float 指數 — 這是刻意的限制。若要支援 Value 作為指數,需要實作exp和log。訓練程式碼在 Notebook 中而非獨立腳本 — 這是教學意圖的體現:讓學習者可以互動式地觀察每一步的變化。
建議改進
- 可以加入
tanh或sigmoid作為額外的 activation - 可以展示 Batch 訓練與 Mini-batch 的差異
- 可以在註解中加入更多數學推導