本系列將從 Atari Breakout 與強化學習基礎出發,使用 PyTorch 從零實作 DQN、Double DQN 與 Dueling DQN,完整記錄環境建置、資料收集、模型訓練、超參數調校、除錯與實驗評估。後半段進一步將模型匯出為 ONNX,比較不同推論方式的效能,並嘗試透過 ONNX Runtime Web / WebGPU 將訓練完成的 AI 部署至瀏覽器,完整走過從模型訓練到實際部署的 AI Engineering 流程。
Day 10 已經解決了「Agent 要怎麼在探索與利用之間選 action」。接下來真的開始訓練 DQN 時,還有另一個更麻煩的問題:模型一邊被更新,拿來當作...
前面幾天,我們已經把 DQN 需要的幾個重要零件分開做完了:模型可以輸出 Q-value、Replay Buffer 可以保存經驗、epsilon-greedy...
Day 12 之後,DQN 已經能完整跑起來了:Agent 會和 Breakout 互動、把經驗存進 Replay Buffer,也會真的更新模型。 但這裡有一...
DAY 13已經回答了一個很重要的問題:目前這套 DQN 訓練程式能不能正常工作? 答案是可以。用來保存過去互動資料的 Replay Buffer 會持續累積經...
Day 14 把 DQN 訓練到 100K 個環境步數後,曲線開始出現學習跡象,實際遊玩也不再像完全亂按。 但這時候最危險的事情,就是太快把「看起來有進步」當成...
Day 14 留下了一個很反直覺的結果。 我們已經把 Replay Buffer 搬到 GPU,也確認單獨做資料抽樣和 DQN 更新時確實很快;但把整個 Bre...
Day 16 解決的是「怎麼訓練得更有效率」。環境規則固定下來後,我們也選出了後續實驗要使用的向量化訓練方式。 但訓練流程穩定,不代表演算法本身就沒有問題。 D...
Day 17 我們把 DQN 改成 Double DQN。 兩者的 CNN 和模型大小其實一樣,真正不同的是:計算下一個 state 的 Q-value 時,怎...
前面的 DQN 每看到一個 Breakout 畫面,都會直接估計四個動作的 Q-value: NOOP → 這時候不動,大概有多好? FIRE → 這時...
Day 19 做完 Dueling Network 之後,我們手上已經有三個可以正常訓練的 DQN family: DQN Double DQN Dueling...