Contents — find the section you need

Q学习是一种离策略强化学习方法,它为每个状态-动作对更新一个值:“从长远来看,这个选择能带来多少收益?” 一个小迷宫可以用一张表格来解决,但摄像头图像和众多关节使得表格变得过于庞大。深度Q网络(DQN)用神经网络代替表格,并利用经验回放和目标网络来减少相关数据和自参照不稳定性。

30秒概要

  • Q(s,a) 表示在状态 s 下采取动作 a 后的预期未来收益。选择最大的Q值会得到一个贪婪策略。

  • 即使行为策略探索了其他动作,Q学习也会在下一个状态下使用最大的Q值。这就是它的离策略特性。

  • DQN 将高维观测数据(例如图像)映射到有限个离散动作的Q值集合。连续扭矩需要离散化或 Actor-Critic 方法。

  • 经验回放会打乱旧的转换,而目标网络则在多次更新中保持学习目标几乎不变。

  • 机器人必须将速度、力、电流和紧急停止限制置于学习器之外。高奖励并不代表硬件安全。

1. 将 Q 值放入表格

在强化学习基础入门中的 MDP 中,在状态 s 下选择动作 a 会产生奖励 r 和下一个状态 s'。Q 学习不保留未知环境的显式模型 P;它仅根据经验 (s,a,r,s') 更新 Q 值:

Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha\left[r_{t+1}+\gamma\max_{a'}Q(s_{t+1},a')-Q(s_t,a_t)\right]

括号内为时间差分 (TD) 误差。正误差会提高动作的价值;负误差会降低动作的价值。\alpha 是学习率,\gamma 是折扣因子。在终止状态下,下一个状态的值为零。

Diagram 1 · Use the button to switch views
Q学习:从状态转换更新表格

图 1 — Q学习将先前的值略微向由观察到的奖励和最大下一状态值构成的目标值移动。

一个 5×5 的迷宫只有 25 个状态和 4 个动作,因此 100 个表格条目就足够了。使用 ε-贪婪探索,经验会逐渐将目标值反向传播到迷宫中。将学习率设置为 1 并完全信任单个经验会使其容易受到环境噪声的影响,因此通常使用介于 0 和 1 之间的值来对各个经验进行平均。

2. 离策略学习和 ε-贪婪探索

