optimal_policy.search();

本文最后更新于 2026年8月11日 晚上

赵老师开源的 Github 仓库、赵老师的 B站 课程视频

背景来自 XHS 凡生(如有问题,请在下方评论区留言,侵删)

Overview

Actor-critic 方法仍然是策略梯度方法

  • 它们强调一种结合了策略梯度和基于价值的方法的结构。

什么是 “Actor” 和 “Critic”?

  • “Actor” 指的是 策略更新(policy update)
    • 之所以称为 actor,是因为策略将被应用于采取行动。
  • “Critic” 指的是 策略评估(policy evaluation)或 价值估计(value estimation)。
    • 之所以称为 critic,是因为它通过评估来批评策略。

Outline:

  1. 最简单的 Actor-Critic:QAC
  2. Advantage Actor-Critic:A2C
    • 引入偏置量以减少估计的方差
  3. 异策略 Actor-Critic (Off-policy actor-critic)
    • 如何将 on-policy 的方法转换为 off-policy 的
    • 重要性采样 (Importance sampling)
  4. 确定性 Actor-Critic (DPG)

Actor-Critic

Lec 48

回顾上一讲中介绍的策略梯度思想。

  1. 一个标量度量 J(θ)J(\theta),可以是 vˉπ\bar{v}_\pirˉπ\bar{r}_\pi
  2. 最大化 J(θ)J(\theta) 的梯度上升算法是

θt+1=θt+αθJ(θt)=θt+αESη,Aπ[θlnπ(AS,θt)qπ(S,A)]\begin{align*} \theta_{t+1} &= \theta_t + \alpha \nabla_\theta J(\theta_t) \\ &= \theta_t + \alpha \mathbb{E}_{S\sim\eta, A\sim\pi}\left[\nabla_\theta \ln \pi(A|S,\theta_t) q_\pi(S,A)\right] \end{align*}

  1. 随机梯度上升算法是

θt+1=θt+αθlnπ(atst,θt)qt(st,at)\theta_{t+1} = \theta_t + \alpha \nabla_\theta \ln \pi(a_t|s_t,\theta_t) \color{red}{q_t(s_t,a_t)}

我们可以从这个算法中看到 “actor” 和 “critic”:

  • 这个算法对应于 actor
    • 它在更新 θ\theta,也即更新策略!
  • 估计 qt(s,a)q_t(s,a) 的算法对应于 critic

如何得到 qt(st,at)q_t(s_t,a_t)

到目前为止,我们研究了两种估计 action value 的方法:

  • Monte Carlo learning:如果使用 MC,对应的算法称为 REINFORCE蒙特卡洛策略梯度 (Monte Carlo policy gradient)
    • 我们在上一讲中介绍过。
  • Temporal-difference learning:如果使用 TD,这类算法通常称为 actor-critic
    • 我们将在本讲中介绍。

最简单的 Actor-Critic 算法 (QAC)

QAC 的伪代码

  • 目标:通过最大化 J(θ)J(\theta) 来搜索最优策略。
  • 在每个回合的时间步 tt,执行:
    • 按照 π(ast,θt)\pi(a|s_t,\theta_t) 生成 ata_t,观察 rt+1,st+1r_{t+1}, s_{t+1},然后按照 π(ast+1,θt)\pi(a|s_{t+1},\theta_t) 生成 at+1a_{t+1}
    • Critic(价值更新)

      wt+1=wt+αw[rt+1+γq(st+1,at+1,wt)q(st,at,wt)]wq(st,at,wt)w_{t+1} = w_t + \alpha_w \left[r_{t+1} + \gamma q(s_{t+1}, a_{t+1}, w_t) - q(s_t, a_t, w_t)\right] \nabla_w q(s_t, a_t, w_t)

    • Actor(策略更新)

      θt+1=θt+αθθlnπ(atst,θt)q(st,at,wt+1)\theta_{t+1} = \theta_t + \alpha_\theta \nabla_\theta \ln \pi(a_t|s_t,\theta_t) q(s_t, a_t, w_{t+1})

补充说明:

  • Critic 对应于 “SARSA + 值函数近似”
  • Actor 对应于策略更新算法。
  • 该算法是 on-policy
    • 由于策略是随机的(π(as,θ)>0\pi(a|s,\theta) > 0),因此不需要再使用 ε\varepsilon-greedy 增加探索性。
  • 这种特定的 actor-critic 算法有时被称为 Q Actor-Critic (QAC)
  • 虽然简单,但该算法揭示了 actor-critic 方法的核心思想。它可以被扩展以生成许多其他算法,如后面所示。

A2C

Lec 49

接下来,我们将 QAC 扩展为优势 Actor-Critic (Advantage Actor-Critic, A2C)

核心思想:引入一个基准 (baseline)降低方差

基准不变性

Baseline Invariance

性质:策略梯度对于额外的基准是不变的。

θJ(θ)=ESη,Aπ[θlnπ(AS,θt)qπ(S,A)]=ESη,Aπ[θlnπ(AS,θt)(qπ(S,A)b(S))]\begin{align*} \nabla_\theta J(\theta) &= \mathbb{E}_{S\sim\eta, A\sim\pi}\left[\nabla_\theta \ln \pi(A|S,\theta_t) q_\pi(S,A)\right] \\ &= \mathbb{E}_{S\sim\eta, A\sim\pi}\left[\nabla_\theta \ln \pi(A|S,\theta_t) \big(q_\pi(S,A) - b(S)\big)\right] \end{align*}

这里,额外的基准 b(S)b(S)SS 的一个标量函数。

