ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

贝尔曼方程与强化学习收敛性:从数学原理到工程调试

贝尔曼方程与强化学习收敛性:从数学原理到工程调试

简介:《强化学习的数学原理》是西湖大学赵世钰教授撰写的英文专著,面向具备线性代数、概率论与基础优化知识的研究生及算法工程师,系统解决强化学习理论根基薄弱、公式推导模糊、算法理解流于表面等核心痛点。全书以数学严谨性为纲,从网格世界等直观示例切入,逐步展开马尔可夫决策过程、贝尔曼方程及其矩阵形式、值迭代与策略迭代收敛性、蒙特卡洛与时间差分方法的随机逼近本质、值函数近似与策略梯度的泛函分析视角,并在附录中严格论证序列收敛性,形成闭环理论体系。资源为单文件PDF(18.9MB),内容完整覆盖10章正文与附录,排版清晰、公式规范、示例丰富,适合作为高校RL课程补充教材或算法研发人员深度研读的数学参考手册。目前已有847人学习下载,是少有的兼顾数学深度与教学可读性的强化学习原理型著作。

1. 强化学习的数学原理:为什么你调通了Q-learning却总在收敛边界上反复横跳?

你写完一个带经验回放的DQN,reward曲线终于爬升——但下一秒就崩成锯齿;你把learning rate从1e-3调到1e-4,训练反而更抖;你换掉ReLU换成Swish,loss突然卡死在0.87不再下降……这些不是玄学,是数学没落地的典型症状。赵世钰老师这本《强化学习的数学原理》不讲API怎么调、框架怎么搭,而是直击所有翻车现场的底层根因:贝尔曼算子的收缩性是否被破坏?随机近似迭代的步长序列是否满足Robbins-Monro条件?策略梯度估计中baseline的偏差-方差权衡是否失控?全书用同一套网格世界贯穿10章,把“值函数为何能收敛”“为什么off-policy能学optimal policy”“为什么actor-critic必须解耦critic更新节奏”全拆到线性代数与测度论的颗粒度。它解决的不是“怎么跑通”,而是“为什么一改参数就崩”——当你看懂第6章Dvoretzky定理如何约束SGD步长衰减率,你就不会再盲目调lr;当你吃透第7章TD误差的马尔可夫链分解,就能一眼识别出自己代码里那个没做状态归一化导致的方差爆炸。这不是一本“入门书”,而是一份给已踩过坑的开发者准备的数学级调试手册。

2. 贝尔曼方程:为什么状态值函数必须满足这个递归结构,而不是随便定义一个损失函数去拟合?

贝尔曼方程不是人为规定的“算法步骤”,而是由马尔可夫决策过程(MDP)的底层概率结构强制导出的唯一自洽约束。它回答的是一个根本问题:在给定策略π下,状态s的价值v_π(s)究竟该是什么?答案不是靠经验猜,而是由环境动力学P(s'|s,a)和奖励函数R(s,a,s')共同决定的必然结果。

2.1 状态值的本质:一个带折扣的无穷级数期望

v_π(s) = 𝔼_π[G_t | S_t = s],其中G_t = R_{t+1} + γR_{t+2} + γ²R_{t+3} + … 是从时刻t开始的折扣回报。关键在于,这个期望无法直接计算——因为未来轨迹长度无限,且每一步都依赖于策略π和转移概率P。但MDP的马尔可夫性(即未来只依赖当前状态)提供了突破口:将G_t拆成首项R_{t+1}和剩余部分γG_{t+1},而G_{t+1}的分布只取决于S_{t+1}。于是:

