深度增强学习(DRL)漫谈 - 信赖域(Trust Region)系方法

一、背景

深度学习的兴起让增强学习这个古老的机器学习分支迎来一轮复兴。它们的结合领域-深度增强学习(Deep reinforcement learning, DRL)随着在一系列极具挑战的控制实验场景及其它跨领域的成功应用,现在已是各大顶级AI会议的热门topic之一。之前两篇杂文《深度增强学习(DRL)漫谈 - 从DQN到AlphaGo》和《深度增强学习(DRL)漫谈 - 从AC(Actor-Critic)到A3C(Asynchronous Advantage Actor-Critic)》 瞎侃了一些当前流行的DRL方法(主要由DeepMind主导)。这篇文章再来聊一下另一个相对独立的方法分支(主要由OpenAI主导)。近年来,学界开始将优化方法中的信赖域(Trust region)方法引入增强学习,并在各种实验场景中取得了良好的效果。其中典型的有TPRO和受其影响衍生出的一系列前沿算法,如PPO,Trust-PCL,ACER等。其中PPO已成为OpenAI的默认增强学习算法。

这里准备聊一下它们的前生今世。信赖域系增强学习方法,顾名思义,来源于优化论中的信赖域方法和机器学习中增强学习的结合。那咱们先话分两头聊下这两部分,先从信赖域方法开始。在Jorge Nocedal和Stephen J. Wright的《Numerical Optimization》一书的第2.2节介绍了解优化问题的两种策略-line search和trust region。本质上它们的作用都是在优化迭代过程中从当前点找寻下一点。它们的最大区别是先确定步长还是先确定方向。Line search方法先确定方向再确定步长。而trust region方法则先把搜索范围缩小到一个小的范围,小到能够用另一个函数(Model function)去近似目标函数(Objective function),然后通过优化这个model function来得到参数更新的方向及步长。在该书的第三和第四章分别着力介绍了line search和trust region方法,感兴趣可以进一步了解。

另一头我们从增强学习中的策略梯度(Policy gradient, PG)方法说起。PG方法是RL中非常重要而又历史悠久的一类方法。早在1992年Ronald J. Williams提出的REINFORCE算法就是PG的雏形。它的基本思想是考虑由参数 θ \theta θ控制的随机策略 π ( θ ) \pi(\theta) π(θ),然后通过优化与策略相关的目标函数 J ( θ ) J(\theta) J(θ)(比如累积折扣回报和)来更新策略的参数。这种policy-based方法与RL中另一个重要分支value-based方法相比,不仅避免了值函数(Value function)误差导致的策略退化(Policy degradation),而且更加易于用在连续动作空间问题。但是它也有一些缺点:其一是数据效率(Data efficiency)或是说样本利用率低;其二是方差(Variance)大,它会使得训练困难基于无法收敛。针对这些缺点,其中一个比较经典而有效的方法是在原始PG方法中引入value-based方法对值函数进行估计,这就是行动者-评论家(Actor-Critic, AC)方法,同时在估计的值函数减去baseline来减少variance。但是,AC算法在策略搜索过程中如果碰到大的平坦区域(Plateau)就会导致收敛速度过慢,或者过早收敛(当然这是基于梯度算法的通病)。原因是这些地方梯度很小,或不直接指向最优解。Amari在1998年的论文《Natural Gradient Works Efficiently in Learning》中讨论了通过自然梯度(Natural gradient)代替标准梯度(Standard gradient)来解决这个问题。当参数坐标系统不为正交,参数空间为黎曼空间(比如神经网络中)。这时目标函数的最速下降方向定义为在参数变化测度为固定值下最小化目标函数的参数变化方向。这个方向可表示为 G − 1 ( θ ) ∇ θ J G^{-1}(\theta) \nabla_\theta J G1(θ)θJ,其中的 G G G称为黎曼度量张量(Reimannian metric tensor)。考虑统计估计问题时,参数空间的黎曼结构为Fisher information matrix(FIM)。其形式为 F = E θ [ ∇ θ log ⁡ P θ ( X ) ∇ θ log ⁡ P θ ( X ) T ] F=\mathbb{E}_{\theta} [ \nabla_{\theta} \log P_{\theta}(X) \nabla_{\theta} \log P_{\theta}(X) ^T ] F=Eθ[θlogPθ(X)θlogPθ(X)T]。它与KL散度(Kullback-Leibler divergence)有密切关系。具体可以参见KL散度的Wiki中的Fisher information metric一节。对于参数 θ ∗ \theta^* θ及其邻域的一点 θ \theta θ,一方面 D K L ( θ ∗ , θ ) = 0 D_{KL}(\theta^*, \theta)=0 DKL(θ,θ)=0,另外由于当 θ = θ ∗ \theta = \theta^* θ=θ时KL散度达到最小,因此KL散度相对于参数的一阶导数为0,综上用泰勒展开到二阶只剩下二次项,而该二次项中的Hessian矩阵(半正定)即为Fisher information matrix(FIM)。直观上,它代表着相应参数下似然的梯度的变化率。如果要参数更新前后其表征分布间的KL距离为定值,可以将FIM替代上面的度量张量,最速下降方向就由传统梯度 ∇ θ J \nabla_\theta J θJ变为 F θ − 1 ∇ θ J F^{-1}_\theta \nabla_{\theta} J Fθ1θJ,即FIM的逆乘以标准梯度。直观上,它使得策略在相对于参数不太敏感的地方,步长大;而在敏感的地方,步长小。当参数空间为欧式空间时,自然梯度退化成标准梯度。