接下来,我们回答两个问题:

  • 为什么它是成立的?
  • 为什么这是有用的?

为何成立?

这是因为,

ESη,Aπ[θlnπ(AS,θt)b(S)]=0\mathbb{E}_{S\sim\eta, A\sim\pi}\left[\nabla_\theta \ln \pi(A|S,\theta_t) b(S)\right] = 0

上式的推导如下,

ESη,Aπ[θlnπ(AS,θt)b(S)]=sSη(s)aAπ(as,θt)θlnπ(as,θt)b(s)=sSη(s)aAθπ(as,θt)b(s)=sSη(s)b(s)aAθπ(as,θt)=sSη(s)b(s)θaAπ(as,θt)=sSη(s)b(s)θ1=0\begin{align*} \mathbb{E}_{S\sim\eta, A\sim\pi}\left[\nabla_\theta \ln \pi(A|S,\theta_t) b(S)\right] &= \sum_{s\in\mathcal{S}} \eta(s) \sum_{a\in\mathcal{A}} \pi(a|s,\theta_t) \nabla_\theta \ln \pi(a|s,\theta_t) b(s) \\ &= \sum_{s\in\mathcal{S}} \eta(s) \sum_{a\in\mathcal{A}} \nabla_\theta \pi(a|s,\theta_t) b(s) \\ &= \sum_{s\in\mathcal{S}} \eta(s) b(s) \sum_{a\in\mathcal{A}} \nabla_\theta \pi(a|s,\theta_t) \\ &= \sum_{s\in\mathcal{S}} \eta(s) b(s) \nabla_\theta \sum_{a\in\mathcal{A}} \pi(a|s,\theta_t) \\ &= \sum_{s\in\mathcal{S}} \eta(s) b(s) \nabla_\theta 1 = 0 \end{align*}

  • sSs \sim \mathcal{S} 服从分布 η(s)\eta(s)aAa \sim \mathcal{A} 服从分布 π(as,θt)\pi(a|s,\theta_t)

为何有用?

梯度为 θJ(θ)=E[X]\nabla_\theta J(\theta) = \mathbb{E}[X],其中

X(S,A)θlnπ(AS,θt)[qπ(S,A)b(S)]X(S,A) \doteq \nabla_\theta \ln \pi(A|S,\theta_t)\big[q_\pi(S,A) - b(S)\big]

我们有,

  • E[X]\mathbb{E}[X] 不随 b(S)b(S) 变化。
  • var(X)\text{var}(X) 会随 b(S)b(S) 变化
    • 为什么?因为 tr[var(X)]=E[XTX]xˉTxˉ\text{tr}[\text{var}(X)] = \mathbb{E}[X^T X] - \bar{x}^T \bar{x},且

    E[XTX]=E[(θlnπ)T(θlnπ)(qπ(S,A)b(S))2]=E[θlnπ2(qπ(S,A)b(S))2]\begin{align*} \mathbb{E}[X^T X] &= \mathbb{E}\left[(\nabla_\theta \ln \pi)^T (\nabla_\theta \ln \pi)\big(q_\pi(S,A) - b(S)\big)^2\right] \\ &= \mathbb{E}\left[\|\nabla_\theta \ln \pi\|^2 \big(q_\pi(S,A) - b(S)\big)^2\right] \end{align*}

    想象一下,如果 bb 非常大(例如 100 W),会让方差产生很大波动。

最优基准

Optimal Baseline

目标:选择一个最优基准 bb 来最小化 var(X)\text{var}(X)

  • 好处:当我们使用随机样本来近似 E[X]\mathbb{E}[X] 时,估计的方差也会很小。

在 REINFORCE 和 QAC 的算法中:

  • 没有基准。
  • 或者说,b=0b = 0,但这不能保证是一个好的基准。

最优基准的表达式

对于任意 sSs \in \mathcal{S},能够最小化 var(X)\text{var}(X)最优基准为:

b(s)=EAπ[θlnπ(As,θt)2qπ(s,A)]EAπ[θlnπ(As,θt)2]b^*(s) = \frac{\mathbb{E}_{A\sim\pi}\left[\color{lightblue}{\|\nabla_\theta \ln \pi(A|s,\theta_t)\|^2} \color{red}{q_\pi(s,A)}\right]}{\mathbb{E}_{A\sim\pi}\left[\color{lightblue}{\|\nabla_\theta \ln \pi(A|s,\theta_t)\|^2} \right]}

证明:

xˉE[X]\bar{x} \doteq \mathbb{E}[X]。如果 XX 是一个向量,那么其方差 var(X)\mathrm{var}(X) 是一个矩阵。通常可以选择其迹(trace)作为优化的标量目标函数:

tr[var(X)]=trE[(Xxˉ)(Xxˉ)T]=trE[XXTxˉXTXxˉT+xˉxˉT]=E[XTXXTxˉxˉTX+xˉTxˉ]=E[XTX]xˉTxˉ.(10.6)\begin{align*} \mathrm{tr}[\mathrm{var}(X)] &= \mathrm{tr}\mathbb{E}[(X-\bar{x})(X-\bar{x})^{\mathrm{T}}] \\ &= \mathrm{tr}\mathbb{E}[XX^{\mathrm{T}} - \bar{x}X^{\mathrm{T}} - X\bar{x}^{\mathrm{T}} + \bar{x}\bar{x}^{\mathrm{T}}] \\ &= \mathbb{E}[X^{\mathrm{T}}X - X^{\mathrm{T}}\bar{x} - \bar{x}^{\mathrm{T}}X + \bar{x}^{\mathrm{T}}\bar{x}] \\ &= \mathbb{E}[X^{\mathrm{T}}X] - \bar{x}^{\mathrm{T}}\bar{x}. \end{align*} \tag{10.6}

