← 上级:RL-04.实现框架与实践 · 算法:RL-03-02-算法-Q-Learning · 结构:RL-05-02-结构-Q-Table
表格型实现是验证 Bellman TD 更新的最短路径。以下为可在 gymnasium 上直接运行的 Q-Learning 与 SARSA 完整示例(4×4 FrozenLake-v1)。
一、环境与超参
1 | import gymnasium as gym |
is_slippery=False 时转移确定,便于观察 Q 表收敛。
二、Q-Learning 完整实现
1 | Q = np.zeros((n_states, n_actions)) |
三、SARSA 完整实现
1 | Q_sarsa = np.zeros((n_states, n_actions)) |
四、Q 表可视化(可选)
1 | def show_policy(Q, nrow=4, ncol=4): |
五、工程要点
| 点 | 说明 |
|---|---|
| 状态离散 | env 自带 Discrete;连续 obs 需 discretize |
| 同步 | 每 episode 衰减 $\varepsilon$ |
| 收敛诊断 | 画 returns 滑动平均 |
| 确定性环境 | 滑冻湖无滑时 Q 应稳定到最优 |
六、与深度版衔接
| 表格 | 深度 |
|---|---|
Q[s,a] |
Q_net(obs)[a] |
| 全表初始化 | 网络随机初始化 |
| 直接 TD | Replay + target net |
七、小结
- 表格实现 ≈ NumPy 二维数组 + ε-greedy + TD 一行更新。
- Q-Learning 用
max;SARSA 用Q[s', a']。 - 下一篇:DQN 实现