AI / 學習實驗

Simple-2048-RL

從遊戲狀態到策略,練習理解強化學習。

PythonDQN強化學習AI

從什麼問題開始

DQN 強化學習訓練 AI 玩 2048。環境建置、神經網路、訓練 pipeline 全部從頭刻。想驗證強化學習在策略遊戲上到底能走多遠。

做了哪些事

  • 實作 2048 環境、神經網路與訓練流程,使用 Pygame 呈現棋盤。
  • 以 log2 編碼、epsilon-greedy、MSE 與 Adam 理解訓練的各個環節。

資料怎麼走

點開一站,看它做什麼,以及需要注意的地方。

  1. 0116 維狀態

    將 2048 的 4 × 4 棋盤編碼,作為網路輸入。

    產出
    棋盤狀態向量
    需要留意
    狀態表示會影響模型看到的資訊;本專案使用 log2 編碼。
  2. 024 種動作

    在上、下、左、右中選擇動作,以 epsilon-greedy 平衡探索與利用。

    產出
    下一個移動方向
    需要留意
    首頁的走一步只是規則示意,並未執行這個模型。
  3. 03獎勵回饋

    執行動作後,由遊戲環境回傳下一個狀態與獎勵。

    產出
    狀態轉移與回饋
    需要留意
    單次得分或好看的棋盤,不能代替多次訓練評估。
  4. 04Replay buffer

    保存經驗,供訓練時抽樣使用。

    產出
    可取樣的經驗資料
    需要留意
    需要配合訓練紀錄檢查,不能只從有經驗回放就推論模型已收斂。
  5. 05DQN 更新

    用 MSE 與 Adam 更新神經網路,練習估計動作價值。

    產出
    更新後的網路參數
    需要留意
    目前沒有 target network 或 Double DQN,也尚未完成多個隨機種子的基準比較。
Simple-2048-RL 架構與流程圖
專案 README 架構圖 · 查看原始說明 ↗
有相關想法,來聊聊。↗