REINFORCE算法虽然是策略梯度的根本,但在实践中常因其梯度估计固有的高方差而遇到困难。策略更新依赖于在状态 st 中执行动作 at 后观察到的总回报 Gt。由于 Gt 会根据后续的随机转移和动作而变化很大,所以产生的梯度估计 ∇θlogπθ(at∣st)Gt 可能噪声较大。这种噪声会减慢学习速度,并可能阻止策略稳定收敛到一个好的解决方案。想象一下,你试图根据剧烈波动的反馈来调整一个旋钮;很难知道哪个方向确实更好。
Actor-Critic方法通过在策略梯度计算中引入一个基线,提供了一个有力的解决方案。其核心思想出乎意料地简单:从回报 Gt 中减去一个仅依赖于状态 st 的值,我们称之为 b(st)。修改后的策略梯度更新项变为:
∇θlogπθ(at∣st)(Gt−b(st))
为什么这有效呢? 重要的是,减去一个依赖于状态的基线并不会改变策略梯度的期望值,这意味着它不会在更新方向上引入偏差。我们可以通过数学方式证明这一点。我们减去的项的期望值为:
Eπθ[∇θlogπθ(at∣st)b(st)]=s∑dπθ(s)a∑πθ(a∣s)∇θlogπθ(a∣s)b(s)
使用恒等式 ∇θlogπθ(a∣s)=πθ(a∣s)∇θπθ(a∣s),这变为:
s∑dπθ(s)a∑∇θπθ(a∣s)b(s)=s∑dπθ(s)b(s)∇θa∑πθ(a∣s)
由于对于任何状态 s,∑aπθ(a∣s)=1,所以它相对于 θ 的梯度为零:∇θ1=0。因此,被减项的期望值为零:
Eπθ[∇θlogπθ(at∣st)b(st)]=0
这证实了减去一个依赖于状态的基线 b(st) 能够保持策略梯度估计的无偏性。
基线如何降低方差
虽然期望梯度保持不变,但梯度估计的方差可以大幅降低。考虑项 (Gt−b(st))。如果我们选择 b(st) 作为从状态 st 获得的平均回报的一个良好估计,那么这一项表示实际观察到的回报 Gt 与该状态的平均预期相比是更好还是更差。
- 如果 Gt>b(st):动作 at 导致了优于平均水平的结果。该项为正,强化动作 at。
- 如果 Gt<b(st):动作 at 导致了劣于平均水平的结果。该项为负,抑制动作 at。
通过将回报值围绕状态特定的平均值进行中心化,更新的幅度被缩小。更新不再基于高绝对回报(这可能仅仅源于一个通常有回报的状态)产生大的正向更新,而是侧重于动作在该特定情境下的相对质量。这导致了更稳定且通常更快的学习过程。
轨迹中的样本回报 (Gt)。减去一个基线(此处为总体平均回报)将用于策略更新的值中心化到零附近。正值对应于优于基线的回报,负值对应于劣于基线的回报。这种中心化有助于降低更新方差。
状态值函数作为最佳基线
b(st) 的最佳选择是什么?虽然一个简单的常数基线(比如一个回合的平均回报)能有所帮助,但一个效果好得多的基线是状态值函数 Vπθ(st)。这个函数根据定义表示从状态 st 开始并遵循当前策略 πθ 所能获得的期望回报。
使用 V(st) 作为基线,更新项变为:
∇θlogπθ(at∣st)(Gt−V(st))
项 (Gt−V(st)) 是优势函数 Aπθ(st,at) 的一个估计。优势函数衡量了在状态 st 中执行动作 at 比策略 πθ 从状态 st 平均选择的动作好多少。形式上:
Aπθ(st,at)=Qπθ(st,at)−Vπθ(st)
其中 Qπθ(st,at) 是动作值函数。由于 Gt 是 Qπθ(st,at) 的蒙特卡洛样本估计,项 (Gt−V(st)) 作为优势 Aπθ(st,at) 的样本估计。
理论上,使用状态值函数 V(st) 作为基线是最佳选择(在最小化梯度估计方差的意义上),在所有仅依赖于状态 st 的函数中。
评价者(Critic)的出现
这自然地引向了Actor-Critic架构。我们需要一种方法来估计 V(st) 以将其用作基线。这正是评价者(critic)的角色。
- 执行者(Actor)负责学习和更新策略参数 θ,通常使用带优势估计的梯度上升:
θ←θ+α∇θlogπθ(at∣st)A(st,at)
(其中 A(st,at) 被估计,例如通过 Gt−V(st) 或我们将在后面看到的其他方法)。
- 评价者(Critic)负责学习状态值函数 V(st;ϕ)(有时是动作值函数 Q(st,at;ϕ))的估计,该函数由 ϕ 参数化。它从执行者所经历的转移中学习,通常使用时序差分(TD)学习方法,例如TD(0)。评价者的输出 V(st;ϕ) 随后被执行者用作基线 b(st)。
使用 V(s) 作为基线的Actor-Critic架构图。执行者根据策略选择动作。评价者通过学习 V(s) 来评估状态。评价者的值估计 V(s) 被用作基线来计算优势估计,这反过来为更新执行者的策略提供了较低方差的信号。这两个组件都从与环境的交互中学习。
总而言之,引入一个依赖于状态的基线,特别是状态值函数 V(st),是一种用于降低策略梯度估计方差而不引入偏差的强大技术。这自然地促使了Actor-Critic框架的形成,其中评价者学习值函数以提供此基线,而执行者则使用产生的优势信号更新策略。后续章节将讨论A2C/A3C等有效实现此思想的特定算法,并引入如广义优势估计(GAE)等进一步改进。