此后,Kakade在2001年的论文《Natural Policy Gradient》将自然梯度引入增强学习中的PG方法。策略参数的更新方向就变为自然梯度。Peters等人在2005年的论文《Natural Actor-Critic》中讨论了它与AC框架的结合。之后在论文《Reinforcement Learning of Motor Skills with Policy Gradients》中对这些工作有些总结。

有了这些背景知识后,下面从几篇经典论文中一窥其发展历程。这些方法之间关系大体如下:
深度增强学习(DRL)漫谈 - 信赖域(Trust Region)系方法_第1张图片

二、相关论文选读

《Trust Region Policy Optimization》 Schulman, J., Levine, S., Moritz, P., Jordan, M. I. & Abbeel, P. 2015

这篇论文中提出了经典的TRPO方法。Trust region policy optimization(TRPO)是一种用于优化策略且保证策略单调改进的迭代方法。该方法主要解决的问题是使得策略更新后目标函数单调非减,更具体地,就是要选择合适的步长。因为如果该条件不能保证,训练过程中策略很容易会变得更差,甚至最后无法收敛。随着DRL的兴起,现在普遍用深度神经网络来表示策略。这样,策略的更新就更容易受到bad update的影响,单调非减的约束就显得尤为重要。

Kakade在2002年的论文《Approximately Optimal Approximate Reinforcement Learning》中提出了conservative policy iteration(CPI)方法,该方法在一定的前提下(restart distribution和approximate greedy policy)能找到近似的最优策略。定义策略性能(Policy performance)为期望累计折扣回报,记为 η \eta η。策略更新前后的策略性能之差可用优势函数(Advantage function)的折扣累加期望表示: η ( π ~ ) = η ( π ) + E s 0 , a 0 , . . . ∼ π ~ [ ∑ t = 0 ∞ γ t A π ( s t , a t ) ] \eta(\tilde{\pi}) = \eta(\pi) + \mathbb{E}_{s_0, a_0,... \sim \tilde{\pi}} [\sum^{\infty}_{t=0} \gamma^t A_{\pi} (s_t, a_t)] η(π~)=η(π)+Es0,a0,...π~[t=0γtAπ(st,at)]。它表示如果策略更新后所有状态的优势函数值为非负,则策略性能一定增长。为了避免状态稳态分布对于更新后策略的依赖导致难以优化的问题,这里引入了策略性能的一阶近似 L π ( π ~ ) L_{\pi}(\tilde{\pi}) Lπ(π~)。CPI方法中以下面这种mixture policy的方式更新策略 π n e w = ( 1 − α ) π o l d + α π ′ \pi_{new} = (1-\alpha) \pi_{old} + \alpha \pi' πnew=(1α)πold+απ,并且给出了在这种更新方式下策略性能的增长的下界(定理4.1)。而《Trust Region Policy Optimization》一文中将这个结论从mixture policy拓展到一般的随机策略。具体做法是将 α \alpha α用total variation divergence在各状态下的最大值 D T V max ⁡ ( π o l d , π n e w ) D^{\max}_{TV} (\pi_{old}, \pi_{new}) DTVmax(πold,πnew)替代,另外考虑total variation divergence和KL散度的关系 D T V ( p ∣ ∣ q ) 2 ≤ D K L ( p ∣ ∣ q ) D_{TV}(p || q)^2 \leq D_{KL}(p || q) DTV(pq)2DKL(pq),可以得到更新后策略性能的下界为:
L π ( π ~ ) − C D K L max ⁡ ( π , π ~ ) L_{\pi}(\tilde{\pi}) - CD^{\max}_{KL} (\pi, \tilde{\pi}) Lπ(π~)CDKLmax(π,π~)
其中 C = 2 ϵ γ ( 1 − γ ) 2 C=\frac{2\epsilon \gamma}{(1-\gamma)^2} C=(1γ)22ϵγ ϵ = max ⁡ s ∣ E a ∼ π ′ ( a ∣ s ) [ A π ( s , a ) ] ∣ \epsilon=\max_s|\mathbb{E}_{a \sim \pi'(a|s)} [A_\pi (s,a)]| ϵ=maxsEaπ(as)[Aπ(s,a)]。因此问题就转化为最大化这个下界。这个下界也称为原目标函数的代理函数(surrogate function)。

实际中,直接优化这个代理函数会导致步长非常小,TRPO的做法是用前后策略的KL散度的约束(即trust region constraint) D K L max ⁡ ( θ o l d , θ ) ≤ δ D^{\max}_{KL}(\theta_{old}, \theta) \leq \delta DKLmax(θold,θ)δ来代替上面的惩罚项。但由于约束太多,这里用平均KL散度 D ˉ K L ρ \bar{D}^{\rho}_{KL} DˉKLρ代替。这样优化问题就变为在 D ˉ K L ρ ( θ o l d , θ ) ≤ δ \bar{D}^{\rho}_{KL}(\theta_{old},\theta) \leq \delta DˉKLρ(θold,θ)δ约束下最大化目标函数 L θ o l d ( θ ) L_{\theta_{old}}(\theta) Lθold(θ)。估计 L θ o l d L_{\theta_{old}} Lθold时采用importance sampling,采样分布为 q ( a ∣ s ) = π θ o l d ( a ∣ s ) q(a|s) = \pi_{\theta_{old}}(a|s) q(as)=πθold(as)。文中给出两种采样方法-single path和vine。后者与前者相比,它会在轨迹中的每个状态中执行不同动作。它的好处是variance低,但缺点是模拟的effort较大。

整个算法的流程有3步:首先使用single-path或vine采样得到一系列状态-动作对和蒙特卡洛(Monte-Carlo, MC)法估计的Q函数值。然后通过对这些样本求平均得到优化问题中目标和约束的估计。最后,近似解决该约束优化问题,文中采用的是conjugate gradient(CG)法加上line search的做法。至此,优化问题可写为:
max ⁡ θ L o l d ( θ ) s . t . D ˉ K L ( θ o l d , θ ) ≤ δ \max_{\theta} \quad L_{old}(\theta) \\ s.t. \quad \bar{D}_{KL}(\theta_{old}, \theta) \leq \delta θmaxLold(θ)s.t.DˉKL(θold,θ)δ
为了计算参数更新方向,先对约束中的KL散度作二次近似 D ˉ K L ≈ 1 2 ( θ − θ o l d ) T F ( θ − θ o l d ) \bar{D}_{KL} \approx \frac{1}{2} (\theta - \theta_{old})^T F (\theta - \theta_{old}) DˉKL21(θθold)TF(θθold),其中 F F F为FIM。和natural policy gradient一样,参数更新方向为自然梯度 F − 1 g F^{-1} g F1g。因为像神经网络表示策略时会有上千参数,这里如果要生成和求FIM的逆计算量会非常大,因此这里采用conjugate gradient算法近似求解。这称为Truncated Natural Policy Gradient(TNPG)方法,它与TRPO区别在于它没有像TRPO一样强制满足约束。接下来TRPO采用line search方法在前面选取的方向上再选取步长保证约束被满足。

《Proximal Policy Optimization Algorithms》 Schulman, J., Wolski, F., Dhariwal, P., Radford, A. & Klimov, O. 2017

PG方法的缺点是数据效率和鲁棒性不好。同时TRPO方法又比较复杂,且不兼容dropout(在深度神经网络训练过程中按照一定概率对网络单元进行丢弃)和参数共享(策略和值函数间)。这篇论文提出了PPO算法,它是对TRPO算法的改进,更易于实现,且数据效率更高。TRPO方法中通过使用约束而非惩罚项来保证策略更新的稳定性,主要原因是作为惩罚项的话会引入权重因子,而这个参数难以调节。TRPO中为了解优化问题,先线性近似目标函数,二阶近似约束,最后通过conjugate gradient算法和line search求解。而这篇文章尝试通过一阶优化的方法来解。与TRPO中用约束来限制策略更新幅度不同,PPO中采用了惩罚项,或者说正则项的做法。文中提出了基于clipped probability ratio的目标函数。首先定义probability ratio r t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) r_t(\theta) = \frac{\pi_\theta (a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} rt(θ)=πθold(atst)πθ(atst),TRPO的代理目标函数,同时也是CPI方法中的目标函数可表示为 L C P I ( θ ) = E ^ t [ r t ( θ ) A ^ t ] L^{CPI}(\theta) = \hat{\mathbb{E}}_t [r_t(\theta) \hat{A}_t] LCPI(θ)=E^t[rt(θ)A^t]。这样的目标下策略更新有可能会很大。因此,clipping目标函数中加入了clip项:
L C L I P ( θ ) = E ^ t [ min ⁡ ( r t ( θ ) A ^ t , clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) ] L^{CLIP}(\theta) = \hat{\mathbb{E}}_t [\min(r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1 - \epsilon, 1+\epsilon) \hat{A}_t)] LCLIP(θ)=E^t[min(rt(θ)A^t,clip(rt(θ),1ϵ,1+ϵ)A^t)]
其中 ϵ \epsilon ϵ为超参数。其中的clip项促使得 r t r_t rt不偏离 [ 1 − ϵ , 1 + ϵ ] [1-\epsilon, 1+\epsilon] [1ϵ,1+ϵ]所定义的区间。其中会对clipped和unclipped目标进行最小化操作,意味着它是unclipped目标的下界。直观上,当策略更新的偏移超出预定区间而获得更大的目标函数值时,这个clip项就会产生影响。

