Skip to content

Policy Gradient Theorem 的证明

如今,强化学习基本都采用参数化的神经网络来学习一个策略,而神经网络一般是通过梯度下降法或者各种变种来优化的,因此,获取累积回报关于策略的梯度至关重要。本节会推导策略梯度的表达式,并介绍实际训练中如何采样近似该表达式。

首先引入动作价值函数的定义:

Qπ(st,at)=Est+1,at+1,[l=0γlrt+l]

即在状态 st 下采用动作 at 后,后续动作服从策略 π 的情况下的累积期望回报,其中 γ(0,1) 是折扣因子。

接着,将策略梯度的计算过程详细展开:

θJ(θ)=θVπ(s0)=θ[a0π(a0s0)Qπ(s0,a0)]=a0[θπ(a0s0)Qπ(s0,a0)+π(a0s0)θQπ(s0,a0)]=a0[θπ(a0s0)Qπ(s0,a0)+π(a0s0)θs1,r1p(s1,r1s0,a0)(r1+γVπ(s1))]=a0θπ(a0s0)Qπ(s0,a0)+a0π(a0s0)s1p(s1s0,a0)γθVπ(s1)=a0θπ(a0s0)Qπ(s0,a0)+a0π(a0s0)s1p(s1s0,a0)γa1θπ(a1s1)Qπ(s1,a1)+a0π(a0s0)s1p(s1s0,a0)γa1π(a1s1)s2p(s2s1,a1)γθVπ(s2)=a0θπ(a0s0)Qπ(s0,a0)+a0π(a0s0)s1p(s1s0,a0)γa1θπ(a1s1)Qπ(s1,a1)+=s0Pr(s0s0,0,π)a0θπ(a0s0)γ0Qπ(s0,a0)+s1Pr(s0s1,1,π)a1θπ(a1s1)γ1Qπ(s1,a1)+=s0Pr(s0s0,0,π)a0π(a0s0)[γ0Qπ(s0,a0)θlogπ(a0s0)]+s1Pr(s0s1,1,π)a1π(a1s1)[γ1Qπ(s1,a1)θlogπ(a1s1)]+=t=0stPr(s0st,t,π)atπ(atst)[γtQπ(st,at)θlogπ(atst)]

其中 Pr(s0st,t,π) 代表从状态 s0 出发,按照策略 π 与环境交互(rollout),在 t 时刻到达状态 st 的概率。

通过上述推导,就得到了无限长时间步下的策略梯度表达式。对于有限长时间步的环境,可以做一个简单的转化使其同样适用上述公式。假设时间步长度为 T,对于所有可能出现在最后一步的状态 sT1,定义:

  1. sT1 出发,不论采取什么动作,一定会跳转到一个虚拟的吸收态 sT,并返回奖励值 0
  2. sT 出发,不论采取什么动作,一定会跳转回这个虚拟的吸收态 sT,并返回奖励值 0

由此将有限长的时间步扩展到了无限长,因为环境会陷入到 sT 的死循环中。

不过,上式实际上很难优化,因为它要求遍历整个状态空间和时间步空间,计算每个时间步上到达每个状态的概率。一方面,这在计算成本上无法容忍;另一方面,在绝大多数情况下无法获得环境的转移概率,因此无法计算特定时间步下整个状态空间上的概率分布。

为此,可以使用 Monte Carlo 方法,通过采样来逼近上面的策略梯度公式。先把上式转化为期望的形式:

t=0stPr(s0st,t,π)atπ(atst)[γtQπ(st,at)θlogπ(atst)]=t=0Estatπ(atst)[γtQπ(st,at)θlogπ(atst)]=t=0Est,at[γtQπ(st,at)θlogπ(atst)]=Es0,a0,s1,a1,t=0[γtQπ(st,at)θlogπ(atst)]=Eτt=0[γtQπ(st,at)θlogπ(atst)]

其中 τ=[s0,a0,s1,a1,] 是按照策略 π rollout 出来的状态动作轨迹。可以看出,将 γtQπ(st,at)θlogπ(atst) 这一项先在时间步 t 上求和,再关于轨迹 τ 取期望,就得到了策略梯度。至此,Monte Carlo 方法就可以很简单地结合进来:先将 Eτ 替换为采样 N 条轨迹 [τ1,,τN],并定义其中第 n 条轨迹为

τn=s0n,a0n,r0n,,sTn1n,aTn1n,rTn1n,

轨迹长度为 Tn。最后对结果取平均:

Eτt=0[γtQπ(st,at)θlogπ(atst)]=1Nn=1Nt=0Tn1[γtQπ(stn,atn)θlogπ(atnstn)]

注意到

Qπ(stn,atn)=Est+1n,at+1n,st+2n,at+2n,stn,atn[l=tTn1γltrln],

因此从期望角度二者也是可以替换的。当算法没有显式地估计 Qπ(stn,atn) 时,可以定义

Gt(τn)=l=tTn1γltrln,

即最朴素的回报,并用它替换 Qπ(stn,atn),就得到实际使用的策略梯度公式:

1Nn=1Nt=0Tn1[γtGt(τn)θlogπ(atnstn)]

Maintained by Robin