Skip to content

閱讀評論 — micrograd

優點

  1. 極致的可讀性 — 100 行做出 autograd,任何人一個下午就能讀完
  2. 自包含 — 不需任何深度學習框架即可運作
  3. 正確性驗證 — 附有與 PyTorch 比對的單元測試
  4. 漸進式教學 — engine → nn → demo notebook,層層遞進
  5. 視覺化支援 — trace_graph.ipynb 可畫出計算圖,幫助理解

設計取捨與權衡

取捨micrograd 的選擇PyTorch 的選擇
運算單元標量(scalar)張量(tensor)
圖構建動態(每次 forward 重建)動態(eager mode)
反向傳播每個節點存 _backward 閉包註冊 autograd Function
效能慢(但夠教學)快(GPU 加速)

批判性思考

  1. ReLU 的梯度實作中,使用 out.data > 0 而非 self.data > 0 來判斷。當 self.data < 0out.data = 0,所以兩者等價。但用 out.data 更符合「運算節點自己決定梯度」的封裝原則。

  2. __pow__ 只支援 int/float 指數 — 這是刻意的限制。若要支援 Value 作為指數,需要實作 explog

  3. 訓練程式碼在 Notebook 中而非獨立腳本 — 這是教學意圖的體現:讓學習者可以互動式地觀察每一步的變化。

建議改進

  • 可以加入 tanhsigmoid 作為額外的 activation
  • 可以展示 Batch 訓練與 Mini-batch 的差異
  • 可以在註解中加入更多數學推導