📐 數學推導 × 直覺理解

強化學習
完全指南

從馬可夫決策過程到 Policy Gradient,
每一個公式都附有完整的數學推導與直覺解釋。

6核心主題
30+數學公式
100%免費開放
第一章

什麼是強化學習?

強化學習是機器學習的第三範式,讓 Agent 透過與環境互動來學習最佳行為策略。

📊

監督式學習

有標注的訓練資料,學習輸入到輸出的映射。

例:圖片分類、垃圾郵件偵測
🔍

非監督式學習

無標注資料,發掘資料內在的結構與模式。

例:分群、降維、生成模型
🎮

強化學習

透過試誤(Trial & Error),從獎勵訊號中學習最佳行動策略。

例:AlphaGo、機器人控制、自動駕駛

🔑 強化學習的五大核心元素

🤖 Agent(智能體) 做出決策的主體,對應到神經網路或演算法
🌍 Environment(環境) Agent 所處的世界,對 action 作出回應
📍 State $s$(狀態) 環境在某時刻的完整描述
Action $a$(行動) Agent 在某狀態下可採取的操作
🏆 Reward $r$(獎勵) 環境對 Agent 行為的即時反饋訊號

🔄 Agent-Environment 互動循環

Agent
行動 $a_t$
狀態 $s_{t+1}$,獎勵 $r_{t+1}$
Environment

每個時間步 $t$,Agent 觀察狀態 $s_t$,選擇行動 $a_t$,環境轉移到 $s_{t+1}$ 並給出獎勵 $r_{t+1}$

🎯 強化學習的目標

Agent 的目標是最大化 累積折扣獎勵(Expected Cumulative Discounted Reward)

$$G_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k+1}$$
$G_t$從時間步 $t$ 起的累積折扣回報
$\gamma \in [0,1]$折扣因子(discount factor),控制對未來獎勵的重視程度
$r_{t+k+1}$未來第 $k+1$ 步的即時獎勵
💡 為何需要折扣因子 $\gamma$? 當 $\gamma \to 0$,Agent 極度短視,只在乎立即獎勵; 當 $\gamma \to 1$,Agent 對所有未來獎勵一視同仁。 折扣因子也確保無限時間步的求和是有限的($\sum \gamma^k < \infty$)。
第二章

馬可夫決策過程(MDP)

強化學習問題的數學形式化框架,一切推導的起點。

📐 MDP 的正式定義

MDP 由五元組 $\mathcal{M} = (\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma)$ 組成:

