什麼是強化學習?
強化學習是機器學習的第三範式,讓 Agent 透過與環境互動來學習最佳行為策略。
監督式學習
有標注的訓練資料,學習輸入到輸出的映射。
非監督式學習
無標注資料,發掘資料內在的結構與模式。
強化學習
透過試誤(Trial & Error),從獎勵訊號中學習最佳行動策略。
🔑 強化學習的五大核心元素
🔄 Agent-Environment 互動循環
每個時間步 $t$,Agent 觀察狀態 $s_t$,選擇行動 $a_t$,環境轉移到 $s_{t+1}$ 並給出獎勵 $r_{t+1}$
🎯 強化學習的目標
Agent 的目標是最大化 累積折扣獎勵(Expected Cumulative Discounted Reward):
馬可夫決策過程(MDP)
強化學習問題的數學形式化框架,一切推導的起點。
📐 MDP 的正式定義
MDP 由五元組 $\mathcal{M} = (\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma)$ 組成:
🔑 馬可夫性質(Markov Property)
MDP 的核心假設:未來只依賴於當下狀態,與過去無關。
📋 策略(Policy)$\pi$
策略定義了 Agent 在每個狀態下的行為方式,分為兩種:
確定性策略
直接將狀態映射到行動:$a = \pi(s)$
隨機性策略
給出行動的機率分佈:$\pi(a|s) = P(A=a|S=s)$
在大多數 RL 演算法中,我們使用隨機性策略,其好處是具備探索性(exploration)。
🗺️ 互動示範:GridWorld MDP
點擊格子查看狀態轉移機率 $\mathcal{P}(s'|s,a)$
← 點擊左邊的格子來查看資訊
值函數與貝爾曼方程式
強化學習最重要的數學基礎,幾乎所有演算法都建立在貝爾曼方程之上。
📊 狀態值函數 $V^\pi(s)$
在策略 $\pi$ 下,從狀態 $s$ 出發的期望累積折扣回報:
📊 動作值函數 $Q^\pi(s, a)$
在策略 $\pi$ 下,在狀態 $s$ 採取行動 $a$ 後的期望累積折扣回報:
🔬 貝爾曼期望方程推導(完整過程)
我們從 $V^\pi(s)$ 的定義出發,一步步推導貝爾曼方程:
展開 $G_t$ 的遞迴關係:
這個遞迴分解是整個推導的關鍵。
代入 $V^\pi(s)$ 的定義:
利用期望的線性性質拆開:
對所有可能的行動 $a$ 和下一個狀態 $s'$ 展開期望值:
$V^\pi(s)$ 的貝爾曼期望方程:
🏆 最優值函數與貝爾曼最優方程
最優狀態值函數:所有策略中能達到的最大期望回報
貝爾曼最優方程(Bellman Optimality Equation):
對應的最優動作值函數:
🌳 備份圖(Backup Diagram)
Q-Learning
最經典的無模型(Model-Free)強化學習演算法,不需要知道環境的轉移機率。
🔧 時序差分學習(Temporal Difference, TD)
TD 學習是 Q-Learning 的基礎。它結合了蒙地卡羅法和動態規劃的優點:
🔬 Q-Learning 更新規則推導
Q-Learning 目標:找到最優動作值函數 $Q^*(s,a)$,使 Agent 能選擇最優行動。
根據貝爾曼最優方程,$Q^*(s,a)$ 滿足:
由於真實期望值無法直接計算,我們用單次採樣來近似:
注意:這裡用 $\max_{a'}$ 而非 $\pi(a'|s')$,這正是 Q-Learning 為「Off-Policy」演算法的原因。
定義損失函數(均方 TD 誤差):
對 $Q(s_t, a_t)$ 求梯度並更新:
💻 Q-Learning 演算法(虛擬碼)
初始化 Q(s, a) ← 0(對所有 s ∈ 𝒮, a ∈ 𝒜)
初始化學習率 α,折扣因子 γ,探索率 ε
For 每個 episode:
初始化狀態 s₀
For 每個時間步 t = 0, 1, 2, ...:
# ε-greedy 探索策略
若 uniform(0,1) < ε:
aₜ ← 隨機選擇行動(探索)
否則:
aₜ ← argmax_a Q(sₜ, a)(利用)
# 執行行動,觀察結果
執行 aₜ,獲得獎勵 rₜ₊₁,到達狀態 sₜ₊₁
# Q 值更新
Q(sₜ, aₜ) ← Q(sₜ, aₜ) + α × [rₜ₊₁ + γ × max_a Q(sₜ₊₁, a) - Q(sₜ, aₜ)]
sₜ ← sₜ₊₁
若 sₜ₊₁ 為終止狀態: break
⚖️ 探索與利用的兩難:$\varepsilon$-greedy 策略
🎮 Q-Learning 互動示範
觀察 Q 值如何透過與環境互動逐步收斂:
Q 值表(部分)
Policy Gradient 方法
直接對策略參數求梯度,適用於連續動作空間和大型狀態空間。
🧮 參數化策略
Policy Gradient 的核心想法:將策略參數化為 $\pi_\theta(a|s)$,直接對目標函數求梯度來優化策略。
定義目標函數(期望回報):
🔬 策略梯度定理(Policy Gradient Theorem)完整推導
將期望值展開為對軌跡的積分:
其中 $P(\tau;\theta)$ 是軌跡 $\tau$ 在策略 $\pi_\theta$ 下的機率:
利用恆等式 $\nabla_\theta \log f = \frac{\nabla_\theta f}{f}$,得到:
這個技巧極其重要!它將梯度轉化為期望值的形式,讓我們能用採樣來估計。
注意 $\mathcal{P}(s_{t+1}|s_t,a_t)$ 與 $\theta$ 無關,故:
這就是 REINFORCE 演算法的核心更新式!
📉 基線(Baseline)與方差縮減
原始 REINFORCE 方差很大,加入基線 $b(s)$(不影響梯度期望):
優勢函數衡量的是:執行動作 $a$ 比「在狀態 $s$ 下平均表現」好多少?
💻 REINFORCE 演算法
初始化策略網路 π_θ(隨機初始化參數 θ)
For 每個 episode i = 1, 2, ..., N:
# 用當前策略採樣軌跡
τᵢ = {s₀, a₀, r₁, s₁, a₁, r₂, ..., sₜ, aₜ, rₜ₊₁}
# 計算每個時間步的折扣回報
For t = T, T-1, ..., 0:
Gₜ = rₜ₊₁ + γ × Gₜ₊₁
# 計算策略梯度並更新
θ ← θ + α × Σₜ ∇_θ log π_θ(aₜ|sₜ) × Gₜ
輸出:最優策略 π_θ*
Actor-Critic 方法
結合 Policy Gradient 與值函數近似,同時訓練兩個網路。
🎭 Actor 與 Critic 的角色
Actor(演員)
參數化策略 $\pi_\theta(a|s)$,負責決策——在狀態 $s$ 下採取哪個行動 $a$。
Critic(評論家)
參數化值函數 $V_w(s)$,負責評估——當前策略有多好?給 Actor 提供反饋。
🔢 TD 誤差作為優勢函數的近似
精確計算優勢函數需要 $Q^\pi(s,a)$,實際中用 TD 誤差近似:
🔬 Actor-Critic 完整更新流程
最小化 TD 誤差(均方貝爾曼誤差):
用 Critic 提供的 TD 誤差更新策略:
熵正則項 $H$ 鼓勵探索,避免策略過早收斂到次優解。
📊 主要 RL 演算法比較
| 演算法 | 方法類型 | On/Off-Policy | 動作空間 | 優點 | 缺點 |
|---|---|---|---|---|---|
| Q-Learning | 值函數方法 | Off-Policy | 離散 | 樣本效率高、穩定 | 不適合連續動作 |
| DQN | 深度值函數 | Off-Policy | 離散 | 能處理高維輸入 | 離散動作限制 |
| REINFORCE | Policy Gradient | On-Policy | 連續 / 離散 | 直接優化策略 | 高方差、樣本效率低 |
| A2C / A3C | Actor-Critic | On-Policy | 連續 / 離散 | 低方差、穩定 | On-Policy 效率限制 |
| PPO | Actor-Critic | On-Policy | 連續 / 離散 | 穩健、易調參 | 比 Off-Policy 效率稍低 |
| SAC | Actor-Critic + Entropy | Off-Policy | 連續 | 樣本效率高 + 探索好 | 實作複雜度高 |