Appearance
實驗紀錄 — micrograd
環境準備
bash
cd original
pip install micrograd # 或直接使用原始碼若需要跑 demo notebook,需額外安裝:
bash
pip install numpy matplotlib scikit-learn jupyterDemo 執行結果
訓練記錄(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 |