在导出上式时,我们使用了迹的性质 tr(AB)=tr(BA)\mathrm{tr}(AB) = \mathrm{tr}(BA),其中 A,BA, B 是两个方阵。如果 xˉ\bar{x} 是不变的,那么式(10.6)表明我们只需要最小化 E[XTX]\mathbb{E}[X^{\mathrm{T}}X] 就可以最小化 tr[var(X)]\mathrm{tr}[\mathrm{var}(X)]

XX 代入 E[XTX]\mathbb{E}[X^{\mathrm{T}}X] 可得

E[XTX]=E[(θlnπ)T(θlnπ)(qπ(S,A)b(S))2]=E[θlnπ2(qπ(S,A)b(S))2],\begin{align*} \mathbb{E}[X^{\mathrm{T}}X] &= \mathbb{E}\left[(\nabla_\theta \ln \pi)^{\mathrm{T}}(\nabla_\theta \ln \pi)(q_\pi(S,A) - b(S))^2\right] \\ &= \mathbb{E}\left[\|\nabla_\theta \ln \pi\|^2 (q_\pi(S,A) - b(S))^2\right], \end{align*}

其中 π(AS,θ)\pi(A|S,\theta) 简写为 π\pi。由于 SηS \sim \etaAπA \sim \pi,上述方程可以改写为

E[XTX]=sSη(s)EAπ[θlnπ2(qπ(s,A)b(s))2].\mathbb{E}[X^{\mathrm{T}}X] = \sum_{s \in \mathcal{S}} \eta(s) \mathbb{E}_{A \sim \pi}\left[\|\nabla_\theta \ln \pi\|^2 (q_\pi(s,A) - b(s))^2\right].

目标函数最优的必要条件是 bE[XTX]=0\nabla_b \mathbb{E}[X^{\mathrm{T}}X] = 0。为确保 bE[XTX]=0\nabla_b \mathbb{E}[X^{\mathrm{T}}X] = 0,对任意 sSs \in \mathcal{S}b(s)b(s) 应满足

EAπ[θlnπ2(b(s)qπ(s,A))]=0.\mathbb{E}_{A \sim \pi}\left[\|\nabla_\theta \ln \pi\|^2 (b(s) - q_\pi(s,A))\right] = 0.

不难求解上述方程进而得到最优基准函数:

b(s)=EAπ[θlnπ2qπ(s,A)]EAπ[θlnπ2],sS.b^*(s) = \frac{\mathbb{E}_{A \sim \pi}\left[\|\nabla_\theta \ln \pi\|^2 q_\pi(s,A)\right]}{\mathbb{E}_{A \sim \pi}\left[\|\nabla_\theta \ln \pi\|^2\right]}, \qquad s \in \mathcal{S}.

补充说明:

  • 虽然这个基准是最优的,但它很复杂。
  • 我们可以去掉权重 θlnπ(As,θt)2\|\nabla_\theta \ln \pi(A|s,\theta_t)\|^2,选择一个次优基准

    b(s)=EAπ[qπ(s,A)]=vπ(s)b(s) = \mathbb{E}_{A\sim\pi}\left[q_\pi(s,A)\right] = v_\pi(s)

    这就是状态 ss状态价值

优势 Actor-Critic 算法

b(s)=vπ(s)b(s) = v_\pi(s) 时,

  • 梯度上升算法为:

    θt+1=θt+αE[θlnπ(AS,θt)[qπ(S,A)vπ(S)]]θt+αE[θlnπ(AS,θt) δπ(S,A)]\begin{align*} \theta_{t+1} &= \theta_t + \alpha \mathbb{E}\left[\nabla_\theta \ln \pi(A|S,\theta_t)\color{red}{\big[q_\pi(S,A) - v_\pi(S)\big]}\right] \\ &\doteq \theta_t + \alpha \mathbb{E}\left[\nabla_\theta \ln \pi(A|S,\theta_t) \ \color{red}{\delta_\pi(S,A)}\right] \end{align*}

    其中

    δπ(S,A)qπ(S,A)vπ(S)\color{red}{\delta_\pi(S,A) \doteq q_\pi(S,A) - v_\pi(S)}

    被称为优势函数 (advantage function)。这是因为:
    • vπ(s)=EAπ[qπ(S,A)]v_\pi(s) = \mathbb{E}_{A\sim\pi}\left[q_\pi(S,A)\right]
    • δπ(S,A)\delta_\pi(S,A) 衡量的是 qπ(S,A)q_\pi(S,A) 超出平均的部分
  • 上面的算法用到了 expectation,因此可以改造出随机版本

    θt+1=θt+αθlnπ(atst,θt)[qt(st,at)vt(st)]=θt+αθlnπ(atst,θt)δt(st,at)\begin{align*} \theta_{t+1} &= \theta_t + \alpha \nabla_\theta \ln \pi(a_t|s_t,\theta_t)\big[q_t(s_t,a_t) - v_t(s_t)\big]\\ &= \theta_t + \alpha \nabla_\theta \ln \pi(a_t|s_t,\theta_t) \delta_t(s_t,a_t) \end{align*}

算法的另一种表达

此外,该算法可以重新表示为:

