Actor-critic 方法仍然属于策略梯度方法。
- 它们强调将策略梯度方法与价值函数方法相结合的结构。
什么是“actor”和“critic”?
回顾上一讲中介绍的策略梯度思想:
1)一个标量度量 J(θ),可以是 vˉπ 或 rˉπ。
2)用于最大化 J(θ) 的梯度上升算法是:
θt+1=θt+α∇θJ(θt)=θt+αES∼η,A∼π[∇θlnπ(A∣S,θt)qπ(S,A)]
3)随机梯度上升算法是:
θt+1=θt+α∇θlnπ(at∣st,θt)qt(st,at)
这个公式非常重要!我们可以直接从中看到“actor”(执行者)和“critic”(评价者):
- 这个表达式对应于 actor
- 用于估计 qt(s,a) 的算法对应于 critic
到目前为止,我们学习了两种方法来估计动作价值:
蒙特卡洛学习(Monte Carlo learning): 如果使用 MC,其对应的算法称为
REINFORCE 或 蒙特卡洛策略梯度(Monte Carlo policy gradient)。
时序差分学习(Temporal-difference learning): 如果使用 TD,这类算法通常被称为 actor-critic。
- 我们将在本文中介绍。
- 此处最简单的使用
SARSA + 价值函数逼近。

备注:
critic 对应于 “SARSA + 价值函数逼近”。
actor 对应于策略更新算法。
这个特定的 actor-critic 算法有时被称为 Q Actor-Critic (QAC)。
虽然简单,但这个算法揭示了 actor-critic 方法的核心思想。
它可以扩展为许多其他算法,如后面所示。
接下来,我们将 QAC 扩展为优势 actor-critic(A2C)
性质:策略梯度对额外的基准不变
∇θJ(θ)=ES∼η,A∼π[∇θlnπ(A∣S,θt)qπ(S,A)]=ES∼η,A∼π[∇θlnπ(A∣S,θt)(qπ(S,A)−b(S))]
这里,额外的基准 b(S) 是 S 的一个标量函数。
首先,为什么它是合法的?
因为
ES∼η,A∼π[∇θlnπ(A∣S,θt)b(S)]=0
详细推导如下:
ES∼η,A∼π[∇θlnπ(A∣S,θt)b(S)]=s∈S∑η(s)a∈A∑π(a∣s,θt)∇θlnπ(a∣s,θt)b(s)=s∈S∑η(s)∇θa∈A∑π(a∣s,θt)b(s)=s∈S∑η(s)b(s)∇θa∈A∑π(a∣s,θt)=s∈S∑η(s)b(s)∇θ1=0
其次,为什么这个基准有用?
梯度为 ∇θJ(θ)=E[X],其中:
X(S,A)≐∇θlnπ(A∣S,θt)[qπ(S,A)−b(S)]
我们有:
E[XTX]=E[(∇θlnπ)T(∇θlnπ)(qπ(S,A)−b(S))2]=E[∥∇θlnπ∥2(qπ(S,A)−b(S))2]
我们的目标:选择一个最优基准 b 来最小化 var(X)
- 好处: 当我们使用一个随机样本来近似 E[X] 时,估计的方差也会变小。
在 REINFORCE 和 QAC 算法中:
b∗(s)=EA∼π[∥∇θlnπ(A∣s,θt)∥2]EA∼π[∥∇θlnπ(A∣s,θt)∥2qπ(s,A)]
- 虽然这个基准是最优的,但计算复杂。
- 我们可以移除权重 ∥∇θlnπ(A∣s,θt)∥2,选择一个次优基准:
b(s)=EA∼π[qπ(s,A)]=vπ(s)
它就是状态 s 的价值函数!
当 b(s)=vπ(s) 时:
θt+1=θt+αE[∇θlnπ(A∣S,θt)[qπ(S,A)−vπ(S)]]≐θt+αE[∇θlnπ(A∣S,θt)δπ(S,A)]
其中,
δπ(S,A)≐qπ(S,A)−vπ(S)
称为优势函数(advantage function)
为什么叫 advantage?:反映了在特定状态 s 下,选择某个动作 a 相比于平均水平(即在该状态下按策略行动的期望值)来说,是否更“有优势”
θt+1=θt+α∇θlnπ(at∣st,θt)[qt(st,at)−vt(st)]=θt+α∇θlnπ(at∣st,θt)δt(st,at)
此外,优势函数可以用 TD 误差近似:
δt=qt(st,at)−vt(st)→rt+1+γvt(st+1)−vt(st)
E[qπ(S,A)−vπ(S)∣S=st,A=at]=E[R+γvπ(S′)−vπ(S)∣S=st,A=at]
- 优点: 只需要一个网络去逼近 vπ(s),而不是分别为 qπ(s,a) 和 vπ(s) 建两个网络。
A2C 算法的解释:
θt+1=θt+α∇θlnπ(at∣st,θt)δt(st,at)=θt+απ(at∣st,θt)∇θπ(at∣st,θt)δt(st,at)=θt+αβt(π(at∣st,θt)δt(st,at))∇θπ(at∣st,θt)
于是:
- δt(st,at) 越大 ⇒ βt 越大 ⇒ π(at∣st,θt+1) 越大
- π(at∣st,θt) 越小 ⇒ βt 越大 ⇒ π(at∣st,θt+1) 越大
详见上一讲中类似情况的分析。
- 它可以很好地平衡探索与利用。
- 重要的是**δt 的相对值**,而不是 qt 的绝对值,这更加合理。

