Skip to main content

10. Actor-Critic

这一章可以压成一条主线:

Policy Gradient 告诉我们怎样修改策略,但它需要 qπq^\pi;用 TD 在线估计价值便得到 Actor-Critic;减去 baseline 得到 Advantage Actor-Critic;数据来自另一策略时用 importance sampling 校正;若策略直接输出动作,则得到 deterministic actor-critic / DPG。

1. Policy Gradient 缺少什么?​

上一章的策略梯度定理给出

∇θJ(θ)=ES∼ηπ, A∼πθ[∇θlog⁡πθ(A∣S) qπ(S,A)].\nabla_\theta J(\theta) =\mathbb E_{S\sim\eta_\pi,\,A\sim\pi_\theta} \left[ \nabla_\theta\log\pi_\theta(A\mid S)\,q^\pi(S,A) \right].

相应的一次随机更新为

θt+1=θt+αθ∇θlog⁡πθt(at∣st)qπ(st,at).\theta_{t+1}=\theta_t+ \alpha_\theta \nabla_\theta\log\pi_{\theta_t}(a_t\mid s_t) q^\pi(s_t,a_t).

其中有两个角色:∇θlog⁡πθ(a∣s)\nabla_\theta\log\pi_\theta(a\mid s) 决定如何修改策略,称为 Actor;qπ(s,a)q^\pi(s,a) 评价该动作好不好,称为 Critic。因此 Actor-Critic 的本质仍是 Policy Gradient,区别仅在于如何获得未知的 qπ(s,a)q^\pi(s,a)。

2. 从 REINFORCE 到 Q Actor-Critic​

一种做法是等回合结束,以完整回报

Gt=Rt+1+γRt+2+⋯G_t=R_{t+1}+\gamma R_{t+2}+\cdots

估计 qπ(st,at)q^\pi(s_t,a_t)。这就是 REINFORCE:

θ←θ+αθGt∇θlog⁡πθ(at∣st).\theta\leftarrow\theta+ \alpha_\theta G_t\nabla_\theta\log\pi_\theta(a_t\mid s_t).

另一种做法是不等回合结束,而是用参数化 action value q^(s,a,w)\hat q(s,a,\mathbf w) 逼近 qπ(s,a)q^\pi(s,a)。若动作按当前策略采样,可用 Sarsa TD error:

δt=Rt+1+γq^(st+1,at+1,wt)−q^(st,at,wt),\delta_t=R_{t+1}+\gamma\hat q(s_{t+1},a_{t+1},\mathbf w_t) -\hat q(s_t,a_t,\mathbf w_t), wt+1=wt+αwδt∇wq^(st,at,wt).\mathbf w_{t+1}=\mathbf w_t+ \alpha_w\delta_t\nabla_{\mathbf w}\hat q(s_t,a_t,\mathbf w_t).

Actor 使用 critic 的评价:

θt+1=θt+αθq^(st,at,wt)∇θlog⁡πθt(at∣st).\theta_{t+1}=\theta_t+ \alpha_\theta\hat q(s_t,a_t,\mathbf w_t) \nabla_\theta\log\pi_{\theta_t}(a_t\mid s_t).

这就是最直接的 Q Actor-Critic (QAC):

