趋近智
REINFORCE 算法使用完整的蒙特卡洛回报 Gt 来调整梯度 ∇θlogπ(at∣st;θ) 的大小。尽管这提供了策略梯度的无偏估计,但 Gt 的高方差常导致更新不稳定和收敛缓慢。设想一个所有奖励都很大且为正值的片段;此时所有时间步的 Gt 都会很大,这会提高所执行所有动作的概率,即使在该成功的片段中有些动作远优于其他动作。反之,一个表现不佳的片段可能会过度惩罚所有执行的动作。
为减少这种情况,我们可以引入一个仅依赖于状态 st 的基线函数 b(s)。在策略梯度更新中,我们从回报 Gt 中减去这个基线:
∇θJ(θ)≈N1i=1∑Nt=0∑Ti−1∇θlogπ(ai,t∣si,t;θ)(Gi,t−b(si,t))为什么这样做是有效的?非常重要的一点是,减去一个依赖于状态的基线并不会给梯度估计带来偏差。被减项的期望值为零:
Eπθ[∇θlogπ(at∣st;θ)b(st)]=s∑dπθ(s)a∑π(a∣s;θ)[∇θlogπ(a∣s;θ)b(s)] =s∑dπθ(s)a∑∇θπ(a∣s;θ)b(s) =s∑dπθ(s)b(s)∇θa∑π(a∣s;θ) =s∑dπθ(s)b(s)∇θ1=0这里,dπθ(s) 是策略 πθ 下的状态分布。由于被减项的期望为零,梯度的总期望保持不变。
尽管它不改变期望,但选择得当的基线能大幅降低梯度估计的方差。其思路是将回报围绕一个参照点进行居中处理。我们不再仅仅用总回报 Gt 来调整梯度,而是根据该回报相对于我们通常从状态 st 预期的表现 好 或 坏 的程度来调整。如果 Gt>b(st),则动作 at 带来了超出预期的结果,其概率应该增加。如果 Gt<b(st),则动作带来了低于预期的结果,其概率应该降低(或增加得不那么强烈)。
怎样的基线算是好的?理想情况下,b(st) 应该是从状态 st 获得的预期回报的估计值。
使用 V(st) 作为基线会得到项 Gt−V(st)。回想一下,动作价值函数是 Q(st,at)=Eπθ[Gt∣St=st,At=at],优势函数定义为 A(st,at)=Q(st,at)−V(st)。由于 Gt 是从 (st,at) 开始的回报的蒙特卡洛样本,因此 Gt−V(st) 实际上是优势函数 A(st,at) 的一个估计。
使用优势估计使缩放因子居中:带来优于该状态平均回报的动作获得正向增强,而带来差于平均回报的动作获得负向增强。这通常会使得方差大幅低于使用原始回报 Gt 的情况。
示例说明了在简化情况下,减去基线(此处 V(st)≈10)如何使缩放因子围绕零居中,并与使用原始回报 Gt 相比减少其方差。
当然,我们通常不知道当前策略下的真实 V(st)。因此,我们需要与策略同时学习它。这通常通过函数逼近来实现,常使用另一个神经网络。我们引入一个带参数 w 的价值函数逼近器 V(s;w)。
这个价值网络 V(s;w) 经过训练,用于预测给定状态的预期回报。由于 REINFORCE 使用蒙特卡洛回报 Gt,一种常用的方法是通过最小化其预测值 V(st;w) 与从收集到的轨迹中观察到的回报 Gt 之间的均方误差(MSE)来训练价值网络:
L(w)=Eπθ[(Gt−V(st;w))2]因此,在训练过程中,每次迭代(收集轨迹后)我们执行两个主要的更新:
更新策略参数 θ: 使用带有学习基线的策略梯度:
Δθ=αθ∇θlogπ(at∣st;θ)(Gt−V(st;w))注意,在计算策略梯度时,我们将 V(st;w) 视为一个固定的基线值;我们不会将策略损失通过价值网络进行反向传播。
更新价值函数参数 w: 最小化预测值与实际回报之间的 MSE 损失:
Δw=αw∇w(Gt−V(st;w))2=αw⋅2(Gt−V(st;w))(−∇wV(st;w))这里,αθ 和 αw 分别是策略和价值函数的学习率。
这种将学习到的价值函数 V(s;w) 作为策略梯度方法基线的方法,构成了Actor-Critic算法的基础,我们将在下一章中详细讨论。策略网络 π(a∣s;θ) 是“行动者”(Actor),它决定采取哪些动作,而价值网络 V(s;w) 是“评判者”(Critic),它评估行动者访问的状态,并提供基线以减少行动者学习信号中的方差。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造