θt+1=θt+αθlnπ(atst,θt)δt(st,at)=θt+αθπ(atst,θt)π(atst,θt)δt(st,at)=θt+α(δt(st,at)π(atst,θt))step sizeθπ(atst,θt)\begin{align*} \theta_{t+1} &= \theta_t + \alpha \nabla_\theta \ln \pi(a_t|s_t,\theta_t) \delta_t(s_t,a_t) \\ &= \theta_t + \alpha \frac{\nabla_\theta \pi(a_t|s_t,\theta_t)}{\pi(a_t|s_t,\theta_t)} \delta_t(s_t,a_t) \\ &= \theta_t + \alpha \underbrace{\left(\frac{\delta_t(s_t,a_t)}{\pi(a_t|s_t,\theta_t)}\right)}_{\text{step size}} \nabla_\theta \pi(a_t|s_t,\theta_t) \end{align*}

  • 步长与相对价值 δt\delta_t 成正比,而不是绝对价值 qtq_t,这更加合理!(我们在乎的是 action value 的相对值,而不是绝对值)
  • 它仍然能够很好地平衡探索与利用
    • 分子 δt\delta_t 较大时,step size 较大,倾向于去选择较大的 action value
    • 分母 π(atst,θt)\pi(a_t | s_t, \theta_t) 较小时,step size 较大,倾向于去探索 tt 时刻概率小的动作

用 TD error 近似优势函数

此外,优势函数可以用 TD error 来近似:

δt=qt(st,at)vt(st)rt+1+γvt(st+1)vt(st)\delta_t = q_t(s_t,a_t) - v_t(s_t) \rightarrow r_{t+1} + \gamma v_t(s_{t+1}) - v_t(s_t)

  • 这个近似是合理的,因为,

    E[qπ(S,A)vπ(S)S=st,A=at]=E[R+γvπ(S)vπ(S)S=st,A=at]\mathbb{E}\big[q_\pi(S,A) - v_\pi(S) \mid S=s_t, A=a_t\big] = \mathbb{E}\big[R + \gamma v_\pi(S^\prime ) - v_\pi(S) \mid S=s_t, A=a_t\big]

  • 好处:只需要一个网络来近似 vπ(s)v_\pi(s),而不需要分别用两个网络来近似 qπ(s,a)q_\pi(s,a)vπ(s)v_\pi(s)

伪代码

优势 Actor-Critic (A2C) 或 TD Actor-Critic

  • 目标:通过最大化 J(θ)J(\theta) 来搜索最优策略。
  • 在每个回合的时间步 tt,执行:
    • 按照 π(ast,θt)\pi(a|s_t,\theta_t) 生成 ata_t,然后观察 rt+1,st+1r_{t+1}, s_{t+1}
    • TD error(优势函数)

      δt=rt+1+γv(st+1,wt)v(st,wt)\delta_t = r_{t+1} + \gamma v(s_{t+1}, w_t) - v(s_t, w_t)

    • Critic(价值更新)

      wt+1=wt+αwδtwv(st,wt)w_{t+1} = w_t + \alpha_w \delta_t \nabla_w v(s_t, w_t)

    • Actor(策略更新)

      θt+1=θt+αθδtθlnπ(atst,θt)\theta_{t+1} = \theta_t + \alpha_\theta \delta_t \nabla_\theta \ln \pi(a_t|s_t, \theta_t)

它是 on-policy 的。由于策略 π(θt)\pi(\theta_t) 是随机的,不需要使用像 ε\varepsilon-greedy 这样的技术。

Off-Policy Actor-Critic

Lec 50

  • 策略梯度是 on-policy 的。
    • 为什么?因为梯度是 θJ(θ)=ESη,Aπ[]\nabla_\theta J(\theta) = \mathbb{E}_{S\sim\eta, A\sim\pi}[*],所以 π\pi 也是 behavior policy。
  • 我们能将它转换为 off-policy 吗?
    • 可以,通过 重要性采样(importance sampling)
    • 重要性采样技术不仅限于 AC,也适用于任何旨在估计期望的算法。

例子

考虑一个随机变量 XX={+1,1}X \in \mathcal{X} = \{+1, -1\}

如果 XX 的概率分布是 p0p_0

p0(X=+1)=0.5,p0(X=1)=0.5p_0(X=+1) = 0.5, \quad p_0(X=-1) = 0.5

那么 XX 的期望是,

EXp0[X]=(+1)0.5+(1)0.5=0\mathbb{E}_{X\sim p_0}[X] = (+1) \cdot 0.5 + (-1) \cdot 0.5 = 0

问题: 如何使用一些样本 {xi}\{x_i\} 来估计 E[X]\mathbb{E}[X]

情况 1:同分布的采样

  • 样本 {xi}\{x_i\} 按照 p0p_0 生成:

    E[xi]=E[X],var[xi]=var[X]\mathbb{E}[x_i] = \mathbb{E}[X], \quad \text{var}[x_i] = \text{var}[X]

  • 那么,平均值可以收敛到期望:

    xˉ=1ni=1nxiE[X],as n\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i \rightarrow \mathbb{E}[X], \quad \text{as } n \rightarrow \infty

    因为

    E[xˉ]=E[X],var[xˉ]=1nvar[X]\mathbb{E}[\bar{x}] = \mathbb{E}[X], \quad \text{var}[\bar{x}] = \frac{1}{n}\text{var}[X]

Example
样本、样本均值

情况 2:不同分布的采样

  • 样本 {xi}\{x_i\} 按照另一个分布 p1p_1 生成:

    p1(X=+1)=0.8,p1(X=1)=0.2p_1(X=+1) = 0.8, \quad p_1(X=-1) = 0.2

    期望是

    EXp1[X]=(+1)0.8+(1)0.2=0.6\mathbb{E}_{X\sim p_1}[X] = (+1) \cdot 0.8 + (-1) \cdot 0.2 = 0.6

  • 如果我们使用样本的平均值,那么毫不意外:

    xˉ=1ni=1nxiEXp1[X]=0.6EXp0[X]=0\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i \rightarrow \mathbb{E}_{X\sim p_1}[X] = 0.6 \neq \mathbb{E}_{X\sim p_0}[X] = 0