Policy Gradient⟶{MC estimate⇒REINFORCE,TD estimate⇒Actor-Critic.\text{Policy Gradient} \longrightarrow \begin{cases} \text{MC estimate} &\Rightarrow \text{REINFORCE},\\ \text{TD estimate} &\Rightarrow \text{Actor-Critic}. \end{cases}

3. Advantage Function​

QAC 直接使用绝对价值 qπ(s,a)q^\pi(s,a),方差可能很大。例如 q(s,a1)=101q(s,a_1)=101、q(s,a2)=100q(s,a_2)=100 时,动作间实际差异很小,但两次更新的权重都很大。我们更关心动作是否优于该状态下的通常表现。

对任意只依赖状态的 baseline b(s)b(s),可以把梯度写为

E[∇θlog⁡πθ(A∣S)(qπ(S,A)−b(S))].\mathbb E\left[ \nabla_\theta\log\pi_\theta(A\mid S) \bigl(q^\pi(S,A)-b(S)\bigr) \right].

它不改变期望梯度,因为固定 ss 时

∑aπθ(a∣s)∇θlog⁡πθ(a∣s)b(s)=b(s)∑a∇θπθ(a∣s)=b(s)∇θ∑aπθ(a∣s)=b(s)∇θ1=0.\begin{aligned} \sum_a\pi_\theta(a\mid s)\nabla_\theta\log\pi_\theta(a\mid s)b(s) &=b(s)\sum_a\nabla_\theta\pi_\theta(a\mid s)\\ &=b(s)\nabla_\theta\sum_a\pi_\theta(a\mid s)\\ &=b(s)\nabla_\theta 1=0. \end{aligned}

也就是说,baseline 会改变单个样本的随机梯度,却不会改变其期望;合适的 baseline 能显著降低方差。

严格的最优 baseline 还会按 ∥∇θlog⁡π∥2\lVert\nabla_\theta\log\pi\rVert^2 加权;推导见下方折叠部分。实践中通常选择更自然、也更易学习的

b(s)=vπ(s)=EA∼π[qπ(s,A)].b(s)=v^\pi(s)=\mathbb E_{A\sim\pi}[q^\pi(s,A)].

于是得到 advantage function:

严格的最优 baseline

固定状态 ss,记

g(A)=∇θlog⁡πθ(A∣s).g(A)=\nabla_\theta\log\pi_\theta(A\mid s).

我们限制 baseline 为仅依赖状态的标量 b(s)b(s)。由于 baseline 不改变策略梯度的期望,最小化梯度总体方差等价于最小化其二阶矩:

min⁡b(s)EA∼πθ(⋅∣s)[∥g(A)(qπ(s,A)−b(s))∥2].\min_{b(s)} \mathbb E_{A\sim\pi_\theta(\cdot\mid s)} \left[ \left\|g(A)\bigl(q^\pi(s,A)-b(s)\bigr)\right\|^2 \right].

也就是

min⁡b(s)EA[∥g(A)∥2(qπ(s,A)−b(s))2].\min_{b(s)} \mathbb E_A \left[ \|g(A)\|^2\bigl(q^\pi(s,A)-b(s)\bigr)^2 \right].

对 b(s)b(s) 求导并令其为零:

0=∂∂b(s)EA[∥g(A)∥2(qπ(s,A)−b(s))2]=EA[∂∂b(s){∥g(A)∥2(qπ(s,A)−b(s))2}]=EA[−2∥g(A)∥2(qπ(s,A)−b(s))]=−2EA[∥g(A)∥2(qπ(s,A)−b(s))].\begin{aligned} 0 &=\frac{\partial}{\partial b(s)} \mathbb E_A \left[ \|g(A)\|^2\bigl(q^\pi(s,A)-b(s)\bigr)^2 \right]\\ &=\mathbb E_A\left[ \frac{\partial}{\partial b(s)} \left\{ \|g(A)\|^2\bigl(q^\pi(s,A)-b(s)\bigr)^2 \right\} \right]\\ &=\mathbb E_A\left[ -2\|g(A)\|^2\bigl(q^\pi(s,A)-b(s)\bigr) \right]\\ &=-2\mathbb E_A \left[ \|g(A)\|^2\bigl(q^\pi(s,A)-b(s)\bigr) \right]. \end{aligned}

两边同时除以 −2-2:

EA[∥g(A)∥2(qπ(s,A)−b(s))]=0.\mathbb E_A \left[ \|g(A)\|^2\bigl(q^\pi(s,A)-b(s)\bigr) \right]=0.

将期望中的乘法展开:

EA[∥g(A)∥2qπ(s,A)]−EA[∥g(A)∥2b(s)]=0.\mathbb E_A\left[\|g(A)\|^2q^\pi(s,A)\right] -\mathbb E_A\left[\|g(A)\|^2b(s)\right]=0.

b(s)b(s) 在这里是固定状态 ss 下的常数,不随采样动作 AA 改变,因此可移到期望外:

EA[∥g(A)∥2qπ(s,A)]−b(s)EA[∥g(A)∥2]=0.\mathbb E_A\left[\|g(A)\|^2q^\pi(s,A)\right] -b(s)\mathbb E_A\left[\|g(A)\|^2\right]=0.

移项并除以 EA[∥g(A)∥2]\mathbb E_A[\|g(A)\|^2](该量非零时),得到

b∗(s)=EA∼πθ(⋅∣s)[∥∇θlog⁡πθ(A∣s)∥2qπ(s,A)]EA∼πθ(⋅∣s)[∥∇θlog⁡πθ(A∣s)∥2].\boxed{ b^*(s)= \frac{ \mathbb E_{A\sim\pi_\theta(\cdot\mid s)} \left[ \left\|\nabla_\theta\log\pi_\theta(A\mid s)\right\|^2q^\pi(s,A) \right] }{ \mathbb E_{A\sim\pi_\theta(\cdot\mid s)} \left[ \left\|\nabla_\theta\log\pi_\theta(A\mid s)\right\|^2 \right] }. }

如果不同动作的 ∥∇θlog⁡πθ(a∣s)∥2\|\nabla_\theta\log\pi_\theta(a\mid s)\|^2 差别不大,该权重近似可以约掉,于是 b∗(s)≈EA[qπ(s,A)]=vπ(s)b^*(s)\approx\mathbb E_A[q^\pi(s,A)]=v^\pi(s)。


Aπ(s,a)=qπ(s,a)−vπ(s).\boxed{A^\pi(s,a)=q^\pi(s,a)-v^\pi(s).}

Aπ(s,a)>0A^\pi(s,a)>0 表示动作优于当前策略在该状态下的平均选择,应提高其概率;反之则应降低。Actor 更新因此变为

θ←θ+αθAπ(st,at)∇θlog⁡πθ(at∣st).\theta\leftarrow\theta+ \alpha_\theta A^\pi(s_t,a_t) \nabla_\theta\log\pi_\theta(a_t\mid s_t).

4. TD error 就是 advantage 的一步样本​

若分别学习 qq 和 vv,可以直接计算 q(s,a)−v(s)q(s,a)-v(s),但需要两个 critic。利用 Bellman 方程:

qπ(st,at)=E[Rt+1+γvπ(St+1)∣st,at],q^\pi(s_t,a_t)= \mathbb E\left[R_{t+1}+\gamma v^\pi(S_{t+1})\mid s_t,a_t\right],

可得

Aπ(st,at)=E[Rt+1+γvπ(St+1)−vπ(st)∣st,at].A^\pi(s_t,a_t)= \mathbb E\left[ R_{t+1}+\gamma v^\pi(S_{t+1})-v^\pi(s_t) \mid s_t,a_t \right].

因此,一步 TD error

δt=Rt+1+γv^(st+1,wt)−v^(st,wt)\boxed{ \delta_t=R_{t+1}+\gamma\hat v(s_{t+1},\mathbf w_t) -\hat v(s_t,\mathbf w_t) }

是 Aπ(st,at)A^\pi(s_t,a_t) 的样本估计(当 value critic 准确时无偏)。这只需要一个 state-value critic:

wt+1=wt+αwδt∇wv^(st,wt),\mathbf w_{t+1}=\mathbf w_t+ \alpha_w\delta_t\nabla_{\mathbf w}\hat v(s_t,\mathbf w_t), θt+1=θt+αθδt∇θlog⁡πθt(at∣st).\theta_{t+1}=\theta_t+ \alpha_\theta\delta_t \nabla_\theta\log\pi_{\theta_t}(a_t\mid s_t).

4.1 随机策略(on-policy A2C)的伪代码​

这里 actor 是随机策略:每次动作必须由当前 πθ\pi_\theta 采样。δt\delta_t 一方面训练 value critic,另一方面作为这次动作的 advantage 样本更新 actor。

actor = StochasticPolicy()
critic = ValueNetwork()

for _ in range(num_episodes):
state, _ = env.reset()
done = False

while not done:
action = actor.sample(state)
next_state, reward, terminated, truncated, _ = env.step(action)
done = terminated or truncated

value = critic(state)
with torch.no_grad():
next_value = 0.0 if done else critic(next_state)
td_target = reward + gamma * next_value
td_error = td_target - value

# Critic: semi-gradient TD(0)
critic_optimizer.zero_grad()
(td_error.square()).backward()
critic_optimizer.step()

# Actor: reinforce actions with positive TD error
actor_optimizer.zero_grad()
(-td_error.detach() * actor.log_prob(state, action)).backward()
actor_optimizer.step()

state = next_state

5. Importance Sampling:从 on-policy 到 off-policy​

上面的梯度期望要求 A∼πθ(⋅∣S)A\sim\pi_\theta(\cdot\mid S),所以用于生成数据的 behavior policy 与待优化的 target policy 相同:这是 on-policy。

5.1 为什么不只用 on-policy?​

当然可以,而且 on-policy 的估计最直接:每轮都用当前策略采样,再用这些新数据更新当前策略。但策略一更新,旧数据对应的是旧策略,严格来说便不能再直接用于新策略的梯度估计;昂贵的环境交互数据常常只用一次就被丢弃。

off-policy 将实际采集数据的 behavior policy β\beta 与待优化的 target policy πθ\pi_\theta 分开。它主要带来三项好处:

  • 更高的数据效率:旧轨迹可被反复训练,经验回放(replay buffer)因此成为可能;这在环境交互昂贵时很重要。
  • 更好的探索:β\beta 可以保留较强随机性或额外探索噪声,而 πθ\pi_\theta 可以学习更好的、甚至近乎确定性的决策。
  • 利用既有数据:数据可以来自历史策略、其他控制器,甚至离线日志,而不必每次都由当前 target policy 重新采集。

代价是:数据分布不再与目标策略一致,直接使用会产生偏差;importance sampling 就是为处理这个代价而引入的。若数据动作来自另一个行为策略 β\beta,我们仍想优化 target policy πθ\pi_\theta,这便是 off-policy 的情形。

5.2 为什么需要 Importance Sampling?​

策略梯度需要的是目标策略下的期望,例如

EA∼πθ(⋅∣s)[f(A)].\mathbb E_{A\sim\pi_\theta(\cdot\mid s)}[f(A)].

然而,手上的数据若由行为策略采集,则动作满足 A∼β(⋅∣s)A\sim\beta(\cdot\mid s)。直接对这些样本求平均,会收敛到

1N∑i=1Nf(Ai)→N→∞EA∼β(⋅∣s)[f(A)],\frac1N\sum_{i=1}^N f(A_i) \xrightarrow[N\to\infty]{} \mathbb E_{A\sim\beta(\cdot\mid s)}[f(A)],

而不是我们需要的 EA∼πθ[f(A)]\mathbb E_{A\sim\pi_\theta}[f(A)]。

Importance Sampling 的作用就是为每个 behavior 样本乘一个权重,使其加权后的平均效果等同于从目标策略采样。

5.3 Importance Sampling 与 coverage 条件​

这一校正要求 coverage 条件:目标策略可能选到的动作,行为策略必须也有机会采到。

πθ(a∣s)>0 ⇒ β(a∣s)>0,\pi_\theta(a\mid s)>0\ \Rightarrow\ \beta(a\mid s)>0,

这样 πθ(a∣s)/β(a∣s)\pi_\theta(a\mid s)/\beta(a\mid s) 才有定义,且不会遗漏目标策略会选择、却从未出现在数据中的动作。现在可使用 importance sampling:

EA∼πθ[f(A)]=EA∼β[πθ(A∣S)β(A∣S)f(A)].\mathbb E_{A\sim\pi_\theta}[f(A)] =\mathbb E_{A\sim\beta} \left[ \frac{\pi_\theta(A\mid S)}{\beta(A\mid S)}f(A) \right].

以离散动作空间为例,固定状态 S=sS=s,左边先按目标策略展开:

EA∼πθ(⋅∣s)[f(A)]=∑a: πθ(a∣s)>0πθ(a∣s)f(a).\mathbb E_{A\sim\pi_\theta(\cdot\mid s)}[f(A)] =\sum_{a:\,\pi_\theta(a\mid s)>0} \pi_\theta(a\mid s)f(a).

由 coverage 条件,和式中的每个动作都有 β(a∣s)>0\beta(a\mid s)>0,因此可以乘除同一个 β(a∣s)\beta(a\mid s):

∑a: πθ(a∣s)>0πθ(a∣s)f(a)=∑a: πθ(a∣s)>0β(a∣s)πθ(a∣s)β(a∣s)f(a)=∑aβ(a∣s)πθ(a∣s)β(a∣s)f(a)=EA∼β(⋅∣s)[πθ(A∣s)β(A∣s)f(A)].\begin{aligned} \sum_{a:\,\pi_\theta(a\mid s)>0} \pi_\theta(a\mid s)f(a) &=\sum_{a:\,\pi_\theta(a\mid s)>0} \beta(a\mid s) \frac{\pi_\theta(a\mid s)}{\beta(a\mid s)}f(a)\\ &=\sum_a \beta(a\mid s) \frac{\pi_\theta(a\mid s)}{\beta(a\mid s)}f(a)\\ &=\mathbb E_{A\sim\beta(\cdot\mid s)} \left[ \frac{\pi_\theta(A\mid s)}{\beta(A\mid s)}f(A) \right]. \end{aligned}

连续动作时只需将求和 ∑a\sum_a 换成积分 ∫\int,结论相同。

其中

ρt=πθ(at∣st)β(at∣st)\rho_t=\frac{\pi_\theta(a_t\mid s_t)}{\beta(a_t\mid s_t)}

称为 importance ratio,它补偿两种策略下的采样频率差异。

5.4 Off-policy Actor-Critic​

将 importance ratio 乘到 actor 的样本梯度上,得到常见的一步形式:

θt+1=θt+αθρt δt∇θlog⁡πθt(at∣st).\theta_{t+1}=\theta_t+ \alpha_\theta\rho_t\,\delta_t \nabla_\theta\log\pi_{\theta_t}(a_t\mid s_t).

实际的 off-policy critic 往往还需要专门的稳定化设计;importance ratio 本身也可能造成高方差。


步骤不用重要性采样:从当前策略采样使用重要性采样:从旧策略采样
优化目标Ea∼πθ(⋅∣s) ⁣[A^(s,a)]\displaystyle \mathbb E_{a\sim\pi_\theta(\cdot\mid s)}\!\left[\hat A(s,a)\right]Ea∼πold(⋅∣s) ⁣[πθ(a∣s)πold(a∣s)A^(s,a)]\displaystyle \mathbb E_{a\sim\pi_{\mathrm{old}}(\cdot\mid s)}\!\left[\frac{\pi_\theta(a\mid s)}{\pi_{\mathrm{old}}(a\mid s)}\hat A(s,a)\right]
展开成求和∑aπθ(a∣s)A^(s,a)\displaystyle \sum_a\pi_\theta(a\mid s)\hat A(s,a)∑aπold(a∣s)πθ(a∣s)πold(a∣s)A^(s,a)\displaystyle \sum_a\pi_{\mathrm{old}}(a\mid s)\frac{\pi_\theta(a\mid s)}{\pi_{\mathrm{old}}(a\mid s)}\hat A(s,a)
直接求梯度∑a∇θπθ(a∣s)A^(s,a)\displaystyle \sum_a\nabla_\theta\pi_\theta(a\mid s)\hat A(s,a)∑aπold(a∣s)∇θπθ(a∣s)πold(a∣s)A^(s,a)\displaystyle \sum_a\pi_{\mathrm{old}}(a\mid s)\frac{\nabla_\theta\pi_\theta(a\mid s)}{\pi_{\mathrm{old}}(a\mid s)}\hat A(s,a)
把梯度写成 log 形式Ea∼πθ(⋅∣s) ⁣[∇θlog⁡πθ(a∣s) A^(s,a)]\displaystyle \mathbb E_{a\sim\pi_\theta(\cdot\mid s)}\!\left[\nabla_\theta\log\pi_\theta(a\mid s)\,\hat A(s,a)\right]Ea∼πold(⋅∣s) ⁣[πθ(a∣s)πold(a∣s) ∇θlog⁡πθ(a∣s) A^(s,a)]\displaystyle \mathbb E_{a\sim\pi_{\mathrm{old}}(\cdot\mid s)}\!\left[\frac{\pi_\theta(a\mid s)}{\pi_{\mathrm{old}}(a\mid s)}\,\nabla_\theta\log\pi_\theta(a\mid s)\,\hat A(s,a)\right]

6. Deterministic Policy Gradient​

6.1 同样从 J=vˉJ=\bar v 出发,为什么梯度形式不同?​

此前的 stochastic policy 输出动作分布,我们去最大化高回报动作输出的概率 π(a∣s)\pi(a\mid s)。确定性策略则直接输出动作:

a=μθ(s).a=\mu_\theta(s).

它没有 log⁡π(a∣s)\log\pi(a\mid s) 可以求导,但有

vμ(s)=qμ(s,μθ(s)).v^\mu(s)=q^\mu(s,\mu_\theta(s)).

它表达的是 θ→a=μθ(s)→Q(s,a)\theta\rightarrow a=\mu_\theta(s)\rightarrow Q(s,a):∇aq(s,a)\nabla_a q(s,a) 指出动作朝哪个方向改变会使价值增长最快,∇θμθ(s)\nabla_\theta\mu_\theta(s) 再把这个方向反传回 actor 参数。

对于连续动作 a∈Rda\in\mathbb R^d,这种做法不需要枚举动作或对动作概率求和,因此很适合 continuous control。

6.2 Deterministic Actor-Critic 的 TD 学习​

行为策略 β\beta 可以执行带噪声的动作来探索,形成 (st,at,Rt+1,st+1)(s_t,a_t,R_{t+1},s_{t+1});critic 则学习目标策略 μ\mu 的 qμq^\mu:

δt=Rt+1+γq^(st+1,μθ(st+1),wt)−q^(st,at,wt),\delta_t=R_{t+1} +\gamma\hat q\bigl(s_{t+1},\mu_\theta(s_{t+1}),\mathbf w_t\bigr) -\hat q(s_t,a_t,\mathbf w_t), w←w+αwδt∇wq^(st,at,w),\mathbf w\leftarrow\mathbf w+ \alpha_w\delta_t\nabla_{\mathbf w}\hat q(s_t,a_t,\mathbf w), θ←θ+αθ∇θμθ(st)∇aq^(st,a,w)∣a=μθ(st).\theta\leftarrow\theta+ \alpha_\theta \nabla_\theta\mu_\theta(s_t) \nabla_a\hat q(s_t,a,\mathbf w)\big|_{a=\mu_\theta(s_t)}.

6.3 确定性策略(DDPG 风格)的伪代码​

这里 buffer 保存的是过去真实发生的 transition (s,a,r,s′,d)(s,a,r,s',d),不保存旧 Q 值。为稳定训练,DDPG 还维护缓慢变化的 target actor μθˉ\mu_{\bar\theta} 与 target critic q^wˉ\hat q_{\bar {\mathbf w}}。

actor = DeterministicActor()
critic = CriticNetwork()
target_actor = copy.deepcopy(actor)
target_critic = copy.deepcopy(critic)
replay_buffer = ReplayBuffer(capacity)

for _ in range(num_episodes):
state, _ = env.reset()
done = False

while not done:
# Behavior action: current actor plus exploration noise.
action = actor(state) + exploration_noise()
next_state, reward, terminated, truncated, _ = env.step(action)
done = terminated or truncated
replay_buffer.add(state, action, reward, next_state, done)

batch = replay_buffer.sample(batch_size)
with no_grad():
target = batch.reward + gamma * (1 - batch.done) * target_critic(
batch.next_state, target_actor(batch.next_state)
)

# Critic: fit TD targets from historical transitions.
critic_loss = ((critic(batch.state, batch.action) - target) ** 2).mean()
update(critic_optimizer, critic_loss)

# Actor: maximize the critic's value at its current actions.
actor_loss = -critic(batch.state, actor(batch.state)).mean()
update(actor_optimizer, actor_loss)

soft_update(target_actor, actor, tau)
soft_update(target_critic, critic, tau)
state = next_state

6.4 Deterministic Actor-Critic 是 off-policy​

注意 TD target 中的 μθ(st+1)\mu_\theta(s_{t+1}) 不是要立即在环境执行的动作;它只是询问 critic:若下一步开始按目标策略行动,价值是多少。

deterministic policy gradient 是:

∇θJ=ES∼ρ[∇θμθ(S)∇aQμ(S,a)∣a=μθ(S)]\boxed{ \nabla_\theta J = \mathbb E_{S\sim \rho} \left[ \nabla_\theta \mu_\theta(S) \nabla_a Q^\mu(S,a)\big|_{a=\mu_\theta(S)} \right] }

注意这里没有:

A∼μ.A\sim \mu. 只有:

S∼ρ.S\sim \rho. 也就是说,actor 更新时只需要一个状态 ss。这个状态 ss 当初是谁采出来的,不重要。它完全可以来自另一个 behavior policy

由于 actor 更新只需要历史状态,再由当前 actor 计算 μθ(s)\mu_\theta(s),deterministic actor-critic 天然可以复用其他行为策略收集的状态。这正是 DDPG 能使用 replay buffer 的理论基础;DDPG 和 TD3 则是它的深度学习稳定化实现与改进。

7. 总结​

整章的决策树如下:

Policy Gradient E[∇log⁡π qπ]→MC estimateREINFORCE→TD estimateQ Actor-Critic→−vπ(s)Advantage Actor-Critic→Aπ≈δA2C→importance samplingoff-policy AC→a=μθ(s)DPG / DDPG.\begin{aligned} \text{Policy Gradient }\mathbb E[\nabla\log\pi\,q^\pi] &\xrightarrow{\text{MC estimate}} \text{REINFORCE}\\ &\xrightarrow{\text{TD estimate}} \text{Q Actor-Critic}\\ &\xrightarrow{-v^\pi(s)} \text{Advantage Actor-Critic}\\ &\xrightarrow{A^\pi\approx\delta} \text{A2C}\\ &\xrightarrow{\text{importance sampling}} \text{off-policy AC}\\ &\xrightarrow{a=\mu_\theta(s)} \text{DPG / DDPG}. \end{aligned}

最值得保留的直觉始终不变:Actor 决定怎么做,Critic 评价这个选择有多好,Actor 根据 Critic 的信号修改策略。