Skip to content

實驗紀錄 — micrograd

環境準備

bash
cd original
pip install micrograd  # 或直接使用原始碼

若需要跑 demo notebook,需額外安裝:

bash
pip install numpy matplotlib scikit-learn jupyter

Demo 執行結果

訓練記錄(100 步)

step 0 loss 0.8958, accuracy 50.0%
step 1 loss 1.7236, accuracy 81.0%
step 10 loss 0.2451, accuracy 91.0%
step 20 loss 0.1898, accuracy 91.0%
step 30 loss 0.1173, accuracy 95.0%
step 40 loss 0.0602, accuracy 100.0%
step 50 loss 0.0988, accuracy 96.0%
step 60 loss 0.0326, accuracy 99.0%
step 70 loss 0.0142, accuracy 100.0%
step 80 loss 0.0123, accuracy 100.0%
step 90 loss 0.0110, accuracy 100.0%
step 99 loss 0.0110, accuracy 100.0%
  • 約 40 步後達到 100% 訓練準確率
  • Loss 從 ~0.9 穩定下降到 ~0.01

修改實驗建議

1. 改變網路架構

嘗試不同的 nouts

python
model = MLP(2, [32, 32, 1])   # 更大
model = MLP(2, [8, 1])        # 更小
model = MLP(2, [32, 16, 8, 1]) # 更深

2. 改變學習率調度

python
# 固定學習率
learning_rate = 0.5

# 指數衰減
learning_rate = 1.0 * (0.95 ** k)

3. 改變損失函數

python
# 改用 MSE loss
losses = [(yi - scorei)**2 for yi, scorei in zip(yb, scores)]

你可能遇到的問題

問題原因解法
訓練不收斂學習率太大調小學習率
梯度爆炸網路太深加入梯度裁剪
ReLU 神經元死亡學習率太大使用 leaky ReLU