另外一种目标函数是采用自适用的KL惩罚项系数,虽然实验中效果不及上面clipping目标函数。它的目标函数为:
L K L P E N ( θ ) = E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t − β    KL [ π θ o l d ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] L^{KLPEN}(\theta) = \hat{\mathbb{E}}_t[\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} \hat{A}_t - \beta \; \text{KL}[\pi_{\theta_{old}(\cdot|s_t), \pi_\theta(\cdot|s_t)}] ] LKLPEN(θ)=E^t[πθold(atst)πθ(atst)A^tβKL[πθold(st),πθ(st)]]
当策略更新前后KL散度小于预定值时,惩罚项系数 β \beta β减小到原来的一半;当大于预定值时,系数增加一倍。如果使用神经网络和共享策略和值函数参数的话,就需要在损失函数中结合策略优化目标和值函数误差项:
L t C L I P + V F + S ( θ ) = E ^ t [ L t C L I P ( θ ) − c 1 L t V F ( θ ) + c 2 S [ π θ ] ( s t ) ] L^{CLIP+VF+S}_t(\theta) = \hat{\mathbb{E}}_t [L^{CLIP}_t (\theta) - c_1 L^{VF}_t(\theta) + c_2 S[\pi_\theta](s_t)] LtCLIP+VF+S(θ)=E^t[LtCLIP(θ)c1LtVF(θ)+c2S[πθ](st)]
其中的 c 1 c_1 c1 c 2 c_2 c2为系数, S S S L t L F L^{LF}_t LtLF分别为策略熵和值函数误差项。整个PPO算法每次迭代中,先通过执行当前策略估计优势函数,然后通过优化代理函数更新策略参数。

