标准策略梯度方法(如 REINFORCE)根据从整个回合中采样的回报 $G_t$ 来更新策略参数 $\theta$。梯度估计通常表示为 $\nabla_\theta J(\theta) \approx \mathbb{E}[\nabla_\theta \log \pi_\theta(A_t|S_t) G_t]$。尽管是无偏的,但依赖完整的蒙特卡洛回报 $G_t$ 会引入较大的方差,因为回报取决于轨迹中所有后续的动作和奖励。单个过高或过低的奖励可能显著地影响梯度估计,从而减慢学习速度或使其不稳定。行动者-评论者方法提供了一种有效的替代结构来降低这种高方差。学习策略时不再只有一个组件,我们引入了两个不同的组件,通常作为独立的函数逼近器(常为神经网络)实现:行动者 (The Actor): 该组件负责学习和表示策略。它接收当前状态 $s$ 作为输入,并输出动作的概率分布(对于随机策略)或一个特定动作(对于确定性策略)。我们将行动者的策略表示为 $\pi_\theta(a|s)$,其参数为 $\theta$。行动者的目标是通过调整 $\theta$ 来学习最优策略。评论者 (The Critic): 该组件学习一个价值函数,以评估行动者选择的动作或遇到的状态。它接收状态 $s$(有时也接收动作 $a$)作为输入,并输出一个价值估计。评论者函数常见的选择是状态价值函数 $V_\phi(s)$ 或动作价值函数 $Q_\phi(s,a)$,其参数为 $\phi$。评论者的作用是不选择动作,而是对行动者当前策略的好坏提供反馈。它们如何协同工作主要思想是行动者决定做什么,评论者评估做得如何。这种评估随后指导行动者的更新。典型的流程如下:动作选择: 行动者观察当前状态 $S_t$,并根据其策略 $\pi_\theta(A_t|S_t)$ 选择一个动作 $A_t$。环境交互: 动作 $A_t$ 在环境中执行,得到奖励 $R_{t+1}$ 和下一个状态 $S_{t+1}$。评论者评估: 评论者使用转换信息 $(S_t, A_t, R_{t+1}, S_{t+1})$ 来评估行动者的动作或由此产生的状态。一种常见的方法是计算时序差分 (TD) 误差: $$ \delta_t = R_{t+1} + \gamma V_\phi(S_{t+1}) - V_\phi(S_t) $$ 此 TD 误差衡量评论者当前估计 $V_\phi(S_t)$ 与基于即时奖励和下一个状态的价值(TD 目标 $R_{t+1} + \gamma V_\phi(S_{t+1})$)的可能更好估计之间的差异。如果评论者估计 $Q_\phi(s,a)$,则 TD 误差可能是 $\delta_t = R_{t+1} + \gamma Q_\phi(S_{t+1}, A_{t+1}) - Q_\phi(S_t, A_t)$,其中 $A_{t+1}$ 是行动者在状态 $S_{t+1}$ 中选择的动作。评论者更新: 评论者更新其参数 $\phi$ 以最小化此 TD 误差,通常通过梯度下降。目标是随着时间推移使其价值估计更加准确。对于状态价值评论者,更新可能旨在最小化 $(\delta_t)^2$。行动者更新: 行动者根据评论者的评估方向更新其策略参数 $\theta$。不再使用有噪声的蒙特卡洛回报 $G_t$,行动者使用评论者的反馈,通常是 TD 误差 $\delta_t$ 或相关的量,如优势 $A(S_t, A_t)$。策略梯度更新变为如下形式: $$ \nabla_\theta J(\theta) \approx \mathbb{E}[\nabla_\theta \log \pi_\theta(A_t|S_t) \delta_t] \quad \text{(或使用优势)} $$ 正的 TD 误差表明动作 $A_t$ 导致了比预期更好的结果,因此,在状态 $S_t$ 中选择 $A_t$ 的概率应该增加。负的 TD 误差则表明相反。这种交互循环使得行动者和评论者能够同时改进。评论者学习提供更好的评估,行动者学习根据这些评估产生更好的动作。digraph G { rankdir=LR; node [shape=box, style="filled", fontname="sans-serif", margin=0.2]; edge [fontname="sans-serif"]; env [label="环境", shape=cylinder, style="filled", fillcolor="#ced4da"]; actor [label="行动者\n(策略 π_θ)", style="filled", fillcolor="#a5d8ff"]; critic [label="评论者\n(价值函数 V_ϕ/Q_ϕ)", style="filled", fillcolor="#96f2d7"]; env -> actor [label=" 状态 S_t"]; actor -> env [label=" 动作 A_t"]; env -> critic [label=" 奖励 R_t+1\n 下一个状态 S_t+1"]; subgraph cluster_updates { label = "学习更新"; style = "dashed"; color = "#adb5bd"; critic -> actor [label=" 评估信号\n (例如,TD 误差 δ_t)", constraint=false]; // Feedback loop critic_update [label="更新评论者\n(最小化 TD 误差)", shape=ellipse, style="filled", fillcolor="#e9ecef"]; actor_update [label="更新行动者\n(策略梯度)", shape=ellipse, style="filled", fillcolor="#e9ecef"]; critic -> critic_update [style=invis]; // Helper for layout actor -> actor_update [style=invis]; // Helper for layout } critic -> critic_update [ltail=cluster_updates, style=dashed, color="#495057", label="更新 ϕ"]; actor -> actor_update [lhead=cluster_updates, style=dashed, color="#495057", label="更新 θ"]; }基本行动者-评论者交互循环。行动者根据状态选择动作,环境做出响应,评论者评估结果,提供反馈以更新行动者的策略及其自身的价值估计。行动者-评论者结构的好处与 REINFORCE 相比,行动者-评论者框架的主要好处是方差降低。用于行动者更新的 TD 误差 $\delta_t$(或优势)主要取决于即时奖励 $R_{t+1}$ 和评论者对下一个状态价值 $V_\phi(S_{t+1})$ 的估计。这种估计,虽然可能有偏差(因为 $V_\phi$ 是学习得到的),但通常比完整的蒙特卡洛回报 $G_t$ 噪声小得多,后者在许多时间步上累积噪声。较低的方差通常会带来更快、更稳定的收敛。此外,行动者-评论者方法可以在线学习,在每一步(或一小批步)之后更新行动者和评论者,这与基本 REINFORCE 不同,后者通常需要等到回合结束才能计算 $G_t$。变体和考量评论者价值函数的具体形式对算法影响很大:状态价值评论者 ($V_\phi(s)$): 评论者估计处于某个状态的价值。评估信号通常是 TD 误差 $\delta_t = R_{t+1} + \gamma V_\phi(S_{t+1}) - V_\phi(S_t)$。在某些假设下,此 $\delta_t$ 直接逼近优势 $A(S_t, A_t)$。动作价值评论者 ($Q_\phi(s,a)$): 评论者估计在状态 $s$ 中采取动作 $a$ 的价值。这在为连续动作空间(如 DDPG)设计的算法中很常见,或者当需要直接估计 Q 值时。更新通常涉及 TD 误差 $\delta_t = R_{t+1} + \gamma Q_\phi(S_{t+1}, A_{t+1}) - Q_\phi(S_t, A_t)$。优势函数评论者: 一些方法明确尝试估计优势函数 $A(s,a) = Q(s,a) - V(s)$。在策略梯度更新中直接使用优势,$\nabla_\theta J(\theta) \approx \mathbb{E}[\nabla_\theta \log \pi_\theta(A_t|S_t) A(S_t, A_t)]$,通常是有利的,因为它提供了一个相对衡量,表明某个动作相对于该状态的平均动作好多少,从而进一步降低方差。我们将在本章后面看到估计优势的复杂方法,如广义优势估计 (GAE)。在深度强化学习中,行动者 $\pi_\theta$ 和评论者 ($V_\phi$ 或 $Q_\phi$) 通常都由神经网络表示。它们的参数 $\theta$ 和 $\phi$ 是根据上述原理,使用基于梯度的优化技术进行更新的。这种基本的行动者-评论者架构是许多强大算法的依据,我们接下来会讨论这些算法,包括优势行动者-评论者 (A2C/A3C)、深度确定性策略梯度 (DDPG)、近端策略优化 (PPO) 和软行动者-评论者 (SAC)。这些方法通过改进优势的估计方式、更新的执行方式以提高稳定性,或如何处理探索来完善基本结构。