如图1,在每个轨迹的开始,actor将自己的本地策略 μ 更新为最新的Leaner的策略 π ,并在其环境中运行在n步之l后,actor通过队列将状态、动作和回报 {x1,a1,r1,…,xn,an,rn} 连同相应的策略分布 μ(at∣xt) 和初始LSTM状态一起发送给leaner。然后,leaner利用样本轨迹更新策略 π 。这种简单的架构使得leaner能够使用GPU加速,并且actor能够轻松地分布在许多机器上。然而,在更新时,leaner的策略 π 可能比actor的策略 μ 提前更新几个版本,因此actor和leaner之间存在一种policy-lag。V-trace校正了这种lag,从而在保持数据效率的同时实现极高的数据吞吐量。使用actor-learner 架构,提供像分布式A3C这样的容错能力,但是由于actor并且没有发送参数/梯度,因此通信开销较低。
off-policy RL算法的目标是使用某个策略 μ 生成的轨迹,称为行为策略,来学习另一个策略 π (可能不同于 μ )的值函数 vπ ,称为目标策略。
考虑行为策略 μ 生成的轨迹 (xt,at,rt)t=st=s+n ,n-steps V-trace的价值函数为
vs=defV(xs)+∑t=ss+n−1γt−s(∏i=st−1ci)δtV
上式中 δtV=defρt(rt+γV(xt+1)−V(xt)) 是时间差分。 ρt=defmin(ρ,μ(at∣xt)π(at∣xt)) 和 ci=defmin(c,μ(ai∣xi)π(ai∣xi)) 是截断的重要性采样权重,其中 ∏i=st−1ci=1for(t=s) ,且假设 ρ≥c 。
注意:对于on-policy的情况,我们假定 c≥1 , ci=1 and ρt=1 ,上式可被写为:
vs=V(xs)+t=s∑s+n−1γt−s(rt+γV(xt+1)−V(xt))=t=s∑s+n−1γt−srt+γnV(xs+n)
注意:截断的重要性采样权重 ci and ρt 的作用是不同的, ρt 出现在时间差分 δtV 中,定义了更新的fixed point。在表格法(强化学习)中,更新的fixed point(即当 V(xs)=vs for all state ),特征为 δtV的期望等于0(在策略 μ 下),是一些策略 πρ (定义如下)的值函数 Vπρ
πρ(a∣x)=def∑b∈Amin(ρμ(b∣x),π(b∣x))min(ρμ(a∣x),π(a∣x))
这意味着,当 ρ<∞ 时,策略 πρ 介于目标策略 π 和行为策略μ之间。而 ρ=∞ 时候,该策略等于目标策略π。
ci 类似于"trace cutting"系数, cs…ct−1 的乘积度量着时间差分δtV在时间 t 出现的频率,影响着 t=s 的值函数更新。目标策略π和行为策略π相差越大,这个乘积的方差越大,这里通过截断来限制方差。
总的来说: ρ 影响收敛到的价值函数的性质, c 影响收敛到这个函数的速度。
在on-policy的情况下,价值函数关于策略 μ 的参数的梯度为
∇Vμ(x0)=Eμ[∑s≥0γs∇logμ(as∣xs)Qμ(xs,as)]
其中: Qμ(xs,as)=defEμ[∑t≥sγt−srt∣xs,as]
Eas∼μ(⋅∣xs)[μ(as∣xs)πρ(as∣xs)∇logπρ(as∣xs)qs∣xs] (4)
其中: qs=defrs+γvs+1 ,最后为了减少方差,我们减去了一个强化学习中的基数 V(xs)
最后注意(4)估计 πρ 的策略梯度,这是使用截断级别 ρ 的V-trace算法评估的策略。
(vs−Vθ(xs))∇θVθ(xs)
ρs∇ωlogπω(as∣xs)(rs+γvs+1−Vθ(xs))
−∇ω∑πω(a∣xs)logπω(a∣xs)