《Emergence of Locomotion Behaviours in Rich Environments》 Heess, N. et al. 2017

DeepMind在该论文中提出了分布式的PPO算法(DPPO)。如它的名字,它是对上面PPO算法的改进。很多的RL算法假设有well-defined的回报函数。但在很多场景中,尤其是连续动作空间控制问题中,这个假设并不成立。本文讨论的一个重点就是如何只利用简单的回报函数,通过丰富多变的环境来学习到稳定的行为。为了达到这个目的,需要改善增强学习算法的伸缩性。

我们知道,PG方法的缺点是variance高,且对超参数敏感。解决方法之一就是上面提到的trust region约束,TRPO就是基于该基本思想。PPO将trust region约束实现为正则项。而在DPPO算法中,数据的收集和梯度的计算被分布到多个worker中,思想类似于A3C算法。原始的PPO算法通过完整的回报和估计策略优势。而为了便于使用batch update的RNN,这里使用了K-step returns来估计策略优势。DPPO算法分为两部分-chief和worker。worker部分在每次迭代中依次做M步策略参数和B步值函数参数的更新。chief部分从worker收集梯度,收集指定个数后,将它们的均值更新到总的参数。对于每个worker,每轮迭代中按当前策略执行T步,然后把它们按K个数据一份分好,对于每K步样本,估计优势函数,然后分别通过梯度 ∇ θ J P P O \nabla_\theta J_{PPO} θJPPO ∇ ϕ L B L \nabla_\phi L_{BL} ϕLBL更新相应参数。另外它会根据当前策略和之前策略的KL距离是否超出区域调节目标函数中的系数 λ \lambda λ。作者用TensorFlow实现了DPPO算法,参数位于参数服务器,workers在每次梯度更新后同步它们的参数。实验中将DPPO算法与TRPO和A3C算法在几个控制任务中的性能作了对比,显示比后两者有更好的表现,同时它还有很好的伸缩性。

《High-Dimensional Continuous Control Using Generalized Advantage Estimation》 Schulman, J., Moritz, P., Levine, S., Jordan, M. I. & Abbeel, P. 2016

PG方法中经常会采用神经网络作为非线性函数逼近器。但有两个问题:一是需要大量的样本;二是在数据并不稳定的情况下策略无法稳定更新。第一个问题可以用优势函数的指数加权估计(Exponentially-weighted estimator)解决。第二个问题可以用对策略和值函数(用神经网络表示)的trust region优化来解决。

PG是估计参数化概率策略的经典方法。PG方法中的每次更新应该提高那些能够好于平均的动作的概率,同时减少差于平均动作的概率。但是其variance很高,因此AC算法通过使用值函数代替经验回报(Empirical return)以引入bias为代价降低variance。但事实上bias有时往往更加有害。这篇论文主要讨论在控制bias的前提下大大减少variance。以 γ \gamma γ λ \lambda λ作为两个可调参数,提出了GAE(generalized advantage estimator)方法。PG中的梯度 g = ∇ θ E [ ∑ t = 0 ∞ r t ] g = \nabla_{\theta} \mathbb{E} [\sum^{\infty}_{t=0} r_t] g=θE[t=0rt]具体可以写成通用形式:
g = E [ ∑ t = 0 ∞ Ψ t ∇ θ π θ ( a t ∣ s t ) ] g = \mathbb{E} [\sum^{\infty}_{t=0} \Psi_t \nabla_{\theta} \pi_\theta (a_t|s_t)] g=E[t=0Ψtθπθ(atst)]
其中选择优势函数 Ψ t = A π ( s t , a t ) \Psi_t = A^{\pi} (s_t,a_t) Ψt=Aπ(st,at)时variance最小。优势函数用于定量地表示一个动作好于还是坏于平均行为。因此该文主要精力也放在优势函数的估计。总得来说,GAE( γ \gamma γ, λ \lambda λ)是k步估计的指数加权移动平均。

这里把discounted MDP中的折扣因子 γ \gamma γ作为该模型中的用于减少variance的参数。另一个参数类似于TD( λ \lambda λ)中的 λ \lambda λ,用于不同k-step A函数估计的权重。这两个参数都可用于bias-variance之间的tradeoff。考虑这两个参数,优势函数的估计就是各k步估计的指数加权平均:
A ^ t G A E ( γ , λ ) = ∑ l = 0 ∞ ( γ λ ) l δ t + l V \hat{A}^{GAE(\gamma, \lambda)}_t = \sum^{\infty}_{l=0} (\gamma \lambda)^l \delta^{V}_{t+l} A^tGAE(γ,λ)=l=0(γλ)lδt+lV
这里的策略和值函数都是采用神经网络表示。和TRPO方法类似,这里也用了trust region方法。不同的是它除了用于策略更新,还用于值函数估计。

《Sample Efficient Actor-Critic with Experience Replay》 Wang, Z. et al. 2017

