强化学习数学原理 - 第6章:随机近似 (Stochastic Approximation)
1. 为什么学 RL 要学“随机近似”?
本章看似是数学插曲,实则是连接蒙特卡洛 (MC) 和时序差分 (TD) 的桥梁。
所有现代 RL 算法(Q-learning, DQN, Policy Gradient)的更新公式都长这样:
这个公式是怎么来的?为什么它能收敛?这背后的数学原理就是 Robbins-Monro 算法。
2. 均值估计:从批量到增量
假设我们想求随机变量的期望。
我们可以采样。
2.1 批量计算 (Batch)
缺点:每次都要把所有数加起来除以,或者保存所有数。
2.2 增量计算 (Incremental)
我们可以推导出递推公式:
这就是最简单的随机近似!
- : 当前的估计值。
- : 新的样本。
- : 误差 (Error)。
- : 步长 (Step Size),通常记为。
3. Robbins-Monro (RM) 算法
RM 算法解决更通用的问题:求解方程。
难点在于:我们不知道的具体解析式,而且我们每次观测时都带有噪声。
RM 更新公式:
收敛条件:
只要步长序列 {} 满足:
- (步子总长足够大,能走到解)。
- (步子变小的速度足够快,保证最后收敛不震荡)。
那么就会以概率 1 收敛到方程的根。
4. 随机梯度下降 (SGD)
SGD 是 RM 算法在优化问题上的应用。
目标:最小化。等价于求梯度为 0 的根:。
这里。
由于我们通常无法计算全量梯度(数据太多),只能用一个样本的梯度来近似。
这就是深度学习中天天用的 SGD。
5. 深度思考:学习率 (Step Size) 的哲学
在 Robbins-Monro 条件中,要求且(例如)。这意味着学习率必须逐渐衰减到 0。
为什么?
因为我们的观测是含噪的。如果步长不缩小,即便我们到了最优解附近,噪声也会推着我们来回震荡,永远无法稳定。衰减步长是为了抵消噪声的方差。
但是,在 Deep RL (如 DQN) 中,我们通常用常数学习率 (Fixed Learning Rate),如 1e-4。为什么违反理论?
因为 RL 的环境往往是 Non-stationary (非平稳) 的:
- Target 在变:在 DQN 中,Target Network 会定期更新,我们追逐的目标本身就在变。
- 分布在变:随着策略变好,Agent 访问的状态分布也在变。
如果我们让,Agent 就会失去**“适应变化”**的能力(Tracking ability)。
结论:
- 理论收敛:需要。
- 实际工程:使用小的常数,在“收敛精度”和“追踪速度”之间做 Trade-off。这导致结果会在最优解附近形成一个“震荡区”,而无法精准停在一点。
6. Python 实战:RM 算法找根
我们来模拟一个场景:
求解方程(解显然是)。
但我们观测时有高斯噪声。
1 | import numpy as np |
6. RL 中的应用 (Preview)
在下一章 TD Learning 中,我们将看到这样的公式:
对比 RM 公式,你会发现:
- 就是。
- 对应的就是(预测误差)。
- 我们的目标就是让这个误差期望为 0,即(Bellman Equation)。
结论:TD Learning 本质上就是用 RM 算法来解 Bellman Equation!