Example
上面例子的情形

问题:我们能使用 {xi}p1\{x_i\} \sim p_1 来估计 EXp0[X]\mathbb{E}_{X\sim p_0}[X] 吗?

  • 为什么要这样做?
    • 我们可能想要估计 EAπ[]\mathbb{E}_{A\sim\pi}[*],其中 π\pitarget policy,而样本来自 behavior policy β\beta
  • 如何做到?
    • 如果直接使用 xˉ\bar{x},我们无法实现:

      xˉEXp1[X]=0.6EXp0[X]\bar{x} \rightarrow \mathbb{E}_{X\sim p_1}[X] = 0.6 \neq \mathbb{E}_{X\sim p_0}[X]

    • 我们可以通过使用重要性采样技术来实现。

重要性采样

Importance Sampling

注意到,

EXp0[X]=xp0(x)x=xp1(x)p0(x)p1(x)f(x)x=EXp1[f(X)]\color{red}{\mathbb{E}_{X\sim p_0}[X]} \color{lightblue}{ = \sum_x p_0(x)x = \sum_x p_1(x) \underbrace{\frac{p_0(x)}{p_1(x)}}_{f(x)} x = } \color{red}{\mathbb{E}_{X\sim p_1}[f(X)]}

  • 因此,我们可以用估计 EXp1[f(X)]\mathbb{E}_{X\sim p_1}[f(X)] 来估计 EXp0[X]\mathbb{E}_{X\sim p_0}[X]
  • 如何估计 EXp1[f(X)]\mathbb{E}_{X\sim p_1}[f(X)]
    • 很简单。令

      fˉ1ni=1nf(xi),where xip1\bar{f} \doteq \frac{1}{n}\sum_{i=1}^{n} f(x_i), \quad \text{where } x_i \sim p_1

      那么,

      EXp1[fˉ]=EXp1[f(X)],varXp1[fˉ]=1nvarXp1[f(X)]\mathbb{E}_{X\sim p_1}[\bar{f}] = \mathbb{E}_{X\sim p_1}[f(X)] , \quad \text{var}_{X\sim p_1}[\bar{f}] = \frac{1}{n}\text{var}_{X\sim p_1}[f(X)]

      因此,fˉ\bar{f}EXp1[f(X)]=EXp0[X]\mathbb{E}_{X\sim p_1}[f(X)] = \mathbb{E}_{X\sim p_0}[X] 的一个良好近似:

      EXp0[X]fˉ=1ni=1nf(xi)=1ni=1np0(xi)p1(xi)xi\color{red}{\mathbb{E}_{X\sim p_0}[X]} \color{lightblue}{\approx \bar{f}= \frac{1}{n}\sum_{i=1}^{n} f(x_i) =}\color{red}{\frac{1}{n}\sum_{i=1}^{n} \frac{p_0(x_i)}{p_1(x_i)} x_i}

      • p0(xi)p1(xi)\frac{p_0(x_i)}{p_1(x_i)} 被称为 重要性权重(importance weight)
      • 如果 p1(xi)=p0(xi)p_1(x_i) = p_0(x_i),重要性权重为 1,fˉ\bar{f} 就变成了 xˉ\bar{x}
      • 如果 p0(xi)p1(xi)p_0(x_i) \geq p_1(x_i)xix_ip0p_0 采样的频率高于 p1p_1。重要性权重(>1> 1)可以强调这个样本的重要性
  • Q:想求 fˉ=1ni=1np0(xi)p1(xi)xi\bar{f} = \frac{1}{n}\sum_{i=1}^{n} \frac{p_0(x_i)}{p_1(x_i)} x_i 需要用到 p0(x)p_0(x),但如果我知道 p0(x)p_0(x),为什么不直接 p0(x)x\sum p_0(x) x 计算期望?
    • 如果真那么好做,那直接求即可!
    • 重要性采样适用于 给定 xx 容易计算 p0(x)p_0(x),但难以计算期望 的情况。
      • 例如,连续情况下,p0p_0 的表达式比较复杂,难以计算
      • 或者,p0p_0 没有显式表达式(例如,p0p_0 由神经网络表示)

总结

如果 {xi}p1\{x_i\} \sim p_1

xˉ=1ni=1nxiEXp1[X]fˉ=1ni=1np0(xi)p1(xi)xiEXp0[X]\begin{align*} \bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i &\rightarrow \mathbb{E}_{X\sim p_1}[X] \\ \bar{f} = \frac{1}{n}\sum_{i=1}^{n} \frac{p_0(x_i)}{p_1(x_i)} x_i &\rightarrow \mathbb{E}_{X\sim p_0}[X] \end{align*}

异策略策略梯度定理

The Theorem of Off-policy Policy Gradient

与之前的 on-policy 情况类似,我们需要推导 off-policy 情况下的策略梯度。

  • 假设 β\beta 是生成经验样本的 行为策略 (behavior policy)
  • 我们的目标:使用这些样本来更新一个能够最大化以下度量的 目标策略 (target policy) π\pi

    J(θ)=sSdβ(s)vπ(s)=ESdβ[vπ(S)]J(\theta) = \sum_{s\in\mathcal{S}} d_\beta(s) v_\pi(s) = \mathbb{E}_{S\sim d_\beta}\left[v_\pi(S)\right]

    其中,dβd_\beta 是策略 β\beta 下的平稳分布。