之前很多RL方法的成功需要大量模拟,也就是说它们是样本利用率不高。像DQN这样的基于值函数估计方法在这方面会好些,但DQN有自己的缺点,如不能用于连续动作空间。另外PG方法中经典的A3C算法也有样本利用率低的问题。因此,这篇文章的目标就是要设计稳定的数据效率高的AC方法并能应用于连续和离散的动作空间。本文引入了Actor critic with experience replay(ACER)算法,它和DQN的性能差不多,且比A3C在Atari实验场景中和连续控制领域的数据效率好很多。ACER算法引入很多创新点,如truncated importance sampling with bias correction, stochastic dueling network architectures和efficient trust region policy optimization。这里主要看下它对TRPO的改进。

TRPO算法中采用了conjugate gradient方法求解,会有很多Fisher-vector乘积运算。因此在大规模问题中计算量十分大。与TRPO方法通过约束条件限制策略更新,ACER算法中维护average policy network用于表示过往策略的滑动平均,并保持策略更新不偏离这个均值。这个average policy network用 ϕ θ a \phi_{\theta_a} ϕθa表示。深度神经网络参数记为 θ \theta θ,它的输出作为策略分布 π ( ⋅ ∣ x ) = f ( ⋅ ∣ ϕ θ ( x ) ) \pi(\cdot|x) = f(\cdot|\phi_\theta(x)) π(x)=f(ϕθ(x))的统计量。ACER的策略梯度记为 g ^ t acer \hat{g}^{\text{acer}}_t g^tacer。引入trust region后,可转为约束问题:
min ⁡ z 1 2 ∣ ∣ g ^ t acer − z ∣ ∣ 2 2 s . t . ∇ ϕ θ D K L [ f ( ⋅ ∣ ϕ θ a ( x t ) ) ∣ ∣ f ( ⋅ ∣ ϕ θ ( x t ) ) ] T z ≤ δ \min_z \frac{1}{2} || \hat{g}^{\text{acer}}_t - z ||^2_2 \\ s.t. \quad \nabla_{\phi_\theta} D_{KL} [f(\cdot|\phi_{\theta_a}(x_t)) || f(\cdot|\phi_\theta(x_t))]^T z \leq \delta zmin21g^tacerz22s.t.ϕθDKL[f(ϕθa(xt))f(ϕθ(xt))]Tzδ
注意该约束为线性,因此整个问题可转为二次规划问题,有解析解:
z ∗ = g ^ t acer − max ⁡ { 0 , k T g ^ t acer − δ ∣ ∣ k ∣ ∣ 2 2 } k z^* = \hat{g}^{\text{acer}}_t - \max \{ 0, \frac{k^T \hat{g}^{\text{acer}}_t - \delta}{||k||^2_2} \} k z=g^tacermax{0,k22kTg^tacerδ}k
直观上,这个解表示在约束满足的情况下,则解即为 g ^ t a c e r \hat{g}^{{acer}}_t g^tacer,如果不满足,则沿 k k k方向减少。以上是第一阶段,第二阶段中使用反向传播(Back propagation, BP)算法,通过 ∂ ϕ θ ( x ) ∂ θ z ∗ \frac{\partial \phi_{\theta} (x)}{\partial \theta} z^* θϕθ(x)z更新网络参数 θ \theta θ。和TRPO方法中用二次近似约束中的 D K L D_{KL} DKL不同,这种方法将约束写为线性形式,因此可以通过解析解得到目标对于 ϕ θ \phi_{\theta} ϕθ的梯度,然后通过NN更新 ϕ θ \phi_{\theta} ϕθ对于 θ \theta θ的梯度。从而避免了Fisher-vector计算,因此更适合大规模问题。

《Constrained Policy Optimization》 Achiam, J., Held, D., Tamar, A. & Abbeel, P. 2017

有些场景下,我们需要限定约束防止灾难性后果。比如工业机器人或者飞行器控制,如果不加限制可能会导致经济损失甚至有安全隐患。文章提出Constrained Policy Optimization(CPO)方法,是一种可以保证在每一次迭代中满足约束的通用策略搜索算法。

