返回目錄
A
資料科學深度探究:從原理到實務 - 第 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 模型落地於真實世界。祝你在強化學習的探索旅程中,勇於實驗、嚴謹驗證。