定理: 在折扣因子 γ(0,1)\gamma \in (0,1) 的情况下,J(θ)J(\theta) 的梯度为:

θJ(θ)=ESρ,Aβ[π(AS,θ)β(AS)θlnπ(AS,θ)qπ(S,A)]\color{lightblue}{\nabla_\theta J(\theta) = \mathbb{E}_{S\sim\rho, A\sim\beta}\left[\frac{\pi(A|S,\theta)}{\beta(A|S)} \nabla_\theta \ln \pi(A|S,\theta) q_\pi(S,A)\right]}

其中 β\beta 是行为策略,ρ\rho 是一个状态分布。

证明:

由于 dβd_\beta 独立于 θ\theta,因此 J(θ)J(\theta) 的梯度满足

θJ(θ)=θsSdβ(s)vπ(s)=sSdβ(s)θvπ(s).(10.12)\nabla_\theta J(\theta) = \nabla_\theta \sum_{s \in \mathcal{S}} d_\beta(s) v_\pi(s) = \sum_{s \in \mathcal{S}} d_\beta(s) \nabla_\theta v_\pi(s). \tag{10.12}

根据 引理9.2(见上节),θvπ(s)\nabla_\theta v_\pi(s) 的表达式为

θvπ(s)=sSPrπ(ss)aAθπ(as,θ)qπ(s,a),(10.13)\nabla_\theta v_\pi(s) = \sum_{s^\prime \in \mathcal{S}} {\Pr}_\pi(s^\prime |s) \sum_{a \in \mathcal{A}} \nabla_\theta \pi(a|s^\prime ,\theta) q_\pi(s^\prime ,a), \tag{10.13}

其中 Prπ(ss)k=0γk[Pπk]ss=[(InγPπ)1]ss{\Pr}_\pi(s^\prime |s) \doteq \sum_{k=0}^{\infty} \gamma^k [P_\pi^k]_{ss^\prime } = [(I_n - \gamma P_\pi)^{-1}]_{ss^\prime }。将 (10.13) 代入 (10.12) 得

θJ(θ)=sSdβ(s)θvπ(s)=sSdβ(s)sSPrπ(ss)aAθπ(as,θ)qπ(s,a)=sS(sSdβ(s)Prπ(ss))aAθπ(as,θ)qπ(s,a)sSρ(s)aAθπ(as,θ)qπ(s,a)=sSρ(s)aAθπ(as,θ)qπ(s,a)(将 s 换为 s)=ESρ[aAθπ(aS,θ)qπ(S,a)].\begin{align*} \nabla_\theta J(\theta) &= \sum_{s \in \mathcal{S}} d_\beta(s) \nabla_\theta v_\pi(s) = \sum_{s \in \mathcal{S}} d_\beta(s) \sum_{s^\prime \in \mathcal{S}} {\Pr}_\pi(s^\prime |s) \sum_{a \in \mathcal{A}} \nabla_\theta \pi(a|s^\prime ,\theta) q_\pi(s^\prime ,a) \\ &= \sum_{s^\prime \in \mathcal{S}} \left( \sum_{s \in \mathcal{S}} d_\beta(s) {\Pr}_\pi(s^\prime |s) \right) \sum_{a \in \mathcal{A}} \nabla_\theta \pi(a|s^\prime ,\theta) q_\pi(s^\prime ,a) \\ &\doteq \sum_{s^\prime \in \mathcal{S}} \rho(s^\prime ) \sum_{a \in \mathcal{A}} \nabla_\theta \pi(a|s^\prime ,\theta) q_\pi(s^\prime ,a) \\ &= \sum_{s \in \mathcal{S}} \rho(s) \sum_{a \in \mathcal{A}} \nabla_\theta \pi(a|s,\theta) q_\pi(s,a) \qquad (\text{将 } s^\prime \text{ 换为 } s) \\ &= \mathbb{E}_{S \sim \rho} \left[ \sum_{a \in \mathcal{A}} \nabla_\theta \pi(a|S,\theta) q_\pi(S,a) \right]. \end{align*}

利用重要性采样,上式可以转换为

ESρ[aAθπ(aS,θ)qπ(S,a)]=ESρ[aAβ(aS)π(aS,θ)β(aS)θπ(aS,θ)π(aS,θ)qπ(S,a)]=ESρ[aAβ(aS)π(aS,θ)β(aS)θlnπ(aS,θ)qπ(S,a)]=ESρ,Aβ[π(AS,θ)β(AS)θlnπ(AS,θ)qπ(S,A)].\begin{align*} \mathbb{E}_{S \sim \rho} \left[ \sum_{a \in \mathcal{A}} \nabla_\theta \pi(a|S,\theta) q_\pi(S,a) \right] &= \mathbb{E}_{S \sim \rho} \left[ \sum_{a \in \mathcal{A}} \beta(a|S) \frac{\pi(a|S,\theta)}{\beta(a|S)} \frac{\nabla_\theta \pi(a|S,\theta)}{\pi(a|S,\theta)} q_\pi(S,a) \right] \\ &= \mathbb{E}_{S \sim \rho} \left[ \sum_{a \in \mathcal{A}} \beta(a|S) \frac{\pi(a|S,\theta)}{\beta(a|S)} \nabla_\theta \ln \pi(a|S,\theta) q_\pi(S,a) \right] \\ &= \mathbb{E}_{S \sim \rho, A \sim \beta} \left[ \frac{\pi(A|S,\theta)}{\beta(A|S)} \nabla_\theta \ln \pi(A|S,\theta) q_\pi(S,A) \right]. \end{align*}

