GenAI 驅動的強化學習實戰

從零打造會自我進化的遊戲 AI

課程核心目標

Prompt Engineering (提示詞工程) 與 Gemini 協作,在不需深厚數學背景下實作 Q-Learning 演算法。

課程暖身:靈感與啟發

"We didn't build it to play any of them... it learned from its own experience."

(我們沒有教它規則,它是從經驗中學習的。)

分組討論

請搜尋 Q learning 是什麼,並回答:
1. 簡單好理解的方式解釋 Q learning 的核心公式和概念,
2. 提出兩個生活中可能用到的實際案例。

Q learning 核心公式和概念

新資訊 = 舊資訊 + 學習率 × (真實獎勵 + 資訊落差)
NewQ = OldQ + Learing_Rate × (Reward + NewQ - OldQ)

翻譯:「我原本以為這家餐廳只有 50 分。今天去吃發現超好吃 (+10分),而且聽說隔壁桌還有隱藏甜點 (+未來預期)。所以,我要修正這家餐廳的評價,把它調高一點點!」

AI 的學習兩階段

亂猜時期 (Exploration / 探索)

AI 遇到題目,它不知道答案,於是丟骰子隨便選一個動作。

結果:如果接到球(+10分),它趕快在小抄上記錄:「這招有效!」

老鳥時期 (Exploitation / 利用)

玩了幾千次後,小抄寫滿了。AI 看到題目,直接查表選分數最高的動作。

課堂實作:打造「接寶物 AI」

目標

使用 Gemini 生成一個單一 HTML 檔案的遊戲,並包含「手動/AI 切換」功能。

提示詞工程 (Prompt Engineering)

Prompt 範例

請扮演資深 Web 遊戲工程師。我要製作一個單一檔案的 HTML5 遊戲,呈現強化學習 (RL)。

**1. 遊戲基礎:**
* **類型**: 接寶物 (Catch the falling object)。
* **操作**: 支援「觸控滑動/滑鼠跟隨」,手指在哪板子就在哪。
* **規則**: 接到 +10 分,漏接 -10 分。

**2. AI 核心 (Q-Learning):**
* **狀態 (State)**: 簡化為「Target 與 Player 的水平距離區間」(分 10 格)。不要用像素。
* **動作**: 左移、右移、不動。
* **機制**: 實作 Q-Learning 演算法與 Epsilon-Greedy 策略。

**3. 介面功能 (UI):**
* **切換開關**: [手動模式] (綠色) / [AI 模式] (藍色)。
* **加速按鈕**: 在 AI 模式下,提供「極速訓練 (Fast Train)」按鈕,關閉渲染快轉 2000 回合。
* **儀表板**: 顯示分數、回合數、探索率 (Epsilon)。

請給我完整的 HTML 程式碼。

課後作業:Project Alpha-Breakout

利用今天學到的 Q-Learning 原理,製作一個「打磚塊」遊戲。不僅要讓 AI 會玩,遊戲本身也要具備良好的互動手感與聲光效果。

課後作業繳交資訊

作業繳交期限

12/19 23:59 前 | 作業繳交傳送門: Google Form

評分重點

  • 遊戲功能性完整:物理反彈機制正常、可以重新開始
  • AI 實作正確:Q-Learning 機制正確
  • 創意與延伸功能:視覺動畫效果、音效、關卡設計

打磚塊遊戲 Prompt 結構

**1. 任務**: 製作 HTML5 打磚塊遊戲,內建 Q-Learning AI。 **2. 物理要求**: 球要有合理的反彈物理,板子跟隨滑鼠/手指移動。 **3. AI 要求**: State 必須包含「球的位置」與「球的速度方向」。要有 Fast Train 按鈕。 **4. 額外效果** (自行發想)