基于CMDP(constrained Markov decision process)模型。该模型引入一组代价函数 C 1 , . . . , C m C_1,...,C_m C1,...,Cm,其中$C_i:S \times A\times S \rightarrow \mathbb{R} 。 目 标 函 数 。目标函数 J_{C_i} 代 表 以 代表以 C_i 为 代 价 函 数 的 策 略 为代价函数的策略 \pi 下 的 期 望 折 扣 回 报 。 下的期望折扣回报。 \Pi_{C} 为 对 于 所 有 为对于所有 i , 满 足 ,满足 J_{C_i}(\pi) \leq d_i$的策略集合,那要找的最优策略就是在这个集合当中使目标函数最大的那个。基于TRPO,在CMDP下的策略搜索问题可以写成公式:
π k + 1 = arg ⁡ max ⁡ π ∈ Π θ J ( π ) s . t . J C i ( π ) ≤ d i i = 1 , . . . , m D ( π , π k ) ≤ δ \pi_{k+1} = \arg \max_{\pi \in \Pi_\theta} J(\pi) \\ s.t. \quad J_{C_i} (\pi) \leq d_i \quad i = 1,...,m \\ D(\pi, \pi_k) \leq \delta πk+1=argπΠθmaxJ(π)s.t.JCi(π)dii=1,...,mD(π,πk)δ
具体地,选定 D K L D_{KL} DKL作为测度,即CPO算法。和TRPO一样,为了避免过小的更新,用约束替代惩罚项:
π k + 1 = arg ⁡ max ⁡ π ∈ Π θ E s ∼ d π k [ A π k ( s , a ) ] s . t . J C i ( π k ) + 1 1 − γ E s ∼ d π k , a ∼ π [ A C i π k ( s , a ) ] ≤ d i ∀ i D ˉ K L ( π ∣ ∣ π k ) ≤ δ \pi_{k+1} = \arg \max_{\pi \in \Pi_\theta} \mathbb{E}_{s \sim d^{\pi}k} [A^{\pi_k}(s,a)] \\ s.t. \quad J_{C_i}(\pi_k) + \frac{1}{1-\gamma} \mathbb{E}_{s \sim d^{\pi}k, a \sim \pi} [A^{\pi_k}_{C_i}(s,a)] \leq d_i \quad \forall i \\ \bar{D}_{KL}(\pi || \pi_k) \leq \delta πk+1=argπΠθmaxEsdπk[Aπk(s,a)]s.t.JCi(πk)+1γ1Esdπk,aπ[ACiπk(s,a)]diiDˉKL(ππk)δ
当参数空间维度很大时,上式的计算量非常大。把目标函数和代价约束通过线性近似,KL散度约束通过泰勒二阶展开近似后,可得:
θ k + 1 = arg ⁡ max ⁡ θ g T ( θ − θ k ) s . t c i + b i T ( θ − θ k ) ≤ 0 i = 1 , . . . , m 1 2 ( θ − θ k ) T H ( θ − θ k ) ≤ δ \theta_{k+1} = \arg \max_\theta g^T(\theta - \theta_k) \\ s.t \quad c_i + b^T_i(\theta - \theta_k) \leq 0 \quad i = 1,...,m \\ \frac{1}{2}(\theta - \theta_k)^T H (\theta - \theta_k) \leq \delta θk+1=argθmaxgT(θθk)s.tci+biT(θθk)0i=1,...,m21(θθk)TH(θθk)δ
该问题为凸优化,可通过对偶问题解决。先构造更易解的对偶问题,它是有解析解的(附录定理 2)。解完对偶问题,即可根据对偶问题的解构造原问题的解。但由于近似误差,可能解并不能满足约束了,因此,还需要进行回溯线搜索(Backtracking linesearch)保证满足约束。

《Bridging the Gap Between Value and Policy Based Reinforcement Learning》 Nachum, O., Norouzi, M., Xu, K. & Schuurmans, D. 2017

这篇论文中提出了Path Consistency Learning (PCL)算法。我们知道,最初RL算法分value-based和policy-based两大类。policy-based方法最大的缺点是效率低。另外策略梯度通过rollout来估计的话会导致variance很大。为了解决这个问题,AC算法通过值函数估计来替代rollout估计,以引入bias为代价减小了variance。尽管如此,如果这个值函数估计是on-policy的话仍然会面临样本数据效率的问题(因为要么用on-policy数据,要么更新足够慢以防止bias)。而off-policy算法(如Q-learning)现实使用中需要花很大力气进行超参数调节才能稳定。为了结合on-policy训练的无偏性和稳定性,和off-policy的数据效率,off-policy AC方法出现了,但它仍没有解决在有函数近似(Function approximation)下的off-policy学习的一些理论问题。在这个背景下,这篇文章研究了熵正则化下策略优化和softmax value consistency的关系,提出了一种稳定的off-policy学习方法。