这是一个**on-policy(同策略)**方法。
由于策略 π(θt) 是随机的,因此无需使用类似 ε-greedy 的探索技巧。
考虑一个随机变量 X∈X={+1,−1}。
如果 X 的概率分布是 p0,则有:
p0(X=+1)=0.5,p0(X=−1)=0.5
那么 X 的期望为:
EX∼p0[X]=(+1)⋅0.5+(−1)⋅0.5=0
问题:如何使用一些样本 {xi} 来估计 E[X]?
情况 1:
- 样本 {xi} 是根据分布 p0 生成的:
E[xi]=E[X],var[xi]=var[X]
xˉ=n1i=1∑nxi→E[X],当 n→∞
情况 2:
- 样本 {xi} 是根据另一个分布 p1 生成的:
p1(X=+1)=0.8,p1(X=−1)=0.2
EX∼p1[X]=(+1)⋅0.8+(−1)⋅0.2=0.6
xˉ=n1i=1∑nxi→EX∼p1[X]=0.6=EX∼p0[X]=0
因此,直接使用平均值会偏离我们真正想要的期望,这是引入重要性采样的动机。
问题:我们可以使用 {xi}∼p1 来估计 Ex∼p0[X] 吗?
注意到:
EX∼p0[X]=x∑p0(x)x=x∑p1(x)f(x)p1(x)p0(x)x=EX∼p1[f(X)]
- 因此,我们可以通过估计 EX∼p1[f(X)] 来估计 EX∼p0[X]。
- 如何估计 EX∼p1[f(X)]?很简单,令:
fˉ≐n1i=1∑nf(xi),其中 xi∼p1
那么,
fˉ→EX∼p1[f(X)],当 n→∞
因此,fˉ 是 EX∼p0[X] 的一个良好近似:
EX∼p0[X]≈fˉ=n1i=1∑nf(xi)=n1i=1∑np1(xi)p0(xi)xi
你可能会问:既然
fˉ=n1i=1∑np1(xi)p0(xi)xi
需要知道 p0(x),那么我都知道 p0(x) 了,为啥不直接算期望?
回答:
我们可能只能在给定某个具体 x 时获得 p0(x) 的值,而不是知道所有 x 的完整分布。
- 例如在连续情况中、p0 的表达式很复杂,或者 p0 没有显式表达式(如由神经网络表示)时。
就像之前的 on-policy 情况一样,我们现在需要在 off-policy 情况下推导策略梯度。
- 假设 β 是行为策略(behavior policy),用来生成经验样本。
- 我们的目标是利用这些样本来更新目标策略(target policy) π(θ),以优化如下度量:
J(θ)=s∈S∑dβ(s)vπ(s)=ES∼dβ[vπ(S)]
其中,dβ 是在策略 β 下的平稳分布(stationary distribution)。
定理(Off-policy 策略梯度定理):
在折扣因子 γ∈(0,1) 的情形下,J(θ) 的梯度为:
∇θJ(θ)=ES∼ρ,A∼π[∇θlnπ(A∣S,θ)qπ(S,A)]=ES∼ρ,A∼β[β(A∣S)π(A∣S,θ)∇θlnπ(A∣S,θ)qπ(S,A)]
其中:
- β 是行为策略(behavior policy);
- ρ 是状态分布。
off-policy 策略梯度同样对基线 b(s) 不变(invariant)。
∇θJ(θ)=ES∼ρ,A∼β[β(A∣S)π(A∣S,θ)∇θlnπ(A∣S,θ)(qπ(S,A)−b(S))]
- 为了减少估计方差,我们可以选择基线为 b(S)=vπ(S),于是得到:
∇θJ(θ)=E[β(A∣S)π(A∣S,θ)∇θlnπ(A∣S,θ)(qπ(S,A)−vπ(S))]
对应的随机梯度上升算法为:
θt+1=θt+αθβ(at∣st)π(at∣st,θt)∇θlnπ(at∣st,θt)(qt(st,at)−vt(st))
类似于 on-policy 情况,有:
qt(st,at)−vt(st)≈rt+1+γvt(st+1)−vt(st)≐δt(st,at)
因此算法变为:
θt+1=θt+αθβ(at∣st)π(at∣st,θt)∇θlnπ(at∣st,θt)δt(st,at)
这个更新可以进一步化简为:
θt+1=θt+αθ(β(at∣st)δt(st,at))∇θπ(at∣st,θt)