$\mathcal{S}$狀態空間:所有可能狀態的集合
$\mathcal{A}$動作空間:所有可能行動的集合
$\mathcal{P}$轉移機率:$\mathcal{P}(s'|s,a)$ = 在狀態 $s$ 採取行動 $a$ 後轉移到 $s'$ 的機率
$\mathcal{R}$獎勵函數:$\mathcal{R}(s,a)$ 或 $\mathcal{R}(s,a,s')$
$\gamma$折扣因子:$\gamma \in [0,1]$

🔑 馬可夫性質(Markov Property)

MDP 的核心假設:未來只依賴於當下狀態,與過去無關。

$$P(s_{t+1} | s_t, a_t, s_{t-1}, a_{t-1}, \ldots, s_0, a_0) = P(s_{t+1} | s_t, a_t)$$
💡 直覺理解:就像西洋棋一樣,當前棋盤局面(狀態)已包含了決定下一步所需的所有資訊,無需回顧之前所有棋步的歷史。

📋 策略(Policy)$\pi$

策略定義了 Agent 在每個狀態下的行為方式,分為兩種:

確定性策略

$$\pi: \mathcal{S} \to \mathcal{A}$$

直接將狀態映射到行動:$a = \pi(s)$

隨機性策略

$$\pi: \mathcal{S} \times \mathcal{A} \to [0,1]$$

給出行動的機率分佈:$\pi(a|s) = P(A=a|S=s)$

在大多數 RL 演算法中,我們使用隨機性策略,其好處是具備探索性(exploration)。

🗺️ 互動示範:GridWorld MDP

點擊格子查看狀態轉移機率 $\mathcal{P}(s'|s,a)$

← 點擊左邊的格子來查看資訊

目標(+10) 陷阱(-10) 牆壁(不可通行) 起點
第三章

值函數與貝爾曼方程式

強化學習最重要的數學基礎,幾乎所有演算法都建立在貝爾曼方程之上。

📊 狀態值函數 $V^\pi(s)$

在策略 $\pi$ 下,從狀態 $s$ 出發的期望累積折扣回報

$$V^\pi(s) = \mathbb{E}_\pi \left[ G_t \mid S_t = s \right] = \mathbb{E}_\pi \left[ \sum_{k=0}^{\infty} \gamma^k r_{t+k+1} \mid S_t = s \right]$$

📊 動作值函數 $Q^\pi(s, a)$

在策略 $\pi$ 下,在狀態 $s$ 採取行動 $a$ 後的期望累積折扣回報

$$Q^\pi(s, a) = \mathbb{E}_\pi \left[ G_t \mid S_t = s, A_t = a \right]$$

🔬 貝爾曼期望方程推導(完整過程)

我們從 $V^\pi(s)$ 的定義出發,一步步推導貝爾曼方程:

Step 1

展開 $G_t$ 的遞迴關係:

$$G_t = r_{t+1} + \gamma r_{t+2} + \gamma^2 r_{t+3} + \cdots = r_{t+1} + \gamma G_{t+1}$$

這個遞迴分解是整個推導的關鍵。

Step 2

代入 $V^\pi(s)$ 的定義:

$$V^\pi(s) = \mathbb{E}_\pi \left[ r_{t+1} + \gamma G_{t+1} \mid S_t = s \right]$$
Step 3

利用期望的線性性質拆開:

$$V^\pi(s) = \mathbb{E}_\pi \left[ r_{t+1} \mid S_t = s \right] + \gamma \mathbb{E}_\pi \left[ G_{t+1} \mid S_t = s \right]$$
Step 4

對所有可能的行動 $a$ 和下一個狀態 $s'$ 展開期望值:

$$V^\pi(s) = \sum_{a} \pi(a|s) \sum_{s'} \mathcal{P}(s'|s,a) \left[ \mathcal{R}(s,a,s') + \gamma V^\pi(s') \right]$$
✅ 最終結果

$V^\pi(s)$ 的貝爾曼期望方程:

$$\boxed{V^\pi(s) = \sum_{a \in \mathcal{A}} \pi(a|s) \left[ \mathcal{R}(s,a) + \gamma \sum_{s' \in \mathcal{S}} \mathcal{P}(s'|s,a) V^\pi(s') \right]}$$

🏆 最優值函數與貝爾曼最優方程

最優狀態值函數:所有策略中能達到的最大期望回報

$$V^*(s) = \max_\pi V^\pi(s)$$

貝爾曼最優方程(Bellman Optimality Equation):

$$V^*(s) = \max_{a \in \mathcal{A}} \left[ \mathcal{R}(s,a) + \gamma \sum_{s' \in \mathcal{S}} \mathcal{P}(s'|s,a) V^*(s') \right]$$

對應的最優動作值函數:

$$Q^*(s,a) = \mathcal{R}(s,a) + \gamma \sum_{s' \in \mathcal{S}} \mathcal{P}(s'|s,a) \max_{a'} Q^*(s',a')$$
💡 重要關係:$V^*(s) = \max_a Q^*(s,a)$ — 最優狀態值等於最優動作值中的最大值。

🌳 備份圖(Backup Diagram)

$V^\pi(s)$ 的備份圖
s a₁ a₂ π(a₁|s) s' s' s' 𝒫(s'|s,a₁) r + γV(s')
第四章

Q-Learning

最經典的無模型(Model-Free)強化學習演算法,不需要知道環境的轉移機率。

🔧 時序差分學習(Temporal Difference, TD)

TD 學習是 Q-Learning 的基礎。它結合了蒙地卡羅法和動態規劃的優點:

$$V(S_t) \leftarrow V(S_t) + \alpha \left[ \underbrace{r_{t+1} + \gamma V(S_{t+1})}_{\text{TD 目標(TD Target)}} - V(S_t) \right]$$
$\alpha$學習率(learning rate),控制更新步長
$r_{t+1} + \gamma V(S_{t+1}) - V(S_t)$TD 誤差(TD Error)$\delta_t$,即預測與目標的差距

🔬 Q-Learning 更新規則推導

核心想法

Q-Learning 目標:找到最優動作值函數 $Q^*(s,a)$,使 Agent 能選擇最優行動。

根據貝爾曼最優方程,$Q^*(s,a)$ 滿足:

$$Q^*(s,a) = \mathbb{E}\left[ r_{t+1} + \gamma \max_{a'} Q^*(s_{t+1}, a') \mid s_t=s, a_t=a \right]$$
採樣近似

由於真實期望值無法直接計算,我們用單次採樣來近似:

$$\text{TD Target} = r_{t+1} + \gamma \max_{a'} Q(s_{t+1}, a')$$

注意:這裡用 $\max_{a'}$ 而非 $\pi(a'|s')$,這正是 Q-Learning 為「Off-Policy」演算法的原因。

梯度下降更新

定義損失函數(均方 TD 誤差):

$$\mathcal{L} = \frac{1}{2}\left[ r_{t+1} + \gamma \max_{a'} Q(s_{t+1}, a') - Q(s_t, a_t) \right]^2$$

對 $Q(s_t, a_t)$ 求梯度並更新:

$$\frac{\partial \mathcal{L}}{\partial Q(s_t,a_t)} = -\left[ r_{t+1} + \gamma \max_{a'} Q(s_{t+1}, a') - Q(s_t, a_t) \right]$$
✅ Q-Learning 更新規則
$$\boxed{Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_{t+1} + \gamma \max_{a'} Q(s_{t+1}, a') - Q(s_t, a_t) \right]}$$

💻 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 策略

$$\pi(a|s) = \begin{cases} 1-\varepsilon + \frac{\varepsilon}{|\mathcal{A}|} & \text{若 } a = \arg\max_{a'} Q(s,a') \\ \frac{\varepsilon}{|\mathcal{A}|} & \text{其他行動} \end{cases}$$
💡 以機率 $1-\varepsilon$ 選擇當前最優行動(利用),以機率 $\varepsilon$ 隨機探索(探索)。通常讓 $\varepsilon$ 隨訓練逐漸衰減。

🎮 Q-Learning 互動示範

觀察 Q 值如何透過與環境互動逐步收斂:

步數:0 | ε = 1.00

Q 值表(部分)

第五章

Policy Gradient 方法

直接對策略參數求梯度,適用於連續動作空間和大型狀態空間。

🧮 參數化策略

Policy Gradient 的核心想法:將策略參數化為 $\pi_\theta(a|s)$,直接對目標函數求梯度來優化策略。

定義目標函數(期望回報):

$$J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ G(\tau) \right] = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^{T} \gamma^t r_t \right]$$
$\tau$軌跡(trajectory):$(s_0, a_0, r_1, s_1, a_1, r_2, \ldots)$
$\theta$策略網路的參數(通常是神經網路的權重)

🔬 策略梯度定理(Policy Gradient Theorem)完整推導

Step 1:展開目標函數

將期望值展開為對軌跡的積分:

$$J(\theta) = \int_\tau P(\tau;\theta) G(\tau) \, d\tau$$

其中 $P(\tau;\theta)$ 是軌跡 $\tau$ 在策略 $\pi_\theta$ 下的機率:

$$P(\tau;\theta) = \rho(s_0) \prod_{t=0}^{T} \pi_\theta(a_t|s_t) \mathcal{P}(s_{t+1}|s_t, a_t)$$
Step 2:對 $\theta$ 求梯度
$$\nabla_\theta J(\theta) = \int_\tau \nabla_\theta P(\tau;\theta) G(\tau) \, d\tau$$
Step 3:對數微分技巧(Log-Derivative Trick)

利用恆等式 $\nabla_\theta \log f = \frac{\nabla_\theta f}{f}$,得到:

$$\nabla_\theta P(\tau;\theta) = P(\tau;\theta) \cdot \nabla_\theta \log P(\tau;\theta)$$

這個技巧極其重要!它將梯度轉化為期望值的形式,讓我們能用採樣來估計。

Step 4:代入並化簡
$$\nabla_\theta J(\theta) = \int_\tau P(\tau;\theta) \cdot \nabla_\theta \log P(\tau;\theta) \cdot G(\tau) \, d\tau = \mathbb{E}_{\tau \sim \pi_\theta} \left[ G(\tau) \cdot \nabla_\theta \log P(\tau;\theta) \right]$$
Step 5:展開對數梯度

注意 $\mathcal{P}(s_{t+1}|s_t,a_t)$ 與 $\theta$ 無關,故:

$$\nabla_\theta \log P(\tau;\theta) = \sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t|s_t)$$
✅ 策略梯度定理
$$\boxed{\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t \right]}$$

這就是 REINFORCE 演算法的核心更新式!

📉 基線(Baseline)與方差縮減

原始 REINFORCE 方差很大,加入基線 $b(s)$(不影響梯度期望):

$$\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot \left( G_t - b(s_t) \right) \right]$$
💡 通常選擇 $b(s_t) = V^\pi(s_t)$(狀態值函數),此時 $G_t - V^\pi(s_t)$ 稱為優勢函數(Advantage Function)$A^\pi(s_t, a_t)$
$$A^\pi(s, a) = Q^\pi(s, a) - V^\pi(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$。

$$\theta \leftarrow \theta + \alpha \nabla_\theta \log \pi_\theta(a|s) \cdot A(s,a)$$
🎓

Critic(評論家)

參數化值函數 $V_w(s)$,負責評估——當前策略有多好?給 Actor 提供反饋。

$$w \leftarrow w + \beta \delta_t \nabla_w V_w(s_t)$$

🔢 TD 誤差作為優勢函數的近似

精確計算優勢函數需要 $Q^\pi(s,a)$,實際中用 TD 誤差近似:

$$\delta_t = r_{t+1} + \gamma V_w(s_{t+1}) - V_w(s_t) \approx A^\pi(s_t, a_t)$$
💡 TD 誤差 $\delta_t$ 是優勢函數的無偏估計(當 $V_w$ 是精確值函數時完全等價)。這讓我們無需顯式計算 $Q$ 值。

🔬 Actor-Critic 完整更新流程

Critic 更新

最小化 TD 誤差(均方貝爾曼誤差):

$$\mathcal{L}(w) = \frac{1}{2} \delta_t^2 = \frac{1}{2} \left[ r_{t+1} + \gamma V_w(s_{t+1}) - V_w(s_t) \right]^2$$
$$w \leftarrow w - \beta \nabla_w \mathcal{L}(w) = w + \beta \delta_t \nabla_w V_w(s_t)$$
Actor 更新

用 Critic 提供的 TD 誤差更新策略:

$$\theta \leftarrow \theta + \alpha \delta_t \nabla_\theta \log \pi_\theta(a_t|s_t)$$
✅ A2C 目標函數(Advantage Actor-Critic)
$$\boxed{\mathcal{L}_{\text{A2C}} = \underbrace{-\log \pi_\theta(a_t|s_t) \cdot A_t}_{\text{Actor Loss}} + \underbrace{c_1 (V_w(s_t) - G_t)^2}_{\text{Critic Loss}} - \underbrace{c_2 H[\pi_\theta(\cdot|s_t)]}_{\text{熵正則項}}}$$

熵正則項 $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 連續 樣本效率高 + 探索好 實作複雜度高