首先假设策略是以神经网络定义的分布 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(as),Q-learning基于hard-max Bellman公式,通过hard-max Bellman时域一致性(Temporal consistency)来更新参数。定义 O ER ( s , π ) O_{\text{ER}}(s, \pi) OER(s,π)为期望折扣回报。因为最优策略是通过 π ∗ = arg ⁡ max ⁡ π O ER ( s , π ) \pi^*=\arg\max_{\pi}O_{\text{ER}}(s, \pi) π=argmaxπOER(s,π)来计算,因此策略为one-hot分布。本文主要研究softmax temporal consistency。它在传统的期望回报目标函数中加了折扣熵正则项(Discounted entropy regularizer)。这个正则项可以帮助exploration,避免过早收敛到次优解。正则化后的期望回报可以写成:
O ENT ( s , π ) = O ER ( s , π ) + τ H ( s , π ) O_{\text{ENT}}(s,\pi) = O_{\text{ER}}(s,\pi) + \tau \mathbb{H}(s, \pi) OENT(s,π)=OER(s,π)+τH(s,π)
其中 H ( s , π ) \mathbb{H}(s, \pi) H(s,π)为折扣熵项(discounted entropy term)。当 τ > 0 \tau > 0 τ>0时,最优解不再是one-hot分布,最优解可以表示为:
π ∗ ( a ∣ s ) ∝ exp ⁡ { ( r ( s , a ) + γ V ∗ ( s ′ ) ) / τ } \pi^*(a|s) \varpropto \exp \{(r(s,a) + \gamma V^*(s')) / \tau\} π(as)exp{(r(s,a)+γV(s))/τ}
文中定理1给出了对于任意状态和动作的时域一致性属性(temporal consistency property)。它可以被推广到多步情况下(即文中推论 2):
V ∗ ( s 1 ) − γ t − 1 V ∗ ( s t ) = ∑ i = 1 t − 1 γ i − 1 [ r ( s i , a i ) − τ log ⁡ π ∗ ( a i ∣ s i ) ] V^*(s_1) - \gamma^{t-1} V^*(s_t) = \sum^{t-1}_{i=1} \gamma_{i-1}[r(s_i, a_i) - \tau \log \pi^*(a_i|s_i)] V(s1)γt1V(st)=i=1t1γi1[r(si,ai)τlogπ(aisi)]
即对于给定状态动作序列下的时域一致性。基于此,PCL的目标是对于给定子轨迹(Sub-trajectory),上式中等式左边和右边之差尽可以接近于0。设 ϕ \phi ϕ θ \theta θ分别为值函数和策略的参数,PCL的目标可表示为:
O PCL ( θ , ϕ ) = ∑ s i : i + d ∈ E 1 2 C ( s i : i + d , θ , ϕ ) 2 O_{\text{PCL}} (\theta, \phi) = \sum_{s_{i:i+d} \in E} \frac{1}{2} C(s_{i:i+d}, \theta, \phi)^2 OPCL(θ,ϕ)=si:i+dE21C(si:i+d,θ,ϕ)2
其中 C ( s i : i + d , θ , ϕ ) C(s_{i:i+d}, \theta, \phi) C(si:i+d,θ,ϕ)为对于长度为 d d d的子轨迹,上面推论中等式左右边之差。然后就可以用梯度更新参数了。它可适用于on-policy和off-policy策略。

如果将soft consistency error用Q函数来表示的话, Q ρ Q_{\rho} Qρ ρ \rho ρ为参数,则值函数和策略都可以用 Q Q Q函数表示:
V ρ ( s ) = τ log ⁡ ∑ a exp ⁡ Q ρ ( s , a ) / τ π ρ ( a ∣ s ) = exp ⁡ ( Q ρ ( s , a ) − V ρ ( s ) ) / τ V_{\rho}(s) = \tau \log \sum_a \exp {Q_\rho(s,a) / \tau} \\ \pi_{\rho}(a|s) = \exp {(Q_\rho(s,a) - V_{\rho}(s)) / \tau} Vρ(s)=τlogaexpQρ(s,a)/τπρ(as)=exp(Qρ(s,a)Vρ(s))/τ
它将策略和值函数结合成一个模型,然后只要通过梯度更新一个参数 ρ \rho ρ即可。这称为Unified PCL(Unified Path Consistency Learning)。结果表示,与PCL相比Unified PCL方法在一些简单任务中表现不好,但在一些复杂任务中表现更好。

《Trust-PCL: An Off-Policy Trust Region Method for Continuous Control》 Nachum, O., Norouzi, M., Xu, K. & Schuurmans, D. 2017

TRPO为代表的trust region系方法一个缺点是需要大量和环境的交互。Google Brain提出的Trust-PCL是一种off-policy trust region算法,是对上面的PCL算法的改进。它既保证了优化的稳定性又充分利用了off-policy数据提高了样本效率。现有的off-policy方法(包括DDPG)虽提高了数据效率,但是代价是优化的稳定性。另外DDPG高度依赖于超参数选择和初始化。另一方面,为了提高稳定性和policy-based RL方法的收敛速度,Kadade基于Amari的工作提出了natural policy gradient算法,继而Schulman根据该工作提出了TRPO。但它的缺点是无法利用off-policy数据。一个自然的想法就是结合这两者的优点,兼具trust region policy-based方法的稳定性,和好的样本数据效率。

多数的policy-based方法(如REINFORCE算法)的基本思想是先参数化策略然后最大化期望回报 O ER ( s , π ) O_{\text{ER}}(s, \pi) OER(s,π)。PCL给这个目标函数添加了折扣熵正则项 H ( s , π ) \mathbb{H}(s,\pi) H(s,π)。Nachum等人的论文中证明了 O ENT O_{\text{ENT}} OENT的最优策略 π ∗ \pi^* π和最优目标值 V ∗ ( s ) = O ENT ( s , π ∗ ) V^*(s) = O_{\text{ENT}}(s, \pi^*) V(s)=OENT(s,π)之间对于任意状态动作序列符合softmax temporal consistency constraint。在TRPO方法中,为了避免传统policy-based算法(优化 O ER O_{\text{ER}} OER)中的稳定性问题,引入了当前策略下的每个状态下KL散度的平均作为测度的trust region。结合了这种思想,在PCL优化 O ENT O_{\text{ENT}} OENT的基础上,加上折扣相对熵依赖域(Discounted relative-entropy trust region),于是就有了下面的约束优化问题:
max ⁡ π E s [ O ENT ( π ) ] s . t . E s [ G ( s , π , π ~ ) ≤ ϵ ] \max _{\pi} \mathbb{E}_s[O_{\text{ENT}}(\pi)] \\ s.t. \quad \mathbb{E}_s [\mathbb{G}(s, \pi, \tilde{\pi}) \leq \epsilon] πmaxEs[OENT(π)]s.t.Es[G(s,π,π~)ϵ]
其中的折扣相对熵有递归定义:
G ( s , π , π ~ ) = E a , s ′ [ log ⁡ π ( a ∣ s ) − log ⁡ π ~ ( a ∣ s ) + γ G ( s ′ , π , π ~ ) ] \mathbb{G}(s, \pi, \tilde{\pi}) = \mathbb{E}_{a, s'} [\log \pi(a|s) - \log \tilde{\pi}(a|s) + \gamma \mathbb{G}(s', \pi, \tilde{\pi})] G(s,π,π~)=Ea,s[logπ(as)logπ~(as)+γG(s,π,π~)]
注意目标函数中熵正则化与约束中的相对熵信赖域的区别。前者可以鼓励exploration,而后者可以提高稳定性,加快训练速度。通过引入拉格朗日乘子,可以将上面的约束问题转为非约束问题 O RELENT ( s , π ) = O ENT ( s , π ) − λ G ( s , π , π ~ ) O_{\text{RELENT}(s,\pi)} = O_{\text{ENT}}(s, \pi) - \lambda \mathbb{G} (s, \pi, \tilde{\pi}) ORELENT(s,π)=OENT(s,π)λG(s,π,π~)。该式类似于 O ENT O_{\text{ENT}} OENT,可以分解为两部分 O RELENT ( s , π ) = O ~ s , π + ( τ + λ ) H ( s , π ) O_{\text{RELENT}}(s,\pi) = \tilde{O}_{\mathbf{s, \pi}} + (\tau + \lambda) \mathbb{H}(s, \pi) ORELENT(s,π)=O~s,π+(τ+λ)H(s,π),其中的 O ~ ER ( s , π ) \tilde{O}_{\text{ER}}(s,\pi) O~ER(s,π)为变换后回报函数 r ~ ( s , a ) = r ( s , a ) + λ log ⁡ π ~ ( a ∣ s ) \tilde{r}(s, a) = r(s,a) + \lambda \log \tilde{\pi}(a|s) r~(s,a)=r(s,a)+λlogπ~(as)下的期望回报目标。该目标下的最优值函数记为 V ∗ ( s ) V^*(s) V(s),最优策略记为 π ∗ ( a ∣ s ) \pi^*(a|s) π(as),然后在此基础上将PCL中的结论拓展过来,可以得到下面的softmax temporal consistency constraint:
V ∗ ( s 0 ) = E r i , a i , s i [ γ d V ∗ ( s d ) + ∑ i = 0 d − 1 γ i ( r i − ( τ + λ ) log ⁡ π ∗ ( a i ∣ s i ) + λ log ⁡ π ~ ( s i ∣ s i ) ) ] V^*(s_0) = \mathbb{E}_{r_i, a_i, s_i} [\gamma^d V^* (s_d) + \sum^{d-1}_{i=0} \gamma^i (r_i - (\tau + \lambda) \log \pi^*(a_i|s_i) + \lambda \log \tilde{\pi}(s_i|s_i))] V(s0)=Eri,ai,si[γdV(sd)+i=0d1γi(ri(τ+λ)logπ(aisi)+λlogπ~(sisi))]
类似地,定义一致性误差(Consistency error) C ( s t : t + d , θ , ϕ ) C(s_{t:t+d}, \theta, \phi) C(st:t+d,θ,ϕ)为上式等式左右边之差,我们的目标就是对于每个子轨迹使这个一致性误差的平方最小化,因此可以用梯度下降法更新策略和值函数的参数 θ \theta θ ϕ \phi ϕ。这就是trust-PCL的主要精神。

Trust-PCL比TRPO算法更加易于实现,它只需要简单的梯度下降。同时实验中发现Trust-PCL在一些控制任务中在平均回报和样本效率上优于TRPO。

《Scalable trust-region method for deep reinforcement learning using Kronecker-factored approximation》 Wu, Y., Mansimov, E., Liao, S., Grosse, R. & Ba, J. 2017

最近提出的Kronecker-factored方法可用于近似曲率矩阵。这篇文章扩展了natural policy gradient框架,利用Kronecker-factored approximate curvature(K-FAC)方法优化AC方法中的actor和critic,即策略和值函数的估计,提出了Actor Critic using Kronecker-Factored Trust Region(ACKTR)方法。

前面提到自然梯度可以用于提高样本利用率。但计算自然梯度需要计算FIM的转置,这是计算量非常大的操作。TRPO中使用conjugate gradient descent替代FIM的存储和求逆操作,只需要求FIM和向量的积。但它需要在每次参数更新时迭代求解。这阻碍了TRPO应用在大规模问题中。James Martens和Roger Grosse在论文《Optimizing Neural Networks with Kronecker-factored Approximate Curvature》中提出了神经网络中的自然梯度近似方法K-FAC(Kronecker-factored Approximate Curvature),它可以显著减少计算量。ACKTR算法将之应用到AC算法的actor和critic中。实际中,ACKTR每步更新的计算量只比基于随机梯度下降(Stochastic gradient descent, SGD)方法高10%~25%,同时实验结果表明ACKTR在Atari和MuJoCo场景中性能比A2C和TRPO好得多。

三、算法参考实现

  • OpenAI baselines:OpenAI的一些增强学习算法实现。包括A2C,ACKTR, DDPG, DQN, PPO和TRPO。
  • TensorFlow Research Models:实现了REINFORCE, TRPO, PCL, Unified PCL等算法。
  • rllab:论文《Benchmarking Deep Reinforcement Learning for Continuous Control》中涉及到的算法实现。包括REINFORCE, TNPG, RWR, REPS, TRPO, CEM, CMA-ES和DDPG。
  • TensorFlow Agents :实现了BatchPPO算法。它是PPO算法的优化。
  • modular_rl: John Schulman的一些算法实现,包括TRPO, PPO,CEM。
  • Tensorflow-RL:基于TensorFlow实现的A3C, PGQ, TRPO, DQN+CTS 和CEM算法。
  • openai/imitation:生成对抗模仿学习的实现代码,包含了TRPO算法。

你可能感兴趣的:(AI)