强化学习数学原理 - 第7章:时序差分方法 (Temporal-Difference Methods)
1. TD:结合 MC 与 DP 的艺术
时序差分 (TD) 是强化学习中最核心、最独特、最优雅的思想。它不需要像 DP 那样已知模型,也不需要像 MC 那样等到 Episode 结束。它边走边学 (Bootstrapping from Experience)。
核心公式 (TD(0)):
直观解释:
- Target: 我走了这一步,拿到了,加上我对下一步状态价值的预估,我觉得这才是更靠谱的价值。
- Error: 那个 Target 和我原来的估计之间的差,就是惊讶程度 (TD Error)。
- Update: 用这个差乘以学习率来修正我的观念。
2. Sarsa: On-policy 的稳健派
2.1 算法流程 (State-Action-Reward-State-Action)
Sarsa 之所以叫 Sarsa,是因为它一次更新需要的数据五元组是。
关键点:是 Agent 实际将在下一步执行的动作(通常由-greedy 选出)。这意味着 Sarsa 在优化的是它正在执行的那个策略(On-policy)。如果策略比较“浪”(很大),Sarsa 就会学得比较保守,远离悬崖。
2.2 Python 实现 (Sarsa)
1 | def sarsa(env, num_episodes, alpha=0.1, gamma=0.9, epsilon=0.1): |
3. Q-learning: Off-policy 的激进派
3.1 算法流程
Q-learning 的更新公式只有一点点不同,但引起了质变:
关键点:不管下一步实际做什么,我在计算 Target 时都假设我下一步会做最好的动作()。
这意味着 Q-learning 学习的是最优策略 (Off-policy),哪怕它实际行为策略是在乱走。
3.2 Sarsa vs Q-learning (悬崖漫步例子)
视频中经典的 Cliff Walking 例子完美展示了区别:
- 环境: 走到悬崖边掉下去会得 -100 分。
- Q-learning: 学出一条紧贴悬崖边的最短路径(它假设自己是最优的,不会手滑)。但在训练时(因为有),它经常掉下去。
- Sarsa: 学出一条远离悬崖的安全路径。因为它知道自己有的概率乱走,走悬崖边太危险了。
3.3 Python 实现 (Q-learning)
1 | def q_learning(env, num_episodes, alpha=0.1, gamma=0.9, epsilon=0.1): |
4. 统一视角
我们可以把 MDP 中的各种算法看作是同一公式的不同变体:
| 算法 | Target 是什么? | 样本来源 |
|---|---|---|
| MC | (真实回报) | 一整条 Episode |
| DP (VI) | 遍历所有(模型计算) | |
| Sarsa | 采样一步 | |
| Q-learning | 采样一步 |
5. 深度思考:偏差与方差的权衡 (Bias-Variance Trade-off)
为什么我们要发明 TD?为什么不直接用 MC?这就涉及机器学习核心的偏差 (Bias) 与 方差 (Variance) 权衡。
5.1 MC (Monte Carlo)
- Target:(真实回报)。
- 无偏差 (Unbiased):是的无偏估计。
- 高方差 (High Variance):依赖于从到结束的所有随机转移和奖励。路途越长,随机因素积累越多,波动越大。
- 后果: 即使数据很多,训练也很震荡,收敛慢。
5.2 TD (Temporal Difference)
- Target:(估计值)。
- 有偏差 (Biased): 我们用了估计值来更新。如果估计错了,Target 也就错了。
- 低方差 (Low Variance): Target 只依赖一步的随机性和。后面的随机性被概括了。
- 后果: 收敛快,但初始阶段可能跑偏(因为信了错误的估计)。
5.3 n-step TD:最佳平衡点
我们可以折中一下,看步再截断:
- : TD(0),低方差,高偏差。
- : MC,高方差,无偏差。
- 结论: 调节(或者使用-return) 可以找到方差与偏差的最佳平衡点,通常效果最好。
6. 总结
本章我们掌握了 RL 的两把利器:
- Sarsa: 稳健,适合在线控制,关心“活在当下”的风险。
- Q-learning: 激进,适合模拟训练,直接瞄准“理论最优”。
但目前我们用的表格法 (Tabular Method) 有个致命弱点:状态空间太大存不下怎么办? (比如像素点组成的图像)。
下一章,我们将引入 函数近似 (Function Approximation),也就是 Deep RL 的前夜 —— DQN 的基础。
上一章:第6章 - 随机近似 | 下一章:第8章 - 值函数近似 >>
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 WPIRONMAN!
评论

