聊天視窗

資料科學深度探究:從原理到實務 - 第 6 章

第六章 強化學習概念與實務應用

發布於 2026-02-26 10:47

## 6.1 強化學習概念 強化學習(Reinforcement Learning,RL)是資料科學中用於學習動作決策的關鍵技術。與監督學習不同,RL 透過環境回饋(reward)來引導代理(agent)在未知環境中探索並優化策略。本章將從理論基礎說起,逐步推進至實際實驗。 ### 6.1.1 代理、環境與回饋 - **代理(Agent)**:決策者,負責選擇行動。 - **環境(Environment)**:代理與之互動的外部系統,透過 `step(action)` 回傳新的狀態、獎勵與結束訊號。 - **回饋(Reward)**:衡量行動品質的數值,RL 目標是最大化累積回饋。 ### 6.1.2 典型應用場景 - 自動駕駛、機器人導航 - 遊戲 AI(如 AlphaGo、OpenAI Five) - 供應鏈優化與金融交易 ## 6.2 Markov 決策過程(MDP) 強化學習的理論基礎是 Markov 決策過程(Markov Decision Process,MDP)。一個 MDP 可以表達為 ``` S: 狀態集合 A: 行動集合 P(s'|s,a): 過渡概率 R(s,a): 獎勵函式 γ: 折扣因子 ``` 此處我們採用「階段性」表述,避免在程式碼範例中使用雙引號。 ## 6.3 典型演算法 ### 6.3.1 Q‑Learning 與 SARSA - **Q‑Learning**:離線學習,利用 Bellman 方程更新 Q 值,公式如下: ``` Q(s,a) ← Q(s,a) + α [ r + γ max_{a'} Q(s',a') - Q(s,a) ] ``` - **SARSA**:在線學習,更新時使用實際選擇的下一行動: ``` Q(s,a) ← Q(s,a) + α [ r + γ Q(s',a') - Q(s,a) ] ``` ### 6.3.2 策略梯度(Policy Gradient) 策略梯度直接對參數化策略 π_θ(a|s) 進行優化,典型形式是 REINFORCE: ``` ∇_θ J(θ) = E[ ∇_θ log π_θ(a_t|s_t) * G_t ] ``` 其中 G_t 為從時間步 t 起的折扣累積回饋。 ## 6.4 實作案例:CartPole‑v1 以下示範如何利用 `gymnasium` 與 `stable‑baselines3` 進行簡易 Q‑Learning。所有程式碼均以單引號包覆字串,避免 JSON 轉譯問題。 ```python import gymnasium as gym import numpy as np from collections import defaultdict import random # 初始化環境 env = gym.make('CartPole-v1', render_mode='human') # Q‑Table(預設為 0) Q = defaultdict(lambda: np.zeros(env.action_space.n)) # 超參數 alpha = 0.1 gamma = 0.99 epsilon = 0.1 for episode in range(200): state, _ = env.reset() state = tuple(state.round(1)) # 量化狀態 done = False while not done: if random.random() < epsilon: action = env.action_space.sample() else: action = np.argmax(Q[state]) next_state, reward, terminated, truncated, _ = env.step(action) next_state = tuple(next_state.round(1)) done = terminated or truncated # Q‑Learning 更新 best_next = np.argmax(Q[next_state]) td_target = reward + gamma * Q[next_state][best_next] Q[state][action] += alpha * (td_target - Q[state][action]) state = next_state env.close() ``` > **註記**:此範例僅作演示,實務上可加入 **epsilon decay**、**reward shaping** 與 **experience replay**。 ## 6.5 參數調整與實驗設計 1. **折扣因子 γ**:較高值會讓代理重視長期回饋;較低值則偏好短期獎勵。 2. **學習率 α**:過高可能造成震盪,過低則收斂緩慢。 3. **探索率 ε**:採用 *ε‑greedy* 或 *softmax*,並可實施 *decay* 策略。 4. **可重複實驗**:將所有參數寫入 `config.yaml`,並透過 `hydra` 或自訂 CLI 進行實驗流水線。 ## 6.6 風險與倫理(RL 角度) - **偏見傳遞**:如果環境或回饋設計偏頗,代理可能學習到有害策略。 - **安全性**:在真實環境(如機器人)中部署 RL 需要加入 **安全約束** 與 **回退機制**。 - **資料隱私**:某些 RL 任務涉及人類交互,必須遵循 GDPR 等隱私規範。 ## 6.7 小結 本章以理論與實務相結合,帶領讀者從 Markov 決策過程出發,透過 Q‑Learning、SARSA 與策略梯度演算法,並以 CartPole‑v1 為案例說明實作流程。接下來的章節將進一步探討 **模型部署** 與 **持續運維**,協助讀者將 RL 模型落地於真實世界。祝你在強化學習的探索旅程中,勇於實驗、嚴謹驗證。