本系列將從 Atari Breakout 與強化學習基礎出發,使用 PyTorch 從零實作 DQN、Double DQN 與 Dueling DQN,完整記錄環境建置、資料收集、模型訓練、超參數調校、除錯與實驗評估。後半段進一步將模型匯出為 ONNX,比較不同推論方式的效能,並嘗試透過 ONNX Runtime Web / WebGPU 將訓練完成的 AI 部署至瀏覽器,完整走過從模型訓練到實際部署的 AI Engineering 流程。
為什麼會有這個系列? 會開始這個專案,其實沒有什麼很複雜的理由。 前陣子我看到 YouTube 頻道 Yosh 的影片。 他的影片主要在做一件很有趣的事情: 用...
Day 1 我們談了為什麼想做這個系列,也談到強化學習最後必須回到一個真實的環境裡。今天就讓 Agent 走進 Breakout,看看它究竟看見什麼、可以做什麼...
當 Agent 按下一個 action 之後,環境到底回傳了什麼? 在 Atari Breakout 裡,按鍵只是表面上看得到的那一刻。對強化學習來說,一次互動...
Day 3 的時候,我們讓 AI 和 Breakout 互動,並拆開了一次遊戲回傳的資料。 當時 AI 每次拿到的是一張原始遊戲畫面: 210 × 160 ×...
Day 4 讓 Agent 同時看到 Breakout 最近四張畫面。這四張 84 × 84 的灰階畫面組成 (4, 84, 84) / uint8 的輸入,也...
Day 6|Q-value 一開始不知道,Agent 怎麼把它學出來? Day 5 已經說明一件事:一個 action 的價值,不能只看這一步拿到多少 rewa...
Day 6 留下一個很具體的問題:Breakout 的 state 太複雜,已經不可能像小型 toy environment 一樣,替每一種狀態準備一格 Q-t...
Day 7 已經把 Breakout 的四張灰階畫面送進 CNN,最後得到長度 3,136 的 feature vector。 Day 8 要補上的,是最後一段...
Day 8 已經讓 DQN 能把一個 Breakout 畫面狀態轉成四個 action 的 Q-values。 但「模型會算 Q-value」和「模型真的有辦法...
Day 8 的 DQN 已經能把一個 Breakout state 轉成每個 action 的 Q-values,Day 9 也把遊戲互動產生的 transit...