Skip to content

为什么 A2C 中减去 Baseline 函数可以减小方差

在 PPO × Family 课程第一讲中,已经介绍了策略梯度(policy gradient)的基本原理。但是如果直接使用最朴素的策略梯度方法,会发现实际训练中梯度的方差很大,进而导致训练效果不佳。为了解决这一问题,需要引入基线(baseline)函数来尽可能减小梯度的方差,从而提升算法性能。首先回顾一下 policy gradient 中标准的优化公式:

θRθ=Eτ[t=0T1Gt(τ)θlogpθ(atst)],Δθ=ηθRθ.

在算法实践中,我们使用采样来获得 θRθ 的无偏估计 θR¯θ

θR¯θ=1Nn=1Nt=0Tn1Gt(τn)θlogpθ(atnstn).

可以看出,上式将期望改成了对 N 组轨迹进行采样和平均的形式。

在实践中,网络的训练会因为 θR¯θ 的方差而出现不稳定:虽然均值相同,但每次采样数据的 θR¯θ 与真实的期望值有较大偏离,而环境本身奖励函数的随机性也会进一步加重这个问题。因此我们希望降低上述优化形式带来的梯度方差。

Baseline 函数正是为了解决这个问题而提出的。具体来说,将上述公式改写为包含 baseline 的版本:

θR¯θ=1Nn=1Nt=0Tn1(Gt(τn)b(stn))θlogpθ(atnstn).

其中 b(st) 是关于 t 时刻状态的一个函数,被称作基线(baseline)函数。这里要注意:其实我们并没有限制 baseline 函数必须是某一特定的形式,只要它是 st 的函数就可以保证更新公式的正确性。但是一般认为 b(st)=V(st) 时是最优的,因为此时能使得 θR¯θ 的方差最小。

接下来我们要论证:

  1. 为什么添加了 baseline 函数之后,仍然能够保持估计的无偏性;
  2. 为什么添加了合适的 baseline 函数之后,可以减小方差。

1. 为什么添加 baseline 函数之后仍然能够保持梯度估计的无偏性

要证明这一点,本质上是要证明:

Eτ[t=0T1Gt(τ)θlogpθ(atst)]=Eτ[t=0T1(Gt(τ)b(st))θlogpθ(atst)].

移项化简,即证:

Eτ[t=0T1b(st)θlogpθ(atst)]=0.

考虑到对于任意 t 时刻的 transition,都有:

Eat[b(st)θlogpθ(atst)]=θpθ(atst)pθ(atst)pθ(atst)b(st)dat=b(st)θpθ(atst)dat=b(st)θ1=0.

因此对于整体轨迹而言,自然对每个时刻 t 都成立,也就有:

Eτ[t=0T1b(st)θlogpθ(atst)]=0.

至此,就证明了添加 baseline 函数之后,梯度的无偏性仍然能够得以保持。

2. 为什么添加 baseline 函数之后梯度估计的方差会降低

严格来说,并不是添加任何一种形式的 baseline 函数都能够减小方差;相反,不合适的 baseline 函数甚至会增大方差。因此这里要说明的是:

  • 为什么添加合适的 baseline 函数可以减小方差;
  • 为什么通常选用 b(st)=V(st) 作为实践中的 baseline 函数。

为简化分析,考虑单个时间步 t 的梯度估计项:

gt=(Gt(τ)b(st))θlogpθ(atst).

由于 baseline 的引入不改变期望,即 E[gt] 保持不变,因此最小化 Var(gt) 等价于最小化 E[gt2]。在常见假设下(如 Gt(τ)b(st)θlogpθ(atst) 在给定 st 时不相关),最优的 baseline 满足:

b(st)=Eτ[Gt(τ)st]=V(st).

直观上,因为 V(st) 是在状态 st 下按照当前策略能够获得的期望回报,用实际回报 Gt(τ) 减去它之后,剩下的部分 δt=Gt(τ)V(st) 衡量的是当前轨迹相对于平均水平的“优势”。这相当于把奖励中由状态本身决定的部分去掉,只保留动作带来的相对好坏信息,从而降低了采样的绝对数值大小,减小了梯度估计的方差。

因此,选取合适的 baseline 函数可以减小对梯度的估计方差;而价值函数 V(st) 正是在常见假设下使方差最小的最优 baseline,这也是实践中一般使用价值函数作为 baseline 的理论依据。不过值得注意的是,如果在不满足上述假设的一些决策环境里,这种方法的效果可能会大打折扣。

Maintained by Robin