RL ML Learning Lab
12 / 12
实战收官 · 从算法到智能体

迷宫寻宝Treasure Hunt Capstone

前面 11 章你学了环境、值函数、TD、DQN、AC、PPO、RLHF——现在把它们装进一个真正会跑起来的智能体:在 7×7 迷宫里找到宝藏。本章是收官实战:用 PPO 与 DQN 两种范式训练同一个寻宝智能体,看学习曲线、回放它的寻宝路径,再扫掠学习率理解「调参」的直觉。

2h
阅读 + 实操
2 个
交互演示
收官
难度

迷宫寻宝 · PPO vs DQN 完整训练

Ep0
最近 20 集均值--
寻宝成功0

PPO 智能体 · 训练中

智能体每次只能看到周围 3×3 的格子(局部视野),摸到宝藏 +10,撞墙 -0.1,每走一步 -0.05。训练中它从随机乱撞开始,逐渐学会抄近路。

两种算法各自用最佳配置训练同一个迷宫:PPO 批量收集后裁剪更新,DQN 用 ε-greedy 探索 + 经验回放。切换算法会重置训练。

速度 40 步/帧

超参数扫掠 · 学习率 × PPO

扫掠进度0 / 300
完成--

同一迷宫、同一网络结构,只有学习率不同:lr=0.003 学得慢但最终也能找到宝藏;lr=0.01 最快收敛;lr=0.03 更新步长过大,策略反复震荡、几乎学不会——这就是「调参」最核心的直觉。

为什么学这步?

学了十一个算法,真正的考验是:把它放进一个环境,让训练、调参、诊断、回放整条链路跑通。迷宫寻宝把「价值型(DQN)」与「策略优化型(PPO)」放到同一张桌上对比,也暴露了一个课程里反复出现的真相——稀疏奖励下,随机探索是唯一的火种,而学习率决定火种能不能燎原。这是从「看懂算法」到「训出一个智能体」的最后一跳。

你已学完 RL 轨道全部 12 章。想继续深挖,可以回到第 8 章看 DQN 三件套的进阶技巧,或重跑第 10 章的 PPO 信任区域对比——现在你能读懂它们为什么这么设计了。

📌 发生了什么

  • 同一个迷宫、同一个目标,PPO 与 DQN 都能学会
  • DQN 靠 ε-greedy 随机探索先「撞」到宝藏,Q 值再向四周扩散
  • PPO 一旦在探索中抓到 +10 的信号,会通过优势快速放大正确路径
  • 学习率扫掠呈现「慢 → 最优 → 发散」的经典三段曲线

⚠️ 常见陷阱

  • 只看最终水平不看学习速度——两个配置可能殊途同归,但到达时间天差地别
  • 稀疏奖励下训练太短——在撞到宝藏之前,策略几乎没有任何正信号,曲线平躺是正常的
  • 误以为网络越大越好——7×7 迷宫 9 维状态,小网络足够,大网络反而难收敛

本章小结

  • 一个可运行的智能体 = 环境 + 算法 + 探索 + 恰到好处的学习率
  • 价值型与策略优化型两大范式殊途同归,但行为轨迹不同
  • 「调参」不是玄学:扫掠曲线把每一步的因果看得清清楚楚

📐 收官推导:从贝尔曼方程到可训练的目标

一切从这个方程出发:最优动作让「即时奖励 + 折扣后的未来价值」最大。DQN 用神经网络直接逼近 Q,PPO 用策略梯度逼近 π,但它们的共同来源都是贝尔曼方程。

DQN 的做法:把 Q^*(s,a) 用网络 Q_θ 表示,把右边当作「目标」做回归。当回报 +10 从宝藏往回传播,每走一步 Q 值就会「后退一格点亮」——这就是 Q 学习在迷宫里的扩散过程。

PPO 的做法:直接提高「被奖励的动作」的概率。迷宫里的挑战是 A 几乎总是负的(步数惩罚),唯一正优势来自那些成功摸到宝藏的轨迹——所以稀疏奖励下,探索足够久比聪明地更新更重要。

两种范式在这里汇合:价值型先学 V/Q 再用它选动作,策略型用 V 构造优势再更新 π。收官章的迷宫同时容纳了这两条路——你学到的是同一套决策逻辑的两种实现。

🎛 实战超参对比

同一环境的三个「旋钮」,每个都能让智能体学不会。

超参 表现 结果
lr 过小(0.003) 曲线缓慢爬升 最终也能学会,但要更多集数
lr ≈ 0.01 爬升快、收敛稳 推荐
lr 过大(0.03) 每步走过头、震荡 几乎学不会
训练集数太少(<100) 没撞到宝藏就结束 曲线平躺(假失败)

💡 诊断口诀:曲线平躺 → 先确认探索够不够;曲线震荡 → 调小学习率;曲线起飞后骤降 → 检查是不是一次更新推过头。

💻 迷宫寻宝核心循环

「重置环境 → 看视野 → 选动作 → 拿奖励 → 记录转移」——这是所有 RL 训练循环的骨架。

state = env.reset()                    # 回到起点,拿到 3×3 视野
for episode in range(TRAIN_EPISODES):
    while not done:
        action = agent.select_action(state)   # PPO 采样 / DQN ε-greedy
        next_state, reward, done = env.step(action)
        agent.remember(state, action, reward, next_state, done)
        agent.learn()                   # PPO: 攒批后裁剪更新
                                        # DQN: 回放采样 + 目标网络
        state = next_state
    state = env.reset()                 # 一集结束,回到起点再来

📚 参考文献与延伸阅读

  1. Sutton, R. & Barto, A. (2018), Reinforcement Learning: An Introduction, 2nd ed. — 第 1-6 章,本轨道全部内容的方法论出处
  2. Mnih, V. et al. (2015), Human-level control through deep RL, Nature — DQN 原始论文,经验回放 + 目标网络
  3. Schulman, J. et al. (2017), Proximal Policy Optimization Algorithms, arXiv:1707.06347 — PPO,本迷宫实验用的裁剪目标
  4. OpenAI Spinning Up — 从入门到实战的 RL 路线图与最小实现

📝 课后练习

检验你的理解——答对为止