

RL 学习笔记(8):连续动作下的 Q 方法
DQN 擅长离散动作,但在连续动作下 $\max_a Q(s,a)$ 变得难以计算。本章按文档给的四种方案讲清楚它们的直觉、代价与为什么最终很多人会走向 Actor-Critic。
前言#
需要说明的是,这个系列的博客是由我的幕布笔记转化而来,如果你更喜欢图文并茂的阅读,你可以去我的幕布空间进行阅读,受限于篇幅的原因,第十二章幕布笔记在这。如果你发现有哪些地方由逻辑错误,可以通过评论告知我,十分感谢!
开始#
如果你做过一点机器人或控制任务,很快会发现:动作是连续的(扭矩、角度、速度),而 DQN 的世界观是离散动作。
文档在这一章把问题点得很透:DQN 更适用于离散动作,因为它需要计算 。连续动作里,这个 max 不是枚举就能搞定的。
于是出现了四种思路。我也按“从最朴素到最工程”的顺序讲:采样、对动作做梯度上升、设计更复杂的网络架构、以及——不使用 DQN(也就是转向 Actor-Critic)。
方案一:对动作进行采样#
文档说得很直接:
你可以先采样 N 个候选动作 ,把它们逐个代入 做一次评分,然后从里面挑最大的那个动作执行。它朴素到像暴力搜索,所以实现起来很顺手,也很适合当 baseline;但它同样会在高维动作空间里迅速变得昂贵而且不精确。
优点:实现简单。 缺点:不精确、算力开销大,维度一高就爆炸。
方案二:对动作做梯度上升(把 a 当作待优化变量)#
文档把它描述为一个优化问题:最大化目标函数 。
做法是:初始化一个动作 ,对 做梯度上升迭代,找到局部最大。
问题也很明显:
它既绕不开局部最优与全局最优的老问题,也会在工程上变得很慢——因为每次决策都要做若干轮迭代,你等于把“选动作”变成了一个小型优化过程。
方案三:设计更复杂的网络架构#
文档提到“数学方法复杂,但思路好”:通过变换把动作处理得更像离散。
这一类方法更多出现在学术或特定结构(比如量化、分层动作)里;工程上我更常见的是下面的路线:直接用 actor 学一个动作。
方案四:不使用 DQN(转向别的方法)#
文档最后一句“哈哈”非常真实:很多时候,连续动作最省心的方案就是不硬套 DQN,而是用 Actor-Critic。
原因是 Actor-Critic 允许:
原因在于 actor-critic 的分工非常自然:actor 负责直接输出连续动作(或连续动作分布),critic 负责评估并提供梯度信号。这样你就不需要在连续空间里每一步都去硬算一个 max,而是把它近似成一次网络前向传播。
这比“在连续空间里求 max”自然得多。
本章小结:连续动作把你推向 Actor-Critic#
如果你读到这里觉得“连续动作下硬用 Q 方法好别扭”,那说明你理解对了。
下一章我们就进入文档的第九章:演员-评论员(Actor-Critic)算法。你会看到它如何把策略梯度和 TD 学习拼在一起,让连续控制与稳定训练变得更可行。