1998 - Sutton & Barto 的 RL 教科書(強化學習正式成為一門學科)#
案件摘要#
1998 年,Richard Sutton 與 Andrew Barto 出版《Reinforcement Learning: An Introduction》(MIT Press)。 這本書把散落四十年(1950–1998)的碎片——Turing 的學習機、Bellman 的動態規劃、 Samuel 的自我對弈、Sutton 的 TD、Watkins 的 Q-learning——整合成一套 統一的理論框架:MDP + 值函數 + TD 學習 + 策略梯度。 強化學習從此有了自己的教科書、自己的術語、自己的課程——正式成為一門學科。
前因 -- 為什麼會有這個案子#
- 碎片的時代:到 1998 年為止,RL 的成果散落在心理學(效果律)、控制理論(DP)、 神經網路(LMS、TD-Gammon)、運籌學(Q-learning)四個領域,術語互不相通, 沒有一本教科書能把它們講成一套連貫的故事。碎片化是兇手。
- UMass 的師徒檔案:Barto 是 Sutton 的博士導師(1984 年 Sutton 在 UMass Amherst 取得博士學位),兩人從 1980 年代初的自適應評價元 (actor–critic) 合作至今—— 師徒合寫教科書,是學科成熟的標誌。
- 教科書的偵探直覺:Sutton 與 Barto 不只整理,還給出統一的數學語言—— 把所有演算法都寫成「Bellman 方程的隨機逼近」,讓 TD、Q-learning、SARSA、 動態規劃在同一張地圖上。
線索與推理 -- 數學式、程式、理論#
核心推理一:MDP 統一框架#
全書的地圖:所有 RL 問題都化為馬爾可夫決策過程 (MDP) \(\langle \mathcal{S}, \mathcal{A}, P, r, \gamma \rangle\) , 目標是找最優策略
四條求解路線,全書各佔一編: 1. 動態規劃(知道模型):值迭代、策略迭代 2. Monte Carlo(不知道模型,等終局):回傳平均 3. TD 學習(不知道模型,每步即學):TD(0)、SARSA、Q-learning 4. 策略梯度(直接學策略): \(\theta \leftarrow \theta + \alpha\, \nabla_\theta J(\theta)\)
核心推理二:所有演算法 = Bellman 方程的隨機逼近#
教科書的統一視角(偵探的終極推理): | 演算法 | 更新式 | 逼近的方程 | |--------|--------|-----------| | 值迭代 | \(V \leftarrow \max_a [r + \gamma P V]\) | Bellman 最優方程 | | TD(0) | \(V(s) \leftarrow V(s) + \alpha[r + \gamma V(s') - V(s)]\) | Bellman 期望方程 | | SARSA | \(Q \leftarrow Q + \alpha[r + \gamma Q(s',a') - Q(s,a)]\) | on-policy Bellman | | Q-learning | \(Q \leftarrow Q + \alpha[r + \gamma \max_{a'} Q(s',a') - Q(s,a)]\) | Bellman 最優方程 |
全部都是壓縮映射的隨機逼近——Sutton 與 Barto 用一句話統一了四十年的碎片。
Python:SARSA vs Q-learning(on-policy vs off-policy 偵查)#
import numpy as np
S, A, gamma = 4, 2, 0.9 # 狀態 0~3,終點 = 3
P = np.zeros((S, A, S)); r = np.zeros((S, A))
for s in range(S-1):
P[s,0,s+1], P[s,1,max(s-1,0)] = 1, 1
r[s,0], r[s,1] = (1.0 if s+1 == S-1 else 0.0), 0.0
def eps_greedy(Q, s, eps=0.2):
return np.random.randint(A) if np.random.rand() < eps else Q[s].argmax()
def sarsa(Q, eps=0.2, alpha=0.1, episodes=3000):
for _ in range(episodes):
s, a = 0, eps_greedy(Q, 0, eps)
while s < S-1:
s2 = np.random.choice(S, p=P[s,a])
a2 = eps_greedy(Q, s2, eps) # 學的是「實際會走」的策略
Q[s,a] += alpha*(r[s,a] + gamma*Q[s2,a2] - Q[s,a])
s, a = s2, a2
return Q
def qlearn(Q, eps=0.2, alpha=0.1, episodes=3000):
for _ in range(episodes):
s = 0
while s < S-1:
a = eps_greedy(Q, s, eps)
s2 = np.random.choice(S, p=P[s,a])
Q[s,a] += alpha*(r[s,a] + gamma*Q[s2].max() - Q[s,a]) # 學「最優」
s = s2
return Q
np.random.seed(0)
Q1 = sarsa(np.zeros((S, A))); Q2 = qlearn(np.zeros((S, A)))
print("SARSA 的 on-policy 評估(含探索風險):",
[round(float(Q1[s].max()*(0.8) + Q1[s].min()*0.2), 3) for s in range(S-1)])
print("Q-learning 學到的最優估值:", Q2[:S-1].max(axis=1).round(3).tolist())
SARSA 的 on-policy 評估(含探索風險): [0.751, 0.841, 0.951]
Q-learning 學到的最優估值: [0.81, 0.9, 1.0]
結案 -- 後果與影響#
- 學科的誕生:1998 年之後,各大學開設 RL 課程、使用這本教科書—— RL 從「散落的技巧」變成「有統一框架的學科」。
- 第二版的預言:2018 年的第二版新增了深度 RL、策略梯度、AlphaGo 案例—— 第一版播種、第二版收割,跨越二十年。
- 圖靈獎的伏筆:Sutton 與 Barto 因這套框架獲 2024 年 ACM 圖靈獎—— 「被譽為強化學習的奠基之作」。
- 培養了下一代的兇手:DQN 的作者(Mnih、Silver 等人)皆是讀這本書長大的—— 教科書培養了引爆深度 RL 的一代。
關鍵人物與文獻#
- Richard Sutton & Andrew Barto:《Reinforcement Learning: An Introduction》(MIT Press, 1998)。
- 2024 年 ACM 圖靈獎:兩人因 RL 奠基性貢獻獲獎。
- 相關案件:
1988-SuttonTD學習.md、1989-WatkinsQ-learning.md、2013-DQN打Atari.md。