到目前为止,策略梯度方法中使用的策略都是随机策略(stochastic),
因为对所有的 (s,a) 都有 π(a∣s,θ)>0。
我们能否在策略梯度方法中使用确定性策略(deterministic policies)?
表示策略的方式:
到目前为止,一个通用策略记作 π(a∣s,θ)∈[0,1],可以是随机的,也可以是确定的。
现在,确定性策略特别表示为:
a=μ(s,θ)≐μ(s)
μ 是从状态空间 S 到动作空间 A 的一个映射。
μ 可以用一个函数(例如神经网络)表示,输入为 s,输出为 a,参数为 θ。
我们有时会简写 μ(s,θ) 为 μ(s)。
- 此前介绍的策略梯度定理仅适用于随机策略(stochastic policies)。
- 如果使用的是确定性策略(deterministic policy),我们就必须推导一个新的策略梯度定理。
- 不过,整体的思想和推导流程是类似的。
考虑折扣情况下平均状态价值的度量函数:
J(θ)=E[vμ(s)]=s∈S∑d0(s)vμ(s)
其中,d0(s) 是一个概率分布,满足 ∑s∈Sd0(s)=1。
定理(折扣情形下的确定性策略梯度定理):
在折扣因子 γ∈(0,1) 的情况下,J(θ) 的梯度为:
∇θJ(θ)=s∈S∑ρμ(s)∇θμ(s)(∇aqμ(s,a))a=μ(s)=ES∼ρμ[∇θμ(S)(∇aqμ(S,a))a=μ(S)]
其中,ρμ 是状态分布。
相关信息
证明略,且此定理适用于两个目标函数以及各种折扣情况
与随机策略的一个重要区别:
- 梯度中不涉及动作 A 的概率分布(为什么?因为是确定性的,没有概率分布)。
- 因此,确定性策略梯度方法天然是 off-policy 的。
基于策略梯度,最大化 J(θ) 的梯度上升算法为:
θt+1=θt+αθES∼ρμ[∇θμ(S)(∇aqμ(S,a))a=μ(S)]
对应的随机梯度上升算法为:
θt+1=θt+αθ∇θμ(st)(∇aqμ(st,a))a=μ(st)

备注:
- 这是一个 off-policy 实现,其中行为策略 β 可以不同于目标策略 μ。
- β 也可以用 μ+noise 来表示。
如何选择表示 q(s,a,w) 的函数?
线性函数:
q(s,a,w)=ϕT(s,a)w
其中 ϕ(s,a) 是特征向量,详见 DPG 论文。
神经网络:
使用**深度确定性策略梯度(DDPG)**方法表示。