证明完毕。上述证明类似于定理9.1的证明。

异策略 AC 算法

异策略策略梯度对于基准 b(s)b(s) 也是 不变 的。

  • 特别地,我们有:

    θJ(θ)=ESρ,Aβ[π(AS,θ)β(AS)θlnπ(AS,θ)(qπ(S,A)b(S))]\nabla_\theta J(\theta) = \mathbb{E}_{S\sim\rho, A\sim\beta}\left[\frac{\pi(A|S,\theta)}{\beta(A|S)} \nabla_\theta \ln \pi(A|S,\theta) \big(q_\pi(S,A) - b(S)\big)\right]

  • 为了降低估计方差,常见的方法:选择基准为 b(S)=vπ(S)b(S) = v_\pi(S),得到,

    θJ(θ)=E[π(AS,θ)β(AS)θlnπ(AS,θ)(qπ(S,A)vπ(S))]\nabla_\theta J(\theta) = \mathbb{E}\left[\frac{\pi(A|S,\theta)}{\beta(A|S)} \nabla_\theta \ln \pi(A|S,\theta) \big(q_\pi(S,A) - v_\pi(S)\big)\right]

    • 对应的随机梯度上升算法为:

      θt+1=θt+αθπ(atst,θt)β(atst)θlnπ(atst,θt)(qt(st,at)vt(st))\theta_{t+1} = \theta_t + \alpha_\theta \frac{\pi(a_t|s_t,\theta_t)}{\beta(a_t|s_t)} \nabla_\theta \ln \pi(a_t|s_t,\theta_t) \big(q_t(s_t,a_t) - v_t(s_t)\big)

    • 与 on-policy 情况类似(Sarsa)

      qt(st,at)vt(st)rt+1+γvt(st+1)vt(st)δt(st,at)q_t(s_t,a_t) - v_t(s_t) \approx r_{t+1} + \gamma v_t(s_{t+1}) - v_t(s_t) \doteq \delta_t(s_t,a_t)

    算法变为:

    θt+1=θt+αθπ(atst,θt)β(atst)θlnπ(atst,θt)δt(st,at)\theta_{t+1} = \theta_t + \alpha_\theta \frac{\pi(a_t|s_t,\theta_t)}{\beta(a_t|s_t)} \nabla_\theta \ln \pi(a_t|s_t,\theta_t) \delta_t(s_t,a_t)

    因此,也能写作

    θt+1=θt+αθ(δt(st,at)β(atst))θπ(atst,θt)\theta_{t+1} = \theta_t + \alpha_\theta \left(\frac{\delta_t(s_t,a_t)}{\beta(a_t|s_t)}\right) \nabla_\theta \pi(a_t|s_t,\theta_t)

伪代码

伪代码:基于重要性采样的异策略 Actor-Critic

(Off-policy Actor-critic Based on Importance Sampling)

  • 初始化:给定行为策略 β(as)\beta(a|s),目标策略 π(as,θ0)\pi(a|s,\theta_0),其中 θ0\theta_0 是初始参数向量;价值函数 v(s,w0)v(s,w_0),其中 w0w_0 是初始参数向量。
  • 目标:通过最大化 J(θ)J(\theta) 来搜索最优策略。
  • 在每个回合的时间步 tt,执行:
    • 按照 β(st)\beta(s_t) 生成 ata_t,然后观察 rt+1,st+1r_{t+1}, s_{t+1}
    • TD error(优势函数)

      δt=rt+1+γv(st+1,wt)v(st,wt)\delta_t = r_{t+1} + \gamma v(s_{t+1}, w_t) - v(s_t, w_t)

    • Critic(价值更新)

      wt+1=wt+αwπ(atst,θt)β(atst)δtwv(st,wt)w_{t+1} = w_t + \alpha_w \frac{\pi(a_t|s_t,\theta_t)}{\beta(a_t|s_t)} \delta_t \nabla_w v(s_t, w_t)

    • Actor(策略更新)

      θt+1=θt+αθπ(atst,θt)β(atst)δtθπ(atst,θt)\theta_{t+1} = \theta_t + \alpha_\theta \frac{\pi(a_t|s_t,\theta_t)}{\beta(a_t|s_t)} \delta_t \nabla_\theta \pi(a_t|s_t,\theta_t)

确定性 Actor-Critic (DPG)

Lec 51

到目前为止,策略梯度方法中使用的策略都是 stochastic 的,因为对于每个 (s,a)(s,a) 都有 π(as,θ)>0\pi(a|s,\theta) > 0.

能否在策略梯度方法中使用 确定性策略(deterministic policies)?

  • 好处:它可以处理连续动作!(无限个 action)

确定性策略的表示

  • 到目前为止,一般策略表示为 π(as,θ)[0,1]\pi(a|s,\theta) \in [0,1],它可以是随机的,也可以是确定性的。
  • 现在,我们将 确定性策略 表示为:

    a=μ(s,θ)μ(s)\color{lightblue}{a = \mu(s,\theta) \doteq \mu(s)}

    • μ\mu 是从 SA\mathcal{S} \to \mathcal{A} 的映射。
    • μ\mu 可以用神经网络来表示,输入为 ss,输出为 aa,参数为 θ\theta
    • 我们可以将 μ(s,θ)\mu(s,\theta) 简写为 μ(s)\mu(s)

确定性策略梯度定理

The Theorem of Deterministic Policy Gradient

  • 之前介绍的策略梯度定理仅对随机策略有效
  • 如果策略必须是确定性的,我们必须推导一个新的策略梯度定理
  • 思想和步骤是类似的。