v_π(s) = 𝔼_π[R_{t+1} + γG_{t+1} | S_t = s]
= Σ_a π(a|s) Σ_{s',r} p(s',r|s,a) [r + γ 𝔼_π[G_{t+1} | S_{t+1} = s']]
= Σ_a π(a|s) Σ_{s',r} p(s',r|s,a) [r + γ v_π(s')]

这就是贝尔曼方程的标准形式。注意:它不是定义,而是推导结果;v_π(s)若不满足此式,则其作为“长期回报期望”的语义就自相矛盾。

2.2 矩阵-向量形式:把方程变成可解的线性系统

当状态空间有限(|𝒮|=n),可将v_π ∈ ℝⁿ视为列向量,定义:

  • 转移矩阵 P^π ∈ ℝ^{n×n},其中 [P^π]_{ij} = Σ_a π(a|s_i) p(s_j|s_i,a)
  • 奖励向量 r^π ∈ ℝⁿ,其中 [r^π]i = Σ_a π(a|s_i) Σ{s',r} p(s',r|s_i,a) r

则贝尔曼方程写作:
v_π = r^π + γ P^π v_π
→ (I - γ P^π) v_π = r^π

此时解的存在唯一性完全取决于矩阵(I - γ P^π)是否可逆。而由于P^π是随机矩阵(行和为1),其谱半径ρ(P^π) ≤ 1,故γ < 1时ρ(γ P^π) < 1,从而I - γ P^π严格对角占优,必可逆。这是折扣因子γ < 1的数学必要性——没有它,方程可能无解或无穷多解。

2.3 闭式解与迭代解:两种求解路径暴露的本质差异

闭式解直接给出:
v_π = (I - γ P^π)^{-1} r^π

但实际中P^π和r^π往往未知(model-free场景),且矩阵求逆复杂度O(n³),不可行。于是转向迭代法:
v_{k+1}(s) ← Σ_a π(a|s) Σ_{s',r} p(s',r|s,a) [r + γ v_k(s')]

这等价于不动点迭代 v_{k+1} = T^π(v_k),其中T^π是贝尔曼算子。关键性质在于:T^π是γ-压缩映射(γ-contractive mapping),即对任意两个价值函数u,v,有||T^π(u) - T^π(v)||_∞ ≤ γ ||u - v||_∞。这意味着每次迭代都让解向真实v_π收缩γ倍,保证全局收敛且误差以几何级数衰减。

提示:压缩映射性质是所有动态规划算法(如VI/PI)收敛的基石。若你的自定义更新规则不满足此性质(例如用非线性激活函数扭曲TD误差),收敛性立即失效。

2.4 从状态值到动作值:Q函数为何天然适配策略优化?

状态值v_π(s)描述“在s处按π行动的长期收益”,但无法指导“下一步该选哪个a”。动作值q_π(s,a) = 𝔼_π[G_t | S_t=s, A_t=a]则直接关联动作选择。其贝尔曼方程为:
q_π(s,a) = Σ_{s',r} p(s',r|s,a) [r + γ Σ_{a'} π(a'|s') q_π(s',a')]

对比v_π方程,q_π的右侧显式包含π(a'|s'),这使它成为策略改进的天然载体:要提升策略,只需对每个s选择使q_π(s,a)最大的a。而v_π的更新需先通过π加权平均q_π,再反推——这正是策略迭代中“策略评估→策略改进”两步分离的数学根源。

2.5 常见问题排查:为什么你的贝尔曼更新总在震荡?

  • 现象:v_k(s)在两个值之间周期性跳变,不收敛
    原因:γ ≥ 1 或 步长过大(如用固定步长α而非衰减步长)。当γ=1时,T^π失去压缩性;当α过大,迭代v_{k+1} = v_k + α[T^π(v_k) - v_k]可能跨过不动点。
    解决:强制γ ≤ 0.99;若用随机近似,确保步长满足∑α_k=∞, ∑α_k²<∞(Robbins-Monro条件)

  • 现象:v_k(s)收敛但值明显偏离理论预期(如网格世界中目标格子v值应最高却排第三)
    原因:状态转移概率p(s',r|s,a)未归一化,或奖励r的符号/量纲未统一(如有的r∈[0,1],有的r∈[-10,10])
    解决:检查p矩阵每行和是否为1;对r做min-max缩放至[-1,1]

  • 现象:矩阵求逆法得到v_π,但代入贝尔曼方程验证时残差||v_π - r^π - γ P^π v_π||很大
    原因:P^π构建错误——常见于混淆了p(s',r|s,a)与p(s'|s,a),忽略了r的期望计算。正确做法是先算E[r|s,a] = Σ_{s',r} p(s',r|s,a)r,再与p(s'|s,a)组合
    解决:用小规模网格(3×3)手算验证P^π和r^π,比对纸质推导

3. 贝尔曼最优方程:为什么“贪心策略”能直接导出最优解,而无需遍历所有策略?

贝尔曼最优方程(BOE)不是对某个策略π的描述,而是对*所有可能策略中最优者v_的刻画。它揭示了一个反直觉事实:最优价值函数v_(s) = max_π v_π(s)本身满足一个确定性方程,且其解直接对应最优策略π_(s) = argmax_a q_*(s,a)。这使得我们能绕过策略空间的指数爆炸,直接在价值空间搜索最优解。

3.1 最优性的本质:v_*是所有v_π的逐点上确界

v_(s)定义为所有策略下s状态价值的上确界。由于策略空间是紧集(在有限MDP中),上确界可达,即存在π_使v_(s) = v_{π_}(s)。BOE正是v_必须满足的约束:
**v_
(s) = max_a Σ_{s',r} p(s',r|s,a) [r + γ v_*(s')]**

注意右侧的max操作——它取代了v_π方程中的π加权平均。这意味着:在s处,最优策略π_*必然选择使即时奖励与后续最优价值之和最大的动作a。这正是“贪心”(greedy)的数学表达,且贪心操作在此处是精确最优的,而非启发式近似。

3.2 BOE的收缩性:为什么值迭代(VI)能收敛到v_*?

BOE对应的贝尔曼最优算子T_定义为:
(T_v)(s) = max_a Σ_{s',r} p(s',r|s,a) [r + γ v(s')]

关键证明(书中3.3.4节):T_同样是γ-压缩映射。对任意u,v:
||(T_
u)(s) - (T_* v)(s)||∞ = |max_a f_u(a) - max_a f_v(a)| ≤ max_a |f_u(a) - f_v(a)| ≤ γ ||u - v||∞
其中f_u(a) = Σ
{s',r} p(s',r|s,a)[r + γ u(s')]。这保证了迭代v
{k+1} = T_* v_k必收敛到唯一不动点v_*。

注意:T_*的压缩性比T^π更难证,因为它涉及max操作的Lipschitz连续性。赵世钰老师用“max函数的非扩张性”(non-expansiveness)巧妙处理,这是理解VI收敛的核心。

3.3 矩阵-向量形式的陷阱:为什么BOE不能简单写成线性方程?

v_* = r^* + γ P^* v_*看似成立,但r^*和P^*依赖于v_本身(因最优动作a随v_变化),故P^不是常数矩阵。这导致BOE本质上是非线性方程。这也是为什么闭式解v_= (I - γ P^)^{-1} r^*不可行——P^未知且依赖解。值迭代的迭代法恰恰规避了这一困境:每轮用当前v_k计算a_k(s) = argmax_a q_k(s,a),再构造临时P^{π_k}和r^{π_k},相当于用一系列线性近似逼近非线性方程。

3.4 收敛速度的数学瓶颈:为什么VI需要O(log(1/ε)/log(1/γ))轮?

由压缩映射性质,||v_k - v_||∞ ≤ γ^k ||v_0 - v||_∞。设初始误差界为D,则要使误差<ε,需k > log(D/ε)/log(1/γ)。这解释了为何γ越接近1,收敛越慢——例如γ=0.99时,log(1/γ)≈0.01,k需达数百轮;而γ=0.9时,log(1/γ)≈0.105,k仅需数十轮。实践中,若发现VI收敛极慢,首要检查γ是否过大,而非怀疑代码bug。

3.5 常见问题排查:为什么你的值迭代总卡在次优解?

  • 现象:v_k(s)收敛,但对应策略π_k在测试中表现远低于理论最优
    原因:状态空间离散化不足或动作空间未覆盖关键区域。BOE假设动作集A完备,若A中缺失真正最优动作a*,则max操作被迫选次优a。
    解决:在网格世界中,确认动作集包含{上、下、左、右、不动};在连续控制中,确保采样动作覆盖足够范围(如用Ornstein-Uhlenbeck噪声)

  • 现象:v_k(s)收敛值随初始化v_0剧烈变化
    原因:γ ≥ 1 或 环境存在零环(zero-loop)——即存在状态循环且r=0,导致γ^k项不衰减。此时v_*不唯一(可加任意常数),BOE有无穷多解。
    解决:检查MDP中是否存在r=0的自环;若存在,强制γ < 1并添加微小正则项(如v ← (1-λ)v + λT_*v)

  • 现象:迭代中v_k(s)某轮突增后持续高位,不回落
    原因:浮点精度误差在max操作中被放大。当多个q_k(s,a)值非常接近时,argmax的微小扰动导致a切换,引发v_k跳变。
    解决:在argmax前添加soft-max平滑:a
    _k(s) = softmax_τ(q_k(s,·)),τ为温度参数

4. 值迭代与策略迭代:为什么策略迭代收敛更快,却在深度强化学习中被值迭代抛弃?

值迭代(VI)和策略迭代(PI)是求解BOE的两大经典动态规划算法。PI理论上收敛轮数更少,但VI在现代RL中成为主流——这并非工程妥协,而是由模型可用性、计算范式迁移、以及函数近似的数学约束共同决定的必然选择。

4.1 值迭代:用单次贝尔曼最优更新替代完整策略评估

VI的更新规则极其简洁:
v_{k+1}(s) ← max_a Σ_{s',r} p(s',r|s,a) [r + γ v_k(s')]

它不显式维护策略π_k,而是每轮直接更新v_k。其本质是将策略评估(PE)和策略改进(PI)融合为一步:v_k隐含了策略π_k(即π_k(s)=argmax_a q_k(s,a)),而v_{k+1}的计算既是基于π_k的PE(右侧求和),又是对π_k的改进(max操作)。这种融合牺牲了PE的完整性(未等v_k充分收敛到v_{π_k}就改进),但极大降低了每轮计算量——尤其当状态空间大时,避免了求解线性系统(I - γ P^{π_k})v = r^{π_k}。

4.2 策略迭代:分治思想的极致体现

PI严格分离两步:

  1. 策略评估(PE):对固定π_k,求解v_{π_k},即解(I - γ P^{π_k})v = r^{π_k}
  2. 策略改进(PI):令π_{k+1}(s) = argmax_a q_{π_k}(s,a)

PI的收敛性由“单调改进引理”保证:v_{π_{k+1}} ≥ v_{π_k}(逐点不减),且最优策略是上界,故必收敛。更重要的是,PI通常比VI收敛轮数少得多——因为PE确保了每轮改进都基于精确的v_{π_k},而VI的v_k只是v_{π_k}的粗糙估计。

4.3 截断策略迭代(TPI):在VI与PI之间寻找数学平衡点

TPI是PI的实用变体:PE步不求精确解v_{π_k},而是只执行m轮迭代(m≥1):
v^{(0)} = v_k
v^{(i+1)}(s) ← Σ_a π_k(a|s) Σ_{s',r} p(s',r|s,a)[r + γ v^{(i)}(s')] (i=0,...,m-1)
v_{k+1} = v^{(m)}, π_{k+1}(s) = argmax_a q_{v_{k+1}}(s,a)

当m=1时,TPI退化为VI;当m→∞时,TPI趋近PI。书中4.3.1节指出:TPI的收敛速度介于VI与PI之间,且m的选择需权衡计算量与收敛轮数。例如,在中等规模MDP中,m=3常比VI快2倍,比PI省50%计算量。

4.4 为什么深度RL抛弃PI?函数近似下的数学坍塌

PI的致命弱点在函数近似场景(如DNN拟合v_π)中彻底暴露:

  • PE步崩溃:求解v_{π_k}需最小化损失ℒ(v) = 𝔼[(v(s) - Σ_a π_k(a|s) Σ_{s',r} p(s',r|s,a)[r + γ v(s')])²]。但π_k由v_k生成,v_k又由DNN输出,导致ℒ(v)高度非凸、梯度病态。实践中,PE常陷入局部极小,v_k严重失真。
  • PI步失准:π_{k+1}(s) = argmax_a q_{v_k}(s,a)。若v_k在某些s处拟合不准,argmax会选错a,引发策略震荡。

而VI的单步更新v_{k+1}(s) ← max_a [...] 只需一次网络前向传播+max,对v_k的误差鲁棒性更强。这解释了为何DQN等算法本质是VI的随机近似版本——它用经验样本替代p(s',r|s,a),用target network稳定max操作,完美规避了PI在近似下的数学脆弱性。

4.5 常见问题排查:为什么你的策略迭代在函数近似下完全失效?

  • 现象:PE步的MSE loss快速下降至0.01,但策略性能不升反降
    原因:损失函数ℒ(v)最小化的是贝尔曼残差,而非v_π的真实误差。当v拟合了高误差区域(如稀疏奖励区),残差小但v_π整体偏差大。
    解决:在loss中加入v_π的方差正则项,或改用distributional RL估计v_π分布

  • 现象:PI轮数极少(如2轮)就声称收敛,但测试策略失败
    原因:策略改进步未验证v_{π_{k+1}} ≥ v_{π_k}。若v_k失真,argmax可能生成更差策略。
    解决:每轮PI后,用蒙特卡洛方法估计v_{π_{k+1}}和v_{π_k},强制v_{π_{k+1}} ≥ v_{π_k}才接受新策略

  • 现象:TPI中m增大,训练反而更不稳定
    原因:m轮PE的累积误差被放大。每轮v^{(i+1)} = T^{π_k}(v^{(i)}),若T^{π_k}非严格压缩(因π_k不稳),误差可能指数增长。
    解决:对每轮v^{(i)}添加dropout或权重衰减,抑制误差传播

5. 随机近似与收敛定理:为什么你的SGD学习率衰减策略总在过早停止和永不收敛间摇摆?

当MDP模型未知(model-free)时,贝尔曼方程无法直接计算,必须用样本均值替代期望。这催生了随机近似(SA)方法——其核心是设计一个迭代序列θ_{k+1} = θ_k + α_k h(θ_k, X_k),其中X_k是随机样本,h是更新方向。但并非所有α_k序列都有效:太大会震荡,太小会停滞。赵世钰老师在第6章用Dvoretzky定理给出了普适的收敛判据,它比SGD的常用经验法则(α_k = a/(b+k))更深刻。

5.1 Robbins-Monro算法:随机近似的奠基性框架

RM算法解决的是求解方程g(θ) = 0,其中g(θ) = 𝔼[H(θ,X)]不可直接计算,但可获得带噪声的观测Y_k = H(θ_k, X_k)。更新规则为:
θ_{k+1} = θ_k + α_k Y_k

其收敛性要求α_k满足:

  1. ∑_{k=1}^∞ α_k = ∞ (步长总和发散,确保能到达解)
  2. ∑_{k=1}^∞ α_k² < ∞ (步长平方和收敛,确保噪声被压制)

例如α_k = c/k满足:∑1/k=∞,∑1/k²<∞。这是所有RL时序差分(TD)算法的理论基石。

5.2 Dvoretzky定理:比Robbins-Monro更普适的收敛保障

RM要求g(θ) = 0有唯一解且h(θ,X)满足强条件。Dvoretzky定理放宽了这些限制,适用于更广的SA场景。其核心条件是:

  • 迭代可写为 θ_{k+1} = θ_k + α_k [h(θ_k) + M_{k+1}]
    其中h(θ)是确定性漂移项,M_k是鞅差序列(即𝔼[M_k|ℱ_{k-1}]=0)
  • h(θ)满足:存在Lyapunov函数V(θ),使∇V(θ)·h(θ) ≤ -c V(θ)(负定)
  • α_k满足RM条件

则θ_k以概率1收敛到h(θ)=0的解集。在TD学习中,h(θ) = -∇ℒ(θ)(损失梯度),V(θ) = ℒ(θ),条件∇ℒ·(-∇ℒ) = -||∇ℒ||² ≤ -cℒ成立当ℒ强凸——这正是TD误差的数学本质。

5.3 SGD的收敛模式:为什么你的loss曲线总在最后阶段抖动?

SGD更新θ_{k+1} = θ_k - α_k ∇ℓ(θ_k; X_k),其中ℓ是单样本损失。Dvoretzky定理指出:

  • 若α_k = α/k,收敛速率是O(1/log k) —— 极慢,且最终抖动幅度∝ α
  • 若α_k = α k^{-β},β∈(0.5,1),则收敛速率O(k^{β-1}),抖动∝ k^{-β}

实践中,β=0.55(即α_k ∝ k^{-0.55})常比固定α或1/k更稳。书中6.4.2节用模拟证实:在TD学习中,α_k = 0.1 * k^{-0.6}比α_k = 0.01/k的最终误差低40%。

5.4 批量梯度下降(BGD)、SGD与小批量(Mini-batch)的数学本质差异

方法更新形式梯度方差收敛速度内存需求
BGDθ_{k+1} = θ_k - α ∇ℒ(θ_k)0O(1/k)(若ℒ强凸)O(
SGDθ_{k+1} = θ_k - α_k ∇ℓ(θ_k; X_k)O(1)O(1/√k)O(1)
Mini-batchθ_{k+1} = θ_k - α_k (1/b)∑_{i=1}^b ∇ℓ(θ_k; X_{k,i})O(1/b)O(1/√(bk))O(b)

关键洞察:Mini-batch的方差降低b倍,但每轮计算量增b倍,故单位计算量的收敛效率与SGD相同。这解释了为何在GPU上,增大batch size常不提升训练速度——它只是把SGD的方差摊薄,未改变本质收敛阶。

5.5 常见问题排查:为什么你的学习率调度总在关键时刻失效?

  • 现象:训练初期loss快速下降,后期在0.05附近震荡,无法突破
    原因:α_k衰减过快(如α_k = 0.1 * 0.999^k),导致后期梯度更新幅度过小,陷入局部极小。
    解决:改用α_k = a / (b + k^c),c∈[0.5,0.7];或采用余弦退火,保证末期仍有有效更新

  • 现象:loss前期平稳下降,某轮后突然飙升10倍
    原因:α_k过大触发梯度爆炸,或mini-batch中出现异常样本(如reward=1e6)导致∇ℓ剧增。
    解决:梯度裁剪(clip_grad_norm),并监控每批∇ℓ的L2范数,剔除>3σ的批次

  • 现象:不同随机种子下,收敛到的策略性能方差极大
    原因:α_k不满足∑α_k²<∞,噪声累积未被压制。例如α_k = 0.01(常数)违反条件。
    解决:强制α_k = 0.1 / sqrt(k),即使k=10000时α_k=0.001,也确保∑α_k²收敛

6. 时间差分与蒙特卡洛:为什么TD能在episode未结束时更新,而MC必须等终局?

蒙特卡洛(MC)和时间差分(TD)是model-free RL的两大支柱。MC用完整episode的回报G_t作为v_π(S_t)的无偏估计,但需等待episode结束;TD用单步bootstrap:R_{t+1} + γ v_k(S_{t+1})作为目标,实现在线更新。这种差异源于二者对偏差-方差权衡(bias-variance tradeoff)的截然不同选择——而赵世钰老师在第5、7章用严谨数学揭示了其根源。

6.1 MC的基本形式:无偏但高方差的终极估计器

MC估计v_π(s)为访问s的所有episode中G_t的平均值。其无偏性来自大数定律:
𝔼[Ĝ_t] = 𝔼[R_{t+1} + γR_{t+2} + ...] = v_π(S_t)

但方差巨大:G_t是长序列和,其方差为Var(G_t) = Σ_{i=0}^∞ γ^{2i} Var(R_{t+1+i})。若奖励方差为σ²,则Var(G_t) ≈ σ² / (1 - γ²),当γ→1时爆炸。这导致MC需要大量episode才能降低方差,收敛极慢。

6.2 TD(0):有偏但低方差的智能折中

TD(0)更新:
v_{k+1}(S_t) ← v_k(S_t) + α [R_{t+1} + γ v_k(S_{t+1}) - v_k(S_t)]

目标R_{t+1} + γ v_k(S_{t+1})是v_π(S_t)的有偏估计,因为v_k(S_{t+1}) ≠ v_π(S_{t+1})。但其方差远低于G_t:仅含单步奖励R_{t+1}和v_k(S_{t+1})的方差。书中7.1.2节证明:TD误差的方差满足Var(δ_t) ≤ γ² Var(δ_{t+1}) + Var(R_{t+1}),呈几何衰减。

6.3 n-step TD:在偏差与方差间滑动的数学标尺

n-step TD用n步回报G_{t:t+n} = R_{t+1} + γR_{t+2} + ... + γ^{n-1}R_{t+n} + γ^n v_k(S_{t+n})作为目标。当n=1,即TD(0);当n→∞,即MC。其偏差和方差随n变化:

  • 偏差:随n增大而减小(因γ^n v_k(S_{t+n}) → 0)
  • 方差:随n增大而增大(因G_{t:t+n}含更多R项)

书中7.3节给出精确表达式:
𝔼[G_{t:t+n}] = v_π(S_t) + γ^n (v_k(S_{t+n}) - v_π(S_{t+n}))
Var(G_{t:t+n}) = Σ_{i=0}^{n-1} γ^{2i} Var(R_{t+1+i}) + γ^{2n} Var(v_k(S_{t+n}))

这为超参n的选择提供了数学依据:在奖励方差σ²大时选小n(如n=1),在v_k较准时选大n(如n=5)。

6.4 Q-learning的off-policy奇迹:为什么用行为策略π_b生成的数据能学最优策略π_*?

Q-learning更新:
Q_{k+1}(s,a) ← Q_k(s,a) + α [R_{t+1} + γ max_{a'} Q_k(S_{t+1},a') - Q_k(s,a)]

关键在max_{a'}操作——它使目标不依赖于实际采取的动作A_{t+1},而只依赖于S_{t+1}。因此,只要行为策略π_b满足覆盖性(coverage,即对所有s,a,π_b(a|s)>0),Q_k就能收敛到q_*。数学上,Q-learning的更新可视为对最优算子T_*的随机近似,其漂移项h(Q) = 𝔼_{π_b}[R + γ max_{a'} Q(S',a') - Q(S,A)],而T_的不动点q_恰好满足h(q_)=0。这解释了为何ε-greedy(探索性π_b)能学q_——覆盖性保证了所有(s,a)被充分采样。

6.5 常见问题排查:为什么你的TD学习总在特定状态崩溃?

  • 现象:多数状态v_k(s)稳定,但某状态s的v_k(s)在0附近剧烈震荡
    原因:s的转移概率p(s'|s,a)高度集中于少数s',导致v_k(s*)更新目标R + γ v_k(s')的方差极大(因v_k(s')本身在抖动)。
    解决:对s使用更小的α,或增加s的采样频率(如优先经验回放中提高s*的优先级)

  • 现象:Q-learning收敛,但策略π(s)=argmax_a Q(s,a)在测试中表现差
    原因:Q_k(s,a)的估计有系统性偏差(如欠估计),导致argmax选错a。尤其当多个a的Q值接近时,小偏差引发大策略误差。
    解决:用Double Q-learning分离动作选择与价值评估,或添加softmax策略π(a|s) ∝ exp(Q(s,a)/τ)

  • 现象:MC在稀疏奖励任务中完全不学习,TD却能缓慢进展
    原因:MC的G_t在无奖励episode中恒为0,无法传递“接近奖励”的信号;TD的R + γ v_k(s')能将奖励信号沿状态链反向传播。
    解决:在MC中引入reward shaping,或改用TD(λ)(λ>0)增强信用分配

7. 函数近似与策略梯度:为什么神经网络拟合v(s)会失效,而直接优化策略π(a|s)却能成功?

当状态空间连续或巨大时,表格型v(s)不可行,必须用函数近似(如DNN)。但第8章揭示了一个残酷现实:用DNN拟合v_π(s)会导致理论保证全面坍塌——收敛性丢失、偏差不可控、策略改进失效。而第9章的策略梯度(PG)方法则另辟蹊径:不拟合价值函数,而是直接参数化策略π_θ(a|s),用梯度上升优化期望回报J(θ) = 𝔼_π_θ[G_1]。这背后是两种范式的数学本质差异。

7.1 价值函数近似的致命缺陷:投影算子的非收缩性

在表格型中,贝尔曼算子T^π是γ-压缩的。但用函数近似后,更新变为:
w_{k+1} = w_k + α [R + γ v_w(S') - v_w(S)] ∇_w v_w(S)

这等价于在参数空间执行T^π的投影。问题在于:投影后的算子不再是压缩的。书中8.2.5节证明,若v_w是线性函数(v_w(s) = φ(s)^T w),则收敛需满足“兼容性条件”:φ(s)必须张成T

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进