目标 \max_{a'}Q(s',a') 是最佳估计动作,但不一定是实际的动作。探索行为策略实际执行情况。因此,Q学习可以学习贪婪策略,而ε贪婪策略则收集数据。首先使用较大的ε来覆盖状态空间,然后缓慢衰减。在物理机上,仅在已验证的候选命令中进行随机化,并将碰撞监控保持在最高优先级。

3. 为什么该表不适用于图像和连续值

如果一个状态是相机图像的每个像素,并且每个电机有256个速度级别,则该表无法放入实际内存中。几乎相同的图像也会被视为不相关的状态。DQN使用神经网络Q_\theta(s,a)来近似该表。

该网络将图像映射到每个离散动作的一个Q值。对于上/下/左/右,输出为(Q(s,\mathrm{up}),Q(s,\mathrm{down}),Q(s,\mathrm{left}),Q(s,\mathrm{right}))。损失为

L(\theta)=\mathbb{E}_{(s,a,r,s')\sim D}\left[\left(y-Q_\theta(s,a)\right)^2\right],\qquad y=r+\gamma\max_{a'}Q_{\theta^-}(s',a')

其中D是回放缓冲区,\theta^-属于目标。网络。对于终端转换,y=r。

4. 经验回放:打乱相关日志

机器人日志是顺序的:t 和 t+1 处的帧看起来几乎完全相同。由相邻帧组成的小批量会产生有偏梯度。DQN 将 (s_t,a_t,r_{t+1},s_{t+1},done) 存储在回放缓冲区中,并随机采样小批量。

缓冲区设计 优势 成本
均匀采样 简单,减弱时间相关性 罕见故障的采样较少
优先级回放 关注较大的 TD 错误 需要重要性校正和记录
固定大小的 FIFO 跟随不断变化的环境 旧的罕见故障会消失
事件存储 保留成功/失败上下文 批次可能再次变得相关

不要用学习预处理覆盖审计跟踪。存储原始传感器数据。时间戳、请求和实际限制的动作以及冲突标志与归一化的训练张量分开存储。

5. 目标网络:延迟教师

如果同一个网络在更新时同时计算目标 y 和预测 Q_\theta,则目标每次都会移动。旨在缩小误差的更新也会移动下一个目标,导致发散或振荡。DQN 会保留一个 Q_{\theta^-} 的副本,并每隔几百或几千次更新将其同步为 \theta^-\leftarrow\theta。

延长同步间隔可以稳定目标,但会使目标变得陈旧。Polyak 平均是一种更平滑的替代方案:

\theta^-\leftarrow\tau\theta+(1-\tau)\theta^-

在实验配置和日志中记录选择、同步间隔、损失和 Q 值分布。

6. 高估和双重 DQN

对噪声估计值取最大值会倾向于选择看起来合适的动作。高阶。双 DQN 将动作选择和动作评估分开:

a^*=\arg\max_{a'}Q_\theta(s',a'),\qquad y=r+\gamma Q_{\theta^-}(s',a^*)

这并不能完全消除偏差,但通常可以减少不稳定的 Q 值增长。缺失的终端标志、错误的动作掩码或不一致的奖励比例可能看起来类似,因此在更改算法之前请检查数据。

7. DQN 在机器人中的应用

DQN 假设动作集是有限的。离散化转向角或关节扭矩可以用于粗略演示,但精细网格会迅速增长并产生不平滑的指令。DDPG、TD3 和 SAC 直接输出连续动作,通常更适合扭矩或液压阀控制。

DQN 仍然适用于高级选择:左车道或右车道、抓取候选 A/B/C 或低速/中速/高速模式。将生成的参考值传递给 PID 或 MPC 层。PID 文章 和 MPC 文章文章](/zh/blog/posts/control-mpc.html) 展示了如何在底层设置限制和监控机制。

8. 绘制除奖励之外的其他曲线

记录成功率、碰撞率、回合长度、平均和最大 Q 值、TD 误差以及动作频率,并与平均回合奖励一起记录。奖励和碰撞率同时上升通常表明奖励或终止机制存在错误。Q 值爆炸式增长而损失值下降则表明存在尺度不匹配、缺少终止标志或引导目标错误。

将评估环境与训练环境分开。更改光照、地面摩擦力、有效载荷、障碍物布局和通信延迟。在模拟器中成功但忽略摄像头曝光、电机死区或电池电量下降的策略,在硬件上并未展现出 DQN 的性能。

实现清单

  1. 将状态、离散动作、奖励、终止标志和时间戳存储为一个转换。

  2. 修复并记录 ε、学习率、折扣、缓冲区大小、批大小和目标间隔。

3.按实验 ID 跟踪 Q 值、TD 误差、损失、成功/碰撞率和动作频率。

  1. 将回放预处理与原始审计日志分开。

  2. 对动作掩码、终止状态、超时和无效传感器值进行单元测试。

  3. 验证限制、看门狗和紧急停止机制在 DQN 之上保持有效,并且在网络崩溃后仍能正常工作。

  4. 将未见过的情况和故障排除在训练之外。

总结

Q 学习将贝尔曼最优性方程转化为表格更新,而无需已知的动力学模型。DQN 使用网络来近似该表格,但经验回放和目标网络对于防止自参考目标放大噪声至关重要。DQN 是一个有用的离散决策层;连续扭矩和安全控制属于其他控制器。跟踪 TD 误差、碰撞、延迟和 Q 分布(而不仅仅是奖励)可以将研究脚本转化为可审计的机器人系统。

检查你的理解
较大的 Q 值是否能保证较大的实际收益?

Q 值是对预期收益的估计。不熟悉的状态或动作可能会导致较大的估计误差。

参考文献

What to read next

Review the background强化学习基础——马尔可夫决策过程、贝尔曼方程和机器人探索Continue the series策略梯度、PPO 和 SAC——机器人稳定连续控制Explore another aspect of this field多智能体强化学习入门——如何在对方也在学习的世界中进行优化