考虑折扣情况下的平均状态价值度量:

J(θ)=E[vμ(s)]=sSd0(s)vμ(s)J(\theta) = \mathbb{E}\left[v_\mu(s)\right] = \sum_{s\in\mathcal{S}} d_0(s) v_\mu(s)

其中,d0(s)d_0(s) 是满足 sSd0(s)=1\sum_{s\in\mathcal{S}} d_0(s) = 1 的概率分布。

  • d0d_0 被选择为独立于 μ\mu 的分布。在这种情况下,梯度更容易计算。
  • 选择 d0d_0 有两个特殊但重要的情况:
    • 第一种:d0(s0)=1d_0(s_0) = 1d0(ss0)=0d_0(s \neq s_0) = 0,其中 s0s_0 是一个特定的感兴趣的起始状态。
      • 此时的目标函数的 J(θ)=vμ(s0)J(\theta) = \sum v_\mu(s_0)
    • 第二种:d0d_0 是一个与 μ\mu 不同的 behavior policy 的平稳分布。

定理: 在折扣因子 γ(0,1)\gamma \in (0,1) 的情况下,J(θ)J(\theta) 的梯度为:

θJ(θ)=sSρμ(s)θμ(s)(aqμ(s,a))a=μ(s)=ESρμ[θμ(S)(aqμ(S,a))a=μ(S)]\color{lightblue}{\begin{align*} \nabla_\theta J(\theta) &= \sum_{s\in\mathcal{S}} \rho_\mu(s) \nabla_\theta \mu(s) \big(\nabla_a q_\mu(s,a)\big)\big|_{a=\mu(s)} \\ &= \mathbb{E}_{S\sim\rho_\mu}\left[\nabla_\theta \mu(S) \big(\nabla_a q_\mu(S,a)\big)\big|_{a=\mu(S)}\right] \end{align*}}

这里,ρμ\rho_\mu 是一个 state 的分布。

证明较为繁琐。

与随机情况的一个重要区别:

  • 梯度不涉及动作 AA 的分布
    • 这是因为,确定性策略会有替换:a=μ(s)a = \mu(s)
  • 确定性策略梯度方法是 off-policy 的。
    • 梯度并不涉及动作的分布,因此我们也无需关心动作样本是如何产生的——也就是说,我们可以任意选取 behavior policy 进行样本生成!

确定性 Actor-Critic 的算法

The Algorithm of Deterministic Actor-Critic

基于策略梯度,最大化 J(θ)J(\theta) 的梯度上升算法为:

θt+1=θt+αθESρμ[θμ(S)(aqμ(S,a))a=μ(S)]\theta_{t+1} = \theta_t + \alpha_\theta \mathbb{E}_{S\sim\rho_\mu}\left[\nabla_\theta \mu(S) \big(\nabla_a q_\mu(S,a)\big)\big|_{a=\mu(S)}\right]

对应的随机梯度上升算法为:

θt+1=θt+αθθμ(st)(aqμ(st,a))a=μ(st)\theta_{t+1} = \theta_t + \alpha_\theta \nabla_\theta \mu(s_t) \big(\nabla_a q_\mu(s_t,a)\big)\big|_{a=\mu(s_t)}

伪代码

确定性 Actor-Critic 算法 (Deterministic Actor-critic Algorithm)

  • 初始化:给定行为策略 β(as)\beta(a|s),确定性目标策略 μ(s,θ0)\mu(s,\theta_0),其中 θ0\theta_0 是初始参数向量。价值函数 v(s,w0)v(s,w_0),其中 w0w_0 是初始参数向量。
  • 目标:通过最大化 J(θ)J(\theta) 来搜索最优策略。
  • 在每个回合的时间步 tt,执行:
    • 按照 β\beta 生成 ata_t,然后观察 rt+1,st+1r_{t+1}, s_{t+1}
    • TD error

      δt=rt+1+γq(st+1,μ(st+1,θt),wt)q(st,at,wt)\delta_t = r_{t+1} + \gamma q\big(s_{t+1}, \mu(s_{t+1},\theta_t), w_t\big) - q(s_t, a_t, w_t)

    • Critic(价值更新)

      wt+1=wt+αwδtwq(st,at,wt)w_{t+1} = w_t + \alpha_w \delta_t \nabla_w q(s_t, a_t, w_t)

    • Actor(策略更新)

      θt+1=θt+αθθμ(st,θt)(aq(st,a,wt+1))a=μ(st)\theta_{t+1} = \theta_t + \alpha_\theta \nabla_\theta \mu(s_t,\theta_t) \big(\nabla_a q(s_t,a,w_{t+1})\big)\big|_{a=\mu(s_t)}

说明:

  • 这是一个 off-policy 的实现
    • behavior policy 是 β\beta
    • target policy 是 μ\mu
  • 改造为 on-policy:令 β=μ+noise\beta = \mu + \text{noise}
    • μ\mu 是确定的,但 β\beta 被赋予了一定的随机性
  • 如何选择表示 q(s,a,w)q(s,a,w) 的函数?
    • 线性函数q(s,a,w)=ϕT(s,a)wq(s,a,w) = \phi^T(s,a)w,其中 ϕ(s,a)\phi(s,a) 是特征向量。
      • 详见 DPG 论文。
    • 神经网络:深度确定性策略梯度(DDPG)方法。

强化学习的数学基础 - Chapter 10
http://dbqdss.github.io/2026/08/11/个人学习笔记/AI Notes/Reinforcement Learning/强化学习的数学原理/MathFoundationRL-Ch10/
作者
失去理想的獾
发布于
2026年8月11日
许可协议