置信域策略优化(TRPO)

6 实用算法

在此,我们基于上述思想提出两种实用的策略优化算法,它们分别采用前一节中的单路径采样或藤蔓采样方案。这些算法重复执行以下步骤:

  1. 使用单路径或藤蔓采样过程收集一组状态-动作对及其蒙特卡洛估计的QQQ值。

  2. 通过对样本求平均,构建式(14)中的目标函数和约束的估计。

  3. 近似求解此约束优化问题以更新策略的参数向量θ\thetaθ。我们使用共轭梯度算法,随后进行线搜索,总体计算成本仅略高于梯度本身的计算。详见附录C。

关于步骤(3),我们通过解析计算KL散度的Hessian矩阵来构造Fisher信息矩阵(FIM),而非使用梯度的协方差矩阵。即,我们将Aij{A}_{ij}Aij​估计为1N∑n=1N∂2∂θi∂θjDKL(πθold(⋅∣sn)∥πθ(⋅∣sn))\frac{1}{N}\mathop{\sum }\limits_{{n = 1}}^{N}\frac{{\partial }^{2}}{\partial {\theta }_{i}\partial {\theta }_{j}}{D}_{\mathrm{{KL}}}\left( {{\pi }_{{\theta }_{\mathrm{{old}}}}\left( {\cdot \mid {s}_{n}}\right) \parallel {\pi }_{\theta }\left( {\cdot \mid {s}_{n}}\right) }\right)N1​n=1∑N​∂θi​∂θj​∂2​DKL​(πθold​​(⋅∣sn​)∥πθ​(⋅∣sn​)),而非1N∑n=1N∂∂θilog⁡πθ(an∣sn)∂∂θjlog⁡πθ(an∣sn)\frac{1}{N}\mathop{\sum }\limits_{{n = 1}}^{N}\frac{\partial }{\partial {\theta }_{i}}\log {\pi }_{\theta }\left( {{a}_{n} \mid {s}_{n}}\right) \frac{\partial }{\partial {\theta }_{j}}\log {\pi }_{\theta }\left( {{a}_{n} \mid {s}_{n}}\right)N1​n=1∑N​∂θi​∂​logπθ​(an​∣sn​)∂θj​∂​logπθ​(an​∣sn​)。该解析估计器对每个状态sn{s}_{n}sn​下的动作进行积分,且不依赖于采样得到的动作an{a}_{n}an​。如附录C所述,这种解析估计器在大规模场景下具有计算优势,因为它无需存储稠密的Hessian矩阵或一批轨迹中的所有策略梯度。实验表明,其策略改进速率与经验FIM相近。

Fisher 信息矩阵 (FIM) 的解析估计:

  • 问题:如何高效计算 FIM Aij=∂2∂θi∂θjDˉKL(θold,θ)A_{ij} = \frac{\partial^2}{\partial \theta_i \partial \theta_j} \bar{D}_{KL}(\theta_{\text{old}}, \theta)Aij​=∂θi​∂θj​∂2​DˉKL​(θold​,θ)
  • 两种方法:
    1. 经验 FIM:Aij=1N∑n∂∂θilog⁡πθ(an∣sn)⋅∂∂θjlog⁡πθ(an∣sn)A_{ij} = \frac{1}{N}\sum_n \frac{\partial}{\partial \theta_i} \log \pi_\theta(a_n|s_n) \cdot \frac{\partial}{\partial \theta_j} \log \pi_\theta(a_n|s_n)Aij​=N1​∑n​∂θi​∂​logπθ​(an​∣sn​)⋅∂θj​∂​logπθ​(an​∣sn​)
    • 使用采样动作 ana_nan​ 的梯度协方差
    • 需要存储所有轨迹的策略梯度
    1. 解析 FIM:Aij=1N∑n∂2∂θi∂θjDKL(πθold(⋅∣sn)∣∣πθ(⋅∣sn))A_{ij} = \frac{1}{N}\sum_n \frac{\partial^2}{\partial \theta_i \partial \theta_j} D_{KL}(\pi_{\theta_{\text{old}}}(\cdot|s_n) || \pi_\theta(\cdot|s_n))Aij​=N1​∑n​∂θi​∂θj​∂2​DKL​(πθold​​(⋅∣sn​)∣∣πθ​(⋅∣sn​))
    • 对每个状态下的所有动作进行积分
    • 不依赖于采样动作
  • 解析 FIM 的优势:
    • 无需存储稠密的 Hessian 矩阵
    • 无需存储所有轨迹的策略梯度
    • 计算效率更高,特别适合大规模问题
  • 实现:使用 Hessian-向量乘积(HVP),通过自动微分计算
  • 项目对应:src/trpo.py 中的 conjugate_gradient 方法使用 HVP 计算 FIM-向量乘积

我们简要总结第3节的理论与所描述的实用算法之间的关系:

  • 理论证明了对带有KL散度惩罚项的替代目标函数进行优化的合理性。然而,较大的惩罚系数CCC会导致步长过小,因此我们希望减小该系数。由于经验上难以稳健地选择惩罚系数,我们使用硬约束而非惩罚项,参数为δ\deltaδ(KL散度的边界)。

  • 对DKLmax⁡(θ old ,θ){D}_{\mathrm{{KL}}}^{\max }\left( {{\theta }_{\text{ old }},\theta }\right)DKLmax​(θ old ​,θ)的约束在数值优化和估计中难以处理,因此我们转而约束DˉKL(θ old ,θ){\bar{D}}_{\mathrm{{KL}}}\left( {{\theta }_{\text{ old }},\theta }\right)DˉKL​(θ old ​,θ)。

  • 我们的理论忽略了优势函数的估计误差。Kakade & Langford (2002)在其推导中考虑了此误差,相同的论点也适用于本文的场景,但为简洁起见,我们省略了相关内容。

7 与先前工作的联系

如第4节所述,我们的推导得到的策略更新与多种先前方法相关,为若干策略更新方案提供了统一视角。自然策略梯度(Kakade, 2002)可作为式(12)更新的特例获得,通过对LLL采用线性近似并对DˉKL{\bar{D}}_{\mathrm{{KL}}}DˉKL​约束采用二次近似,得到如下问题:

maximize⁡ρ[∇θLθ old (θ)∣θ=θ old ⋅(θ−θ old )](17) \mathop{\operatorname{maximize}}\limits_{\rho }\left\lbrack {{\left. {\nabla }_{\theta }{L}_{{\theta }_{\text{ old }}}\left( \theta \right) \right| }_{\theta = {\theta }_{\text{ old }}} \cdot \left( {\theta - {\theta }_{\text{ old }}}\right) }\right\rbrack \tag{17} ρmaximize​[∇θ​Lθ old ​​(θ)∣θ=θ old ​​⋅(θ−θ old ​)](17)

 subject to 12(θ old −θ)TA(θ old )(θ old −θ)≤δ ,  \text{ subject to }\frac{1}{2}{\left( {\theta }_{\text{ old }} - \theta \right) }^{T}A\left( {\theta }_{\text{ old }}\right) \left( {{\theta }_{\text{ old }} - \theta }\right) \leq \delta \text{ , }  subject to 21​(θ old ​−θ)TA(θ old ​)(θ old ​−θ)≤δ , 

 where A(θ old )ij= \text{ where }A{\left( {\theta }_{\text{ old }}\right) }_{ij} =  where A(θ old ​)ij​=

∂∂θi∂∂θjEs∼ρπ[DKL(π(⋅∣s,θ old )∥π(⋅∣s,θ))]∣θ=θ old . \frac{\partial }{\partial {\theta }_{i}}\frac{\partial }{\partial {\theta }_{j}}{\mathbb{E}}_{s \sim {\rho }_{\pi }}{\left. \left\lbrack {D}_{\mathrm{{KL}}}\left( \pi \left( \cdot \mid s,{\theta }_{\text{ old }}\right) \parallel \pi \left( \cdot \mid s,\theta \right) \right) \right\rbrack \right| }_{\theta = {\theta }_{\text{ old }}}. ∂θi​∂​∂θj​∂​Es∼ρπ​​[DKL​(π(⋅∣s,θ old ​)∥π(⋅∣s,θ))]∣θ=θ old ​​.

更新公式为θ new =θ old +1λA(θ old )−1∇θL(θ)∣θ=θ old {\theta }_{\text{ new }} = {\theta }_{\text{ old }} + {\left. \frac{1}{\lambda }A{\left( {\theta }_{\text{ old }}\right) }^{-1}{\nabla }_{\theta }L\left( \theta \right) \right| }_{\theta = {\theta }_{\text{ old }}}θ new ​=θ old ​+λ1​A(θ old ​)−1∇θ​L(θ)​θ=θ old ​​,其中步长1λ\frac{1}{\lambda }λ1​通常被视为算法参数。这与我们在每次更新中强制执行约束的方法不同。尽管这种差异看似细微,但我们的实验表明,它显著提升了算法在较大问题上的性能。

我们也可以通过使用ℓ2{\ell }_{2}ℓ2​约束或惩罚来获得标准策略梯度更新:

maximize⁡θ[∇θLθ old (θ)∣θ=θ old ⋅(θ−θ old )](18) \mathop{\operatorname{maximize}}\limits_{\theta }\left\lbrack {{\left. {\nabla }_{\theta }{L}_{{\theta }_{\text{ old }}}\left( \theta \right) \right| }_{\theta = {\theta }_{\text{ old }}} \cdot \left( {\theta - {\theta }_{\text{ old }}}\right) }\right\rbrack \tag{18} θmaximize​[∇θ​Lθ old ​​(θ)∣θ=θ old ​​⋅(θ−θ old ​)](18)

 subject to 12∥θ−θ old ∥2≤δ .  \text{ subject to }\frac{1}{2}{\begin{Vmatrix}\theta - {\theta }_{\text{ old }}\end{Vmatrix}}^{2} \leq \delta \text{ . }  subject to 21​​θ−θ old ​​​2≤δ . 

策略迭代更新也可以通过求解无约束问题最大化πLodd(π){\pi }_{{L}_{\mathrm{{odd}}}}\left( \pi \right)πLodd​​(π)来获得,使用如式3中定义的LLL。

其他几种方法采用与式(12)类似的更新。相对熵策略搜索(REPS)(Peters et al. 2010)约束状态-动作边缘分布p(s,a)p\left( {s,a}\right)p(s,a),而TRPO约束条件分布p(a∣s)p\left( {a \mid s}\right)p(a∣s)。与REPS不同,我们的方法不需要在内循环中进行代价高昂的非线性优化。Levine和Abbeel(2014)也使用KL散度约束,但其目的是鼓励策略不要偏离估计动态模型有效的区域,而我们不尝试显式估计系统动态。Pirotta等人(2013)也基于并推广了Kakade和Langford的结果,并推导出了与本文不同的算法。

策略改进界的证明

本证明(定理1的证明)采用了(Kakade & Langford, 2002)中定理4.1证明的技术,并将其适配到本文所考虑的更一般的设置中。大致概述如下:我们的证明依赖耦合的概念,即联合定义策略π\piπ和π′{\pi }^{\prime }π′,使它们以高概率=(1−α)= \left( {1 - \alpha }\right)=(1−α)选择相同的动作。代理损失Lπ(π~){L}_{\pi }\left( \widetilde{\pi }\right)Lπ​(π)考虑了π~\widetilde{\pi }π首次与π\piπ产生分歧时的优势,但不考虑后续分歧。因此,Lπ{L}_{\pi }Lπ​中的误差源于π\piπ和π~\widetilde{\pi }π之间的两次或更多次分歧,由此我们得到一个O(α2)O\left( {\alpha }^{2}\right)O(α2)修正项,其中α\alphaα是分歧概率。

我们从Kakade & Langford(2002)的一个引理开始,该引理表明策略性能η(π~)−η(π)\eta \left( \widetilde{\pi }\right) - \eta \left( \pi \right)η(π)−η(π)的差异可以分解为每时间步优势的总和。

引理1. 给定两个策略π,π~\pi ,\widetilde{\pi }π,π,

η(π~)=η(π)+Eτ∼π~[∑t=0∞γtAπ(st,at)] \eta \left( \widetilde{\pi }\right) = \eta \left( \pi \right) + {\mathbb{E}}_{\tau \sim \widetilde{\pi }}\left\lbrack {\mathop{\sum }\limits_{{t = 0}}^{\infty }{\gamma }^{t}{A}_{\pi }\left( {{s}_{t},{a}_{t}}\right) }\right\rbrack η(π)=η(π)+Eτ∼π​[t=0∑∞​γtAπ​(st​,at​)]

(19)

该期望取自轨迹τ := (s0,a0,s1,a0,…)\tau \mathrel{\text{ := }} \left( {{s}_{0},{a}_{0},{s}_{1},{a}_{0},\ldots }\right)τ := (s0​,a0​,s1​,a0​,…),符号Eτ∼π~[…]{\mathbb{E}}_{\tau \sim \widetilde{\pi }}\left\lbrack \ldots \right\rbrackEτ∼π​[…]表示从π~\widetilde{\pi }π中采样动作以生成τ\tauτ。

证明。首先注意到Aπ(s,a)=Es′∼P(s′∣s,a)[r(s)+γVπ(s′)−Vπ(s)]{A}_{\pi }\left( {s,a}\right) = {\mathbb{E}}_{{s}^{\prime } \sim P\left( {{s}^{\prime } \mid s,a}\right) }\left\lbrack {r\left( s\right) + \gamma {V}_{\pi }\left( {s}^{\prime }\right) - {V}_{\pi }\left( s\right) }\right\rbrackAπ​(s,a)=Es′∼P(s′∣s,a)​[r(s)+γVπ​(s′)−Vπ​(s)]。因此,

Eτ∣π~[∑t=0∞γtAπ(st,at)](20) {\mathbb{E}}_{\tau \mid \widetilde{\pi }}\left\lbrack {\mathop{\sum }\limits_{{t = 0}}^{\infty }{\gamma }^{t}{A}_{\pi }\left( {{s}_{t},{a}_{t}}\right) }\right\rbrack \tag{20} Eτ∣π​[t=0∑∞​γtAπ​(st​,at​)](20)

=Eτ∣π~[∑t=0∞γt(r(st)+γVπ(st+1)−Vπ(st))](21) = {\mathbb{E}}_{\tau \mid \widetilde{\pi }}\left\lbrack {\mathop{\sum }\limits_{{t = 0}}^{\infty }{\gamma }^{t}\left( {r\left( {s}_{t}\right) + \gamma {V}_{\pi }\left( {s}_{t + 1}\right) - {V}_{\pi }\left( {s}_{t}\right) }\right) }\right\rbrack \tag{21} =Eτ∣π​[t=0∑∞​γt(r(st​)+γVπ​(st+1​)−Vπ​(st​))](21)

=Eτ∣π~[−Vπ(s0)+∑t=0∞γtr(st)](22) = {\mathbb{E}}_{\tau \mid \widetilde{\pi }}\left\lbrack {-{V}_{\pi }\left( {s}_{0}\right) + \mathop{\sum }\limits_{{t = 0}}^{\infty }{\gamma }^{t}r\left( {s}_{t}\right) }\right\rbrack \tag{22} =Eτ∣π​[−Vπ​(s0​)+t=0∑∞​γtr(st​)](22)

=−Es0[Vπ(s0)]+Eτ∣π~[∑t=0∞γtr(st)](23) = - {\mathbb{E}}_{{s}_{0}}\left\lbrack {{V}_{\pi }\left( {s}_{0}\right) }\right\rbrack + {\mathbb{E}}_{\tau \mid \widetilde{\pi }}\left\lbrack {\mathop{\sum }\limits_{{t = 0}}^{\infty }{\gamma }^{t}r\left( {s}_{t}\right) }\right\rbrack \tag{23} =−Es0​​[Vπ​(s0​)]+Eτ∣π​[t=0∑∞​γtr(st​)](23)

=−η(π)+η(π~)(24) = - \eta \left( \pi \right) + \eta \left( \widetilde{\pi }\right) \tag{24} =−η(π)+η(π)(24)

重新整理后,结论得证。

将Aˉ(s)\bar{A}\left( s\right)Aˉ(s)定义为在状态sss下π~\widetilde{\pi }π相对于π\piπ的期望优势:

Aˉ(s)=Ea∼π~(⋅∣s)[Aπ(s,a)].(25) \bar{A}\left( s\right) = {\mathbb{E}}_{a \sim \widetilde{\pi }\left( {\cdot \mid s}\right) }\left\lbrack {{A}_{\pi }\left( {s,a}\right) }\right\rbrack . \tag{25} Aˉ(s)=Ea∼π(⋅∣s)​[Aπ​(s,a)].(25)

现在引理1可写为如下形式:

η(π~)=η(π)+Eτ∼π~[∑t=0∞γtAˉ(st)](26) \eta \left( \widetilde{\pi }\right) = \eta \left( \pi \right) + {\mathbb{E}}_{\tau \sim \widetilde{\pi }}\left\lbrack {\mathop{\sum }\limits_{{t = 0}}^{\infty }{\gamma }^{t}\bar{A}\left( {s}_{t}\right) }\right\rbrack \tag{26} η(π)=η(π)+Eτ∼π​[t=0∑∞​γtAˉ(st​)](26)

注意Lπ{L}_{\pi }Lπ​可写为

Lπ(π~)=η(π)+Eτ∼π[∑t=0∞γtAˉ(st)](27) {L}_{\pi }\left( \widetilde{\pi }\right) = \eta \left( \pi \right) + {\mathbb{E}}_{\tau \sim \pi }\left\lbrack {\mathop{\sum }\limits_{{t = 0}}^{\infty }{\gamma }^{t}\bar{A}\left( {s}_{t}\right) }\right\rbrack \tag{27} Lπ​(π)=η(π)+Eτ∼π​[t=0∑∞​γtAˉ(st​)](27)

这些方程的差异在于状态是使用π\piπ还是π~\widetilde{\pi }π采样的。为了界定η(π~)\eta \left( \widetilde{\pi }\right)η(π)和Lπ(π~){L}_{\pi }\left( \widetilde{\pi }\right)Lπ​(π)之间的差异,我们将界定每个时间步产生的差异。为此,我们首先需要引入一种衡量π\piπ和π~\widetilde{\pi }π一致性的度量。具体而言,我们将耦合策略,使它们定义一个动作对的联合分布。

定义1. 若(π,π~)\left( {\pi ,\widetilde{\pi }}\right)(π,π)定义了一个联合分布(a,a~)∣s\left( {a,\widetilde{a}}\right) \mid s(a,a)∣s,使得对所有s都有P(a≠a~∣s)≤αP\left( {a \neq \widetilde{a} \mid s}\right) \leq \alphaP(a=a∣s)≤α,则(π,π~)\left( {\pi ,\widetilde{\pi }}\right)(π,π)是一个α\alphaα耦合策略对。π\piπ和π~\widetilde{\pi }π将分别表示a和a~\widetilde{a}a的边缘分布。

在计算上,α\alphaα耦合意味着如果我们为随机数生成器随机选择一个种子,然后在设置该种子后从π\piπ和π~\widetilde{\pi }π中分别采样,结果将在至少1−α1 - \alpha1−α比例的种子上一致。

引理2. 已知π,π~\pi ,\widetilde{\pi }π,π是α\alphaα耦合策略,则对所有sss,

∣Aˉ(s)∣≤2αmax⁡s,a∣Aπ(s,a)∣(28) \left| {\bar{A}\left( s\right) }\right| \leq {2\alpha }\mathop{\max }\limits_{{s,a}}\left| {{A}_{\pi }\left( {s,a}\right) }\right| \tag{28} ​Aˉ(s)​≤2αs,amax​∣Aπ​(s,a)∣(28)

证明。

Aˉ(s)=Ea~∼π~[Aπ(s,a~)]=E(a,a~)∼(π,π~)[Aπ(s,a~)−Aπ(s,a)]   since   Ea∼π[Aπ(s,a)]=0(29) \bar{A}\left( s\right) = {\mathbb{E}}_{\widetilde{a} \sim \widetilde{\pi }}\left\lbrack {{A}_{\pi }\left( {s,\widetilde{a}}\right) }\right\rbrack = {\mathbb{E}}_{\left( {a,\widetilde{a}}\right) \sim \left( {\pi ,\widetilde{\pi }}\right) }\left\lbrack {{A}_{\pi }\left( {s,\widetilde{a}}\right) - {A}_{\pi }\left( {s,a}\right) }\right\rbrack \;\text{ since }\;{\mathbb{E}}_{a \sim \pi }\left\lbrack {{A}_{\pi }\left( {s,a}\right) }\right\rbrack = 0 \tag{29} Aˉ(s)=Ea∼π​[Aπ​(s,a)]=E(a,a)∼(π,π)​[Aπ​(s,a)−Aπ​(s,a)] since Ea∼π​[Aπ​(s,a)]=0(29)

=P(a≠a~∣s)E(a,a~)∼(π,π~)∣a≠a~[Aπ(s,a~)−Aπ(s,a)](30) = P\left( {a \neq \widetilde{a} \mid s}\right) {\mathbb{E}}_{\left( {a,\widetilde{a}}\right) \sim \left( {\pi ,\widetilde{\pi }}\right) \mid a \neq \widetilde{a}}\left\lbrack {{A}_{\pi }\left( {s,\widetilde{a}}\right) - {A}_{\pi }\left( {s,a}\right) }\right\rbrack \tag{30} =P(a=a∣s)E(a,a)∼(π,π)∣a=a​[Aπ​(s,a)−Aπ​(s,a)](30)

∣Aˉ(s)∣≤α⋅2max⁡s,a∣Aπ(s,a)∣(31) \left| {\bar{A}\left( s\right) }\right| \leq \alpha \cdot 2\mathop{\max }\limits_{{s,a}}\left| {{A}_{\pi }\left( {s,a}\right) }\right| \tag{31} ​Aˉ(s)​≤α⋅2s,amax​∣Aπ​(s,a)∣(31)

引理3. 设(π,π~)\left( {\pi ,\widetilde{\pi }}\right)(π,π)是一个α\alphaα耦合策略对。则

∣Est∼π~[Aˉ(st)]−Est∼π[Aˉ(st)]∣≤2αmax⁡sAˉ(s)≤4α(1−(1−α)t)max⁡s∣Aπ(s,a)∣(32) \left| {{\mathbb{E}}_{{s}_{t} \sim \widetilde{\pi }}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack - {\mathbb{E}}_{{s}_{t} \sim \pi }\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack }\right| \leq {2\alpha }\mathop{\max }\limits_{s}\bar{A}\left( s\right) \leq {4\alpha }\left( {1 - {\left( 1 - \alpha \right) }^{t}}\right) \mathop{\max }\limits_{s}\left| {{A}_{\pi }\left( {s,a}\right) }\right| \tag{32} ​Est​∼π​[Aˉ(st​)]−Est​∼π​[Aˉ(st​)]​≤2αsmax​Aˉ(s)≤4α(1−(1−α)t)smax​∣Aπ​(s,a)∣(32)

证明。给定耦合策略对(π,π~)\left( {\pi ,\widetilde{\pi }}\right)(π,π),我们也可以得到分别由π\piπ和π~\widetilde{\pi }π产生的轨迹分布上的耦合。即,我们有轨迹对τ,τ~\tau ,\widetilde{\tau }τ,τ,其中τ\tauτ是通过从π\piπ采取动作获得的,τ~\widetilde{\tau }τ是通过从π~\widetilde{\pi }π采取动作获得的,且使用相同的随机种子生成这两条轨迹。我们将考虑在时间步ttt时π~\widetilde{\pi }π相对于π\piπ的优势,并基于π\piπ和π~\widetilde{\pi }π在所有时间步i<ti < ti<t是否一致来分解这个期望。

令nt{n}_{t}nt​表示i<ti < ti<t中ai≠a~i{a}_{i} \neq {\widetilde{a}}_{i}ai​=ai​发生的次数,即时间步ttt之前π\piπ和π~\widetilde{\pi }π不一致的次数。

Est∼π~[Aˉ(st)]=P(nt=0)Est∼π~∣nt=0[Aˉ(st)]+P(nt>0)Est∼π~∣nt>0[Aˉ(st)](33) {\mathbb{E}}_{{s}_{t} \sim \widetilde{\pi }}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack = P\left( {{n}_{t} = 0}\right) {\mathbb{E}}_{{s}_{t} \sim \widetilde{\pi } \mid {n}_{t} = 0}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack + P\left( {{n}_{t} > 0}\right) {\mathbb{E}}_{{s}_{t} \sim \widetilde{\pi } \mid {n}_{t} > 0}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack \tag{33} Est​∼π​[Aˉ(st​)]=P(nt​=0)Est​∼π∣nt​=0​[Aˉ(st​)]+P(nt​>0)Est​∼π∣nt​>0​[Aˉ(st​)](33)

当动作使用π\piπ采样时,期望的分解类似:

Est∼π[Aˉ(st)]=P(nt=0)Est∼π∣nt=0[Aˉ(st)]+P(nt>0)Est∼π∣nt>0[Aˉ(st)](34) {\mathbb{E}}_{{s}_{t} \sim \pi }\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack = P\left( {{n}_{t} = 0}\right) {\mathbb{E}}_{{s}_{t} \sim \pi \mid {n}_{t} = 0}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack + P\left( {{n}_{t} > 0}\right) {\mathbb{E}}_{{s}_{t} \sim \pi \mid {n}_{t} > 0}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack \tag{34} Est​∼π​[Aˉ(st​)]=P(nt​=0)Est​∼π∣nt​=0​[Aˉ(st​)]+P(nt​>0)Est​∼π∣nt​>0​[Aˉ(st​)](34)

注意nt=0{n}_{t} = 0nt​=0项是相等的:

Est∼π~∣nt=0[Aˉ(st)]=Est∼π∣nt=0[Aˉ(st)],(35) {\mathbb{E}}_{{s}_{t} \sim \widetilde{\pi } \mid {n}_{t} = 0}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack = {\mathbb{E}}_{{s}_{t} \sim \pi \mid {n}_{t} = 0}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack , \tag{35} Est​∼π∣nt​=0​[Aˉ(st​)]=Est​∼π∣nt​=0​[Aˉ(st​)],(35)

因为nt=0{n}_{t} = 0nt​=0表示π\piπ和π~\widetilde{\pi }π在所有小于ttt的时间步上一致。减去式(33)和式(34),我们得到

Est∼π~[Aˉ(st)]−Est∼π[Aˉ(st)]=P(nt>0)(Est∼π~∣nt>0[Aˉ(st)]−Est∼π∣nt>0[Aˉ(st)])(36) {\mathbb{E}}_{{s}_{t} \sim \widetilde{\pi }}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack - {\mathbb{E}}_{{s}_{t} \sim \pi }\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack = P\left( {{n}_{t} > 0}\right) \left( {{\mathbb{E}}_{{s}_{t} \sim \widetilde{\pi } \mid {n}_{t} > 0}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack - {\mathbb{E}}_{{s}_{t} \sim \pi \mid {n}_{t} > 0}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack }\right) \tag{36} Est​∼π​[Aˉ(st​)]−Est​∼π​[Aˉ(st​)]=P(nt​>0)(Est​∼π∣nt​>0​[Aˉ(st​)]−Est​∼π∣nt​>0​[Aˉ(st​)])(36)

根据α,P(π,π~ agree at timestep i)≥1−α\alpha ,P\left( {\pi ,\widetilde{\pi }\text{ agree at timestep }i}\right) \geq 1 - \alphaα,P(π,π agree at timestep i)≥1−α的定义,所以P(nt=0)≥(1−α)tP\left( {{n}_{t} = 0}\right) \geq {\left( 1 - \alpha \right) }^{t}P(nt​=0)≥(1−α)t,并且

P(nt>0)≤1−(1−α)t(37) P\left( {{n}_{t} > 0}\right) \leq 1 - {\left( 1 - \alpha \right) }^{t} \tag{37} P(nt​>0)≤1−(1−α)t(37)

接下来,注意

∣Est∼π~∣nt>0[Aˉ(st)]−Est∼π∣nt>0[Aˉ(st)]∣≤∣Est∼π~∣nt>0[Aˉ(st)]∣+∣Est∼π∣nt>0[Aˉ(st)]∣(38) \left| {{\mathbb{E}}_{{s}_{t} \sim \widetilde{\pi } \mid {n}_{t} > 0}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack - {\mathbb{E}}_{{s}_{t} \sim \pi \mid {n}_{t} > 0}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack }\right| \leq \left| {{\mathbb{E}}_{{s}_{t} \sim \widetilde{\pi } \mid {n}_{t} > 0}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack }\right| + \left| {{\mathbb{E}}_{{s}_{t} \sim \pi \mid {n}_{t} > 0}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack }\right| \tag{38} ​Est​∼π∣nt​>0​[Aˉ(st​)]−Est​∼π∣nt​>0​[Aˉ(st​)]​≤​Est​∼π∣nt​>0​[Aˉ(st​)]​+​Est​∼π∣nt​>0​[Aˉ(st​)]​(38)

≤4αmax⁡s,a∣Aπ(s,a)∣(39) \leq {4\alpha }\mathop{\max }\limits_{{s,a}}\left| {{A}_{\pi }\left( {s,a}\right) }\right| \tag{39} ≤4αs,amax​∣Aπ​(s,a)∣(39)

第二个不等式由引理3得出

将式37和式39代入式36,得到

∣Est∼π~[Aˉ(st)]−Est∼π[Aˉ(st)]∣≤4α(1−(1−α)t)max⁡s,a∣Aπ(s,a)∣(40) \left| {{\mathbb{E}}_{{s}_{t} \sim \widetilde{\pi }}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack - {\mathbb{E}}_{{s}_{t} \sim \pi }\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack }\right| \leq {4\alpha }\left( {1 - {\left( 1 - \alpha \right) }^{t}}\right) \mathop{\max }\limits_{{s,a}}\left| {{A}_{\pi }\left( {s,a}\right) }\right| \tag{40} ​Est​∼π​[Aˉ(st​)]−Est​∼π​[Aˉ(st​)]​≤4α(1−(1−α)t)s,amax​∣Aπ​(s,a)∣(40)

前述引理对每个时间步的期望优势差进行了界的估计ttt。我们可以对时间求和,以界定η(π~)\eta \left( \widetilde{\pi }\right)η(π)和Lπ(π~){L}_{\pi }\left( \widetilde{\pi }\right)Lπ​(π)之间的差异。减去式26和式27,并定义ϵ=max⁡s,a∣Aπ(s,a)∣\epsilon = \mathop{\max }\limits_{{s,a}}\left| {{A}_{\pi }\left( {s,a}\right) }\right|ϵ=s,amax​∣Aπ​(s,a)∣,

∣η(π~)−Lπ(π~)∣=∑t=0∞γt∣Eτ∼π~[Aˉ(st)]−Eτ∼π[Aˉ(st)]∣(41) \left| {\eta \left( \widetilde{\pi }\right) - {L}_{\pi }\left( \widetilde{\pi }\right) }\right| = \mathop{\sum }\limits_{{t = 0}}^{\infty }{\gamma }^{t}\left| {{\mathbb{E}}_{\tau \sim \widetilde{\pi }}\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack - {\mathbb{E}}_{\tau \sim \pi }\left\lbrack {\bar{A}\left( {s}_{t}\right) }\right\rbrack }\right| \tag{41} ∣η(π)−Lπ​(π)∣=t=0∑∞​γt​Eτ∼π​[Aˉ(st​)]−Eτ∼π​[Aˉ(st​)]​(41)

≤∑t=0∞γt⋅4ϵα(1−(1−α)t)(42) \leq \mathop{\sum }\limits_{{t = 0}}^{\infty }{\gamma }^{t} \cdot {4\epsilon \alpha }\left( {1 - {\left( 1 - \alpha \right) }^{t}}\right) \tag{42} ≤t=0∑∞​γt⋅4ϵα(1−(1−α)t)(42)

=4ϵα(11−γ−11−γ(1−α))(43) = {4\epsilon \alpha }\left( {\frac{1}{1 - \gamma } - \frac{1}{1 - \gamma \left( {1 - \alpha }\right) }}\right) \tag{43} =4ϵα(1−γ1​−1−γ(1−α)1​)(43)

=4α2γϵ(1−γ)(1−γ(1−α))(44) = \frac{4{\alpha }^{2}{\gamma \epsilon }}{\left( {1 - \gamma }\right) \left( {1 - \gamma \left( {1 - \alpha }\right) }\right) } \tag{44} =(1−γ)(1−γ(1−α))4α2γϵ​(44)

≤4α2γϵ(1−γ)2(45) \leq \frac{4{\alpha }^{2}{\gamma \epsilon }}{{\left( 1 - \gamma \right) }^{2}} \tag{45} ≤(1−γ)24α2γϵ​(45)

最后,要用总变差散度替换α\alphaα,我们需要利用TV散度与耦合随机变量之间的对应关系:

假设pX{p}_{X}pX​和pY{p}_{Y}pY​是具有DTV(pX∥pY)=α{D}_{TV}\left( {{p}_{X}\parallel {p}_{Y}}\right) = \alphaDTV​(pX​∥pY​)=α的分布。则存在一个联合分布(X,Y)\left( {X,Y}\right)(X,Y),其边缘分布为pX,pY{p}_{X},{p}_{Y}pX​,pY​,对于该联合分布,X=YX = YX=Y以概率1−α1 - \alpha1−α成立。

参见(Levin et al. 2009),命题4.7。

由此可知,如果我们有两个策略π\piπ和π~\widetilde{\pi }π满足max⁡sDTV(π(⋅∣s)∥π~(⋅∣s))≤α\mathop{\max }\limits_{s}{D}_{TV}\left( {\pi \left( {\cdot \mid s}\right) \parallel \widetilde{\pi }\left( {\cdot \mid s}\right) }\right) \leq \alphasmax​DTV​(π(⋅∣s)∥π(⋅∣s))≤α,那么我们可以定义一个具有适当边缘分布的α\alphaα耦合策略对(π,π~)\left( {\pi ,\widetilde{\pi }}\right)(π,π)。在式45中取α=max⁡sDTV(π(⋅∣s)∥π~(⋅∣s))≤α\alpha = \mathop{\max }\limits_{s}{D}_{TV}\left( {\pi \left( {\cdot \mid s}\right) \parallel \widetilde{\pi }\left( {\cdot \mid s}\right) }\right) \leq \alphaα=smax​DTV​(π(⋅∣s)∥π(⋅∣s))≤α,即可得证定理1。

B 策略改进界的微扰理论证明

我们还提供了使用微扰理论对定理1的另一种证明。

证明。令G=(1+γPπ+(γPπ)2+…)=(1−γPπ)−1G = \left( {1 + \gamma {P}_{\pi } + {\left( \gamma {P}_{\pi }\right) }^{2} + \ldots }\right) = {\left( 1 - \gamma {P}_{\pi }\right) }^{-1}G=(1+γPπ​+(γPπ​)2+…)=(1−γPπ​)−1,类似地令G~=(1+γPπ~+(γPπ~)2+…)=(1−γPπ~)−1\widetilde{G} = \left( {1 + \gamma {P}_{\widetilde{\pi }} + {\left( \gamma {P}_{\widetilde{\pi }}\right) }^{2} + \ldots }\right) = {\left( 1 - \gamma {P}_{\widetilde{\pi }}\right) }^{-1}G=(1+γPπ​+(γPπ​)2+…)=(1−γPπ​)−1。我们将采用如下约定:ρ\rhoρ(状态空间上的密度)是一个向量,rrr(状态空间上的奖励函数)是一个对偶向量(即向量上的线性泛函),因此rρ{r\rho }rρ是一个标量,表示在密度ρ\rhoρ下的期望奖励。注意η(π)=rGρ0\eta \left( \pi \right) = {rG}{\rho }_{0}η(π)=rGρ0​,且η(π~)=cG~ρ0\eta \left( \widetilde{\pi }\right) = c\widetilde{G}{\rho }_{0}η(π)=cGρ0​。令Δ=Pπ~−Pπ\Delta = {P}_{\widetilde{\pi }} - {P}_{\pi }Δ=Pπ​−Pπ​。我们希望对η(π~)−η(π)=r(G~−G)ρ0\eta \left( \widetilde{\pi }\right) - \eta \left( \pi \right) = r\left( {\widetilde{G} - G}\right) {\rho }_{0}η(π)−η(π)=r(G−G)ρ0​进行界定。我们从一些标准的微扰理论运算开始。

G−1−G~−1=(1−γPπ)−(1−γPπ~) {G}^{-1} - {\widetilde{G}}^{-1} = \left( {1 - \gamma {P}_{\pi }}\right) - \left( {1 - \gamma {P}_{\widetilde{\pi }}}\right) G−1−G−1=(1−γPπ​)−(1−γPπ​)

=γΔ . (46) = {\gamma \Delta }\text{ . } \tag{46} =γΔ . (46)

左乘GGG,右乘G~\widetilde{G}G。

G~−G=γGΔG~ \widetilde{G} - G = {\gamma G\Delta }\widetilde{G} G−G=γGΔG

G~=G+γGΔG~(47) \widetilde{G} = G + {\gamma G\Delta }\widetilde{G} \tag{47} G=G+γGΔG(47)

将右侧代入G~\widetilde{G}G可得

G~=G+γGΔG+γ2GΔGΔG~(48) \widetilde{G} = G + {\gamma G\Delta G} + {\gamma }^{2}{G\Delta G\Delta }\widetilde{G} \tag{48} G=G+γGΔG+γ2GΔGΔG(48)

因此我们有

η(π~)−η(π)=r(G~−G)ρ=γrGΔGρ0+γ2rGΔGΔG~ρ0(49) \eta \left( \widetilde{\pi }\right) - \eta \left( \pi \right) = r\left( {\widetilde{G} - G}\right) \rho = {\gamma rG\Delta G}{\rho }_{0} + {\gamma }^{2}{rG\Delta G\Delta }\widetilde{G}{\rho }_{0} \tag{49} η(π)−η(π)=r(G−G)ρ=γrGΔGρ0​+γ2rGΔGΔGρ0​(49)

我们首先考虑首项γrGΔGρ0{\gamma rG\Delta G}{\rho }_{0}γrGΔGρ0​。注意rG=v{rG} = vrG=v,即无限时域状态价值函数。同时注意Gρ0=ρπG{\rho }_{0} = {\rho }_{\pi }Gρ0​=ρπ​。因此我们可以写出γcGΔGρ0=γvΔρπ{\gamma cG\Delta G}{\rho }_{0} = {\gamma v\Delta }{\rho }_{\pi }γcGΔGρ0​=γvΔρπ​。我们将证明该表达式等于期望优势Lπ(π~)−Lπ(π){L}_{\pi }\left( \widetilde{\pi }\right) - {L}_{\pi }\left( \pi \right)Lπ​(π)−Lπ​(π)。

Lπ(π~)−Lπ(π)=∑sρπ(s)∑a(π~(a∣s)−π(a∣s))Aπ(s,a) {L}_{\pi }\left( \widetilde{\pi }\right) - {L}_{\pi }\left( \pi \right) = \mathop{\sum }\limits_{s}{\rho }_{\pi }\left( s\right) \mathop{\sum }\limits_{a}\left( {\widetilde{\pi }\left( {a \mid s}\right) - \pi \left( {a \mid s}\right) }\right) {A}_{\pi }\left( {s,a}\right) Lπ​(π)−Lπ​(π)=s∑​ρπ​(s)a∑​(π(a∣s)−π(a∣s))Aπ​(s,a)

=∑sρπ(s)∑a(πθ(a∣s)−πθ~(a∣s))[r(s)+∑s′p(s′∣s,a)γv(s′)−v(s)] = \mathop{\sum }\limits_{s}{\rho }_{\pi }\left( s\right) \mathop{\sum }\limits_{a}\left( {{\pi }_{\theta }\left( {a \mid s}\right) - {\pi }_{\widetilde{\theta }}\left( {a \mid s}\right) }\right) \left\lbrack {r\left( s\right) + \mathop{\sum }\limits_{{s}^{\prime }}p\left( {{s}^{\prime } \mid s,a}\right) {\gamma v}\left( {s}^{\prime }\right) - v\left( s\right) }\right\rbrack =s∑​ρπ​(s)a∑​(πθ​(a∣s)−πθ​(a∣s))[r(s)+s′∑​p(s′∣s,a)γv(s′)−v(s)]

=∑sρπ(s)∑s′∑a(π(a∣s)−π~(a∣s))p(s′∣s,a)γv(s′) = \mathop{\sum }\limits_{s}{\rho }_{\pi }\left( s\right) \mathop{\sum }\limits_{{s}^{\prime }}\mathop{\sum }\limits_{a}\left( {\pi \left( {a \mid s}\right) - \widetilde{\pi }\left( {a \mid s}\right) }\right) p\left( {{s}^{\prime } \mid s,a}\right) {\gamma v}\left( {s}^{\prime }\right) =s∑​ρπ​(s)s′∑​a∑​(π(a∣s)−π(a∣s))p(s′∣s,a)γv(s′)

=∑sρπ(s)∑s′(pπ(s′∣s)−pπ~(s′∣s))γv(s′) = \mathop{\sum }\limits_{s}{\rho }_{\pi }\left( s\right) \mathop{\sum }\limits_{{s}^{\prime }}\left( {{p}_{\pi }\left( {{s}^{\prime } \mid s}\right) - {p}_{\widetilde{\pi }}\left( {{s}^{\prime } \mid s}\right) }\right) {\gamma v}\left( {s}^{\prime }\right) =s∑​ρπ​(s)s′∑​(pπ​(s′∣s)−pπ​(s′∣s))γv(s′)

=γvΔρπ(50) = {\gamma v\Delta }{\rho }_{\pi } \tag{50} =γvΔρπ​(50)

接下来我们对O(Δ2)O\left( {\Delta }^{2}\right)O(Δ2)项γ2rGΔGΔG~ρ{\gamma }^{2}{rG\Delta G\Delta }\widetilde{G}\rhoγ2rGΔGΔGρ进行界估计。首先考虑乘积γrGΔ=γvΔ{\gamma rG\Delta } = {\gamma v\Delta }γrGΔ=γvΔ。考察该对偶向量的分量sss。

∣(γvΔ)s∣=∣∑a(π~(s,a)−π(s,a))Qπ(s,a)∣ \left| {\left( \gamma v\Delta \right) }_{s}\right| = \left| {\mathop{\sum }\limits_{a}\left( {\widetilde{\pi }\left( {s,a}\right) - \pi \left( {s,a}\right) }\right) {Q}_{\pi }\left( {s,a}\right) }\right| ∣(γvΔ)s​∣=​a∑​(π(s,a)−π(s,a))Qπ​(s,a)​

=∣∑a(π~(s,a)−π(s,a))Aπ(s,a)∣ = \left| {\mathop{\sum }\limits_{a}\left( {\widetilde{\pi }\left( {s,a}\right) - \pi \left( {s,a}\right) }\right) {A}_{\pi }\left( {s,a}\right) }\right| =​a∑​(π(s,a)−π(s,a))Aπ​(s,a)​

≤∑a∣π~(s,a)−π(s,a)∣⋅max⁡a∣Aπ(s,a)∣ \leq \mathop{\sum }\limits_{a}\left| {\widetilde{\pi }\left( {s,a}\right) - \pi \left( {s,a}\right) }\right| \cdot \mathop{\max }\limits_{a}\left| {{A}_{\pi }\left( {s,a}\right) }\right| ≤a∑​∣π(s,a)−π(s,a)∣⋅amax​∣Aπ​(s,a)∣

≤2αϵ(51) \leq {2\alpha \epsilon } \tag{51} ≤2αϵ(51)

其中最后一行使用了总变差散度的定义以及ϵ=max⁡s,a∣Aπ(s,a)∣\epsilon = \mathop{\max }\limits_{{s,a}}\left| {{A}_{\pi }\left( {s,a}\right) }\right|ϵ=s,amax​∣Aπ​(s,a)∣的定义。我们利用ℓ1{\ell }_{1}ℓ1​算子范数对另一部分GΔG~ρ{G\Delta }\widetilde{G}\rhoGΔGρ进行界估计

∥A∥1=sup⁡ρ{∥Aρ∥1∥ρ∥1}(52) \parallel A{\parallel }_{1} = \mathop{\sup }\limits_{\rho }\left\{ \frac{\parallel {A\rho }{\parallel }_{1}}{\parallel \rho {\parallel }_{1}}\right\} \tag{52} ∥A∥1​=ρsup​{∥ρ∥1​∥Aρ∥1​​}(52)

其中我们有∥G∥1=∥G~∥1=1/(1−γ)\parallel G{\parallel }_{1} = \parallel \widetilde{G}{\parallel }_{1} = 1/\left( {1 - \gamma }\right)∥G∥1​=∥G∥1​=1/(1−γ)和∥Δ∥1=2α\parallel \Delta {\parallel }_{1} = {2\alpha }∥Δ∥1​=2α。由此可得

∥GΔG~ρ∥1≤∥G∥1∥Δ∥1∥G~∥1∥ρ∥1 \parallel {G\Delta }\widetilde{G}\rho {\parallel }_{1} \leq \parallel G{\parallel }_{1}\parallel \Delta {\parallel }_{1}\parallel \widetilde{G}{\parallel }_{1}\parallel \rho {\parallel }_{1} ∥GΔGρ∥1​≤∥G∥1​∥Δ∥1​∥G∥1​∥ρ∥1​

=11−γ⋅2α⋅11−γ⋅1(53) = \frac{1}{1 - \gamma } \cdot {2\alpha } \cdot \frac{1}{1 - \gamma } \cdot 1 \tag{53} =1−γ1​⋅2α⋅1−γ1​⋅1(53)

因此我们有

γ2∣rGΔGΔG~ρ∣≤γ∥γrGΔ∥∞∥GΔG~ρ∥1 {\gamma }^{2}\left| {{rG\Delta G\Delta }\widetilde{G}\rho }\right| \leq \gamma \parallel {\gamma rG\Delta }{\parallel }_{\infty }\parallel {G\Delta }\widetilde{G}\rho {\parallel }_{1} γ2​rGΔGΔGρ​≤γ∥γrGΔ∥∞​∥GΔGρ∥1​

≤γ∥vΔ∥∞∥GΔG~ρ∥1 \leq \gamma \parallel {v\Delta }{\parallel }_{\infty }\parallel {G\Delta }\widetilde{G}\rho {\parallel }_{1} ≤γ∥vΔ∥∞​∥GΔGρ∥1​

≤γ⋅2αϵ⋅2α(1−γ)2 \leq \gamma \cdot {2\alpha \epsilon } \cdot \frac{2\alpha }{{\left( 1 - \gamma \right) }^{2}} ≤γ⋅2αϵ⋅(1−γ)22α​

=4γϵ(1−γ)2α2(54) = \frac{4\gamma \epsilon }{{\left( 1 - \gamma \right) }^{2}}{\alpha }^{2} \tag{54} =(1−γ)24γϵ​α2(54)

C 高效求解信赖域约束优化问题

本节介绍如何高效近似求解以下约束优化问题,我们必须在TRPO的每次迭代中求解该问题:

 maximize L(θ) subject to DˉKL(θ old ,θ)≤δ . (55) \text{ maximize }L\left( \theta \right) \text{ subject to }{\bar{D}}_{\mathrm{{KL}}}\left( {{\theta }_{\text{ old }},\theta }\right) \leq \delta \text{ . } \tag{55}  maximize L(θ) subject to DˉKL​(θ old ​,θ)≤δ . (55)

我们将介绍的方法包括两个步骤:(1)使用目标函数的线性近似和约束的二次近似计算搜索方向;(2)沿该方向执行线搜索,确保在满足非线性约束的同时改进非线性目标函数。

搜索方向通过近似求解方程Ax=g{Ax} = gAx=g来计算,其中AAA是Fisher信息矩阵,即KL散度约束的二次近似:DˉKL(θ old ,θ)≈12(θ−θ old )TA(θ−θ old ){\bar{D}}_{\mathrm{{KL}}}\left( {{\theta }_{\text{ old }},\theta }\right) \approx \frac{1}{2}{\left( \theta - {\theta }_{\text{ old }}\right) }^{T}A\left( {\theta - {\theta }_{\text{ old }}}\right)DˉKL​(θ old ​,θ)≈21​(θ−θ old ​)TA(θ−θ old ​),其中Aij=∂∂θi∂∂θjDˉKL(θ old ,θ){A}_{ij} = \frac{\partial }{\partial {\theta }_{i}}\frac{\partial }{\partial {\theta }_{j}}{\bar{D}}_{\mathrm{{KL}}}\left( {{\theta }_{\text{ old }},\theta }\right)Aij​=∂θi​∂​∂θj​∂​DˉKL​(θ old ​,θ)。在大规模问题中,构建完整矩阵AAA(或A−1{A}^{-1}A−1)的计算和内存成本过高,令人望而却步。然而,当我们仅能访问计算矩阵-向量乘积y→Ayy \rightarrow {Ay}y→Ay的函数时,共轭梯度算法允许我们无需构建完整矩阵即可近似求解方程Ax=b{Ax} = bAx=b。附录C.1描述了计算Fisher信息矩阵的矩阵-向量乘积的最有效方法。关于使用Hessian-向量乘积优化神经网络目标的更多阐述,请参见(Martens & Sutskever, 2012)和(Pascanu & Bengio, 2013)。

计算出搜索方向s≈A−1gs \approx {A}^{-1}gs≈A−1g后,我们接下来需要计算最大步长β\betaβ,使得θ+βs\theta + {\beta s}θ+βs满足KL散度约束。为此,令δ=DˉKL≈12(βs)TA(βs)=12β2sTAs\delta = {\bar{D}}_{\mathrm{{KL}}} \approx \frac{1}{2}{\left( \beta s\right) }^{T}A\left( {\beta s}\right) = \frac{1}{2}{\beta }^{2}{s}^{T}{As}δ=DˉKL​≈21​(βs)TA(βs)=21​β2sTAs。由此可得β=2δ/sTAs\beta = \sqrt{{2\delta }/{s}^{T}{As}}β=2δ/sTAs​,其中δ\deltaδ是期望的KL散度。项sTAs{s}^{T}{As}sTAs可通过单次海森向量积计算,并且它也是共轭梯度算法产生的中间结果。

最后,我们使用线搜索来确保代理目标的改进和KL散度约束的满足,这两者在参数向量θ\thetaθ中均为非线性(因此偏离了用于计算步长的线性和二次近似)。我们对目标Lθ old (θ)−X[DˉKL(θ old ,θ)≤δ]{L}_{{\theta }_{\text{ old }}}\left( \theta \right) - \mathcal{X}\left\lbrack {{\bar{D}}_{\mathrm{{KL}}}\left( {{\theta }_{\text{ old }},\theta }\right) \leq \delta }\right\rbrackLθ old ​​(θ)−X[DˉKL​(θ old ​,θ)≤δ]执行线搜索,其中当参数为真时X[…]\mathcal{X}\left\lbrack \ldots \right\rbrackX[…]等于零,为假时+∞+ \infty+∞。从前段计算的步长β\betaβ最大值开始,我们指数级缩小β\betaβ直至目标得到改进。若没有此线搜索,算法偶尔会计算出导致性能灾难性下降的大步长。

C.1 计算Fisher向量积

这里我们将描述如何计算平均Fisher信息矩阵与任意向量之间的矩阵-向量积。这种矩阵-向量积使我们能够执行共轭梯度算法。假设参数化策略将输入xxx映射到“分布参数”向量μθ(x){\mu }_{\theta }\left( x\right)μθ​(x),该向量对分布π(u∣x)\pi \left( {u \mid x}\right)π(u∣x)进行参数化。现在,给定输入xxx的KL散度可写为:

DKL(πθ old (⋅∣x)∥πθ(⋅∣x))=kl⁡(μθ(x),μ old )(56) {D}_{\mathrm{{KL}}}\left( {{\pi }_{{\theta }_{\text{ old }}}\left( {\cdot \mid x}\right) \parallel {\pi }_{\theta }\left( {\cdot \mid x}\right) }\right) = \operatorname{kl}\left( {{\mu }_{\theta }\left( x\right) ,{\mu }_{\text{ old }}}\right) \tag{56} DKL​(πθ old ​​(⋅∣x)∥πθ​(⋅∣x))=kl(μθ​(x),μ old ​)(56)

其中kl\mathrm{{kl}}kl是对应于两个均值参数向量的分布之间的KL散度。对θ\thetaθ求kl的二阶导数,我们得到

∂μa(x)∂θi∂μb(x)∂θjklab′′(μθ(x),μold)+∂2μa(x)∂θi∂θjkla′(μθ(x),μold)(57) \frac{\partial {\mu }_{a}\left( x\right) }{\partial {\theta }_{i}}\frac{\partial {\mu }_{b}\left( x\right) }{\partial {\theta }_{j}}{\mathrm{{kl}}}_{ab}^{\prime \prime }\left( {{\mu }_{\theta }\left( x\right) ,{\mu }_{\mathrm{{old}}}}\right) + \frac{{\partial }^{2}{\mu }_{a}\left( x\right) }{\partial {\theta }_{i}\partial {\theta }_{j}}{\mathrm{{kl}}}_{a}^{\prime }\left( {{\mu }_{\theta }\left( x\right) ,{\mu }_{\mathrm{{old}}}}\right) \tag{57} ∂θi​∂μa​(x)​∂θj​∂μb​(x)​klab′′​(μθ​(x),μold​)+∂θi​∂θj​∂2μa​(x)​kla′​(μθ​(x),μold​)(57)

其中撇号(')表示对第一个参数的微分,并且对指标a,ba,ba,b存在隐式求和。第二项为零,仅留下第一项。令J := ∂μa(x)∂θiJ \mathrel{\text{ := }} \frac{\partial {\mu }_{a}\left( x\right) }{\partial {\theta }_{i}}J := ∂θi​∂μa​(x)​(雅可比矩阵),则Fisher信息矩阵可写为矩阵形式JTMJ{J}^{T}{MJ}JTMJ,其中M=klab′′(μθ(x),μ old )M = k{l}_{ab}^{\prime \prime }\left( {{\mu }_{\theta }\left( x\right) ,{\mu }_{\text{ old }}}\right)M=klab′′​(μθ​(x),μ old ​)是分布关于均值参数μ\muμ(而非参数θ\thetaθ)的Fisher信息矩阵。对于大多数感兴趣的参数化分布,这具有简单形式。

Fisher向量积现在可写为函数y→JTMJyy \rightarrow {J}^{T}{MJy}y→JTMJy。与JT{J}^{T}JT和JJJ的乘法可由大多数自动微分和神经网络包执行(与JT{J}^{T}JT的乘法是众所周知的反向传播操作),而与MMM的乘法操作可针对感兴趣的分布推导得出。注意,此Fisher向量积易于在一组数据点(即输入xxx至μ\muμ)上取平均。

另一种方法是使用基于反向模式自动微分的通用方法计算Hessian向量积({Wright &Nocedal,1999),第8章),即计算DKL{D}_{\mathrm{{KL}}}DKL​对θ\thetaθ的Hessian矩阵。该方法效率略低,因为它没有利用μ(x)\mu \left( x\right)μ(x)的二阶导数(即式(57)中的第二项)可忽略这一事实,但实现起来可能要简单得多。

我们描述了一种计算Fisher向量积y→Ayy \rightarrow {Ay}y→Ay的方法,其中Fisher信息矩阵是在函数μ\muμ的一组输入上取平均得到的。计算Fisher向量积的代价通常与计算依赖于μ(x)\mu \left( x\right)μ(x)的目标函数的梯度相当(Wright &Nocedal,1999)。此外,我们需要计算

每个梯度需要计算kkk个这样的Fisher向量积,其中kkk是我们执行的共轭梯度算法的迭代次数。我们发现k=10k = {10}k=10相当有效,使用更高的kkk并不会加快策略改进速度。因此,朴素实现会将超过90%{90}\%90%的计算量用于这些Fisher向量积。然而,我们可以通过对Fisher向量积计算的数据进行子采样来大幅减轻这一负担。由于Fisher信息矩阵仅作为一种度量,因此可以在数据子集上计算,而不会严重降低最终步骤的质量。因此,我们可以在10%的数据上计算它,此时Hessian向量积的总计算成本将与计算梯度大致相同。通过这种优化,自然梯度步A−1g{A}^{-1}gA−1g的计算不会比梯度ggg的计算产生显著的额外计算成本。

D 用神经网络近似因子化策略

策略是一种条件概率分布πθ(a∣s){\pi }_{\theta }\left( {a \mid s}\right)πθ​(a∣s),可用神经网络进行参数化。该神经网络(确定性地)将状态向量sss映射到向量μ\muμ,后者指定了动作空间上的分布。然后我们可以计算似然p(a∣μ)p\left( {a \mid \mu }\right)p(a∣μ)并采样a∼p(a∣μ)a \sim p\left( {a \mid \mu }\right)a∼p(a∣μ)。

在连续状态和动作空间的实验中,我们使用高斯分布,其协方差矩阵为对角矩阵且与状态无关。具有多个全连接(密集)层的神经网络将输入特征映射到高斯分布的均值。另一组独立参数指定每个元素的对数标准差。具体而言,这些参数包括用于计算均值的神经网络的权重和偏置集{Wi,bi}i=1L{\left\{ {W}_{i},{b}_{i}\right\} }_{i = 1}^{L}{Wi​,bi​}i=1L​,以及一个与aaa维度相同的向量rrr(对数标准差)。此时,策略由正态分布N( mean = NeuralNet (s;{Wi,bi}i=1L), stdev =exp⁡(r))\mathcal{N}\left( {\text{ mean } = \text{ NeuralNet }\left( {s;{\left\{ {W}_{i},{b}_{i}\right\} }_{i = 1}^{L}}\right) ,\text{ stdev } = \exp \left( r\right) }\right)N( mean = NeuralNet (s;{Wi​,bi​}i=1L​), stdev =exp(r))定义。其中,μ=\mu =μ=[均值,标准差]。

在离散动作(Atari)实验中,我们使用因子化离散动作空间,每个因子被参数化为类别分布。即,动作由整数元组(a1,a2,…,aK)\left( {{a}_{1},{a}_{2},\ldots ,{a}_{K}}\right)(a1​,a2​,…,aK​)ak∈{1,2,…,Nk}{a}_{k} \in \left\{ {1,2,\ldots ,{N}_{k}}\right\}ak​∈{1,2,…,Nk​}组成,每个分量均假设服从类别分布,由向量μk=  [p1,p2,…,pNk]{\mu }_{k} = \; \left\lbrack {{p}_{1},{p}_{2},\ldots ,{p}_{{N}_{k}}}\right\rbrackμk​=[p1​,p2​,…,pNk​​]指定。因此,μ\muμ定义为各因子参数的拼接:μ=[μ1,μ2,…,μK]\mu = \left\lbrack {{\mu }_{1},{\mu }_{2},\ldots ,{\mu }_{K}}\right\rbrackμ=[μ1​,μ2​,…,μK​],维度为dim⁡μ=∑k=1KNk\dim \mu = \mathop{\sum }\limits_{{k = 1}}^{K}{N}_{k}dimμ=k=1∑K​Nk​。μ\muμ的各分量通过对输入sss应用神经网络,然后对每个切片应用softmax算子计算得到,从而为每个因子生成归一化概率。

10 总结与理解要点

10.1 TRPO 核心思想总结

TRPO 的核心创新:

  1. 单调改进保证:理论上保证每次更新都能改进策略性能(或至少不降低)
  2. 替代目标函数:使用局部近似 L(θold,θ)L(\theta_{\text{old}}, \theta)L(θold​,θ) 替代难以优化的真实性能 η(θ)\eta(\theta)η(θ)
  3. KL 散度约束:限制策略更新幅度,避免过大更新导致性能下降
  4. 高效求解:使用共轭梯度算法,无需显式构建 Fisher 信息矩阵
  5. 线搜索:确保实际性能改进和 KL 约束满足

为什么 TRPO 能工作:

  • 替代目标函数:在旧策略附近,LLL 和 η\etaη 的值和梯度都匹配
  • KL 散度约束:限制策略变化幅度,保证替代目标与真实性能的差异可控
  • 单调改进保证:理论上保证每次更新都能改进(或至少不降低)性能
  • 高效实现:共轭梯度算法避免显式构建 FIM,计算效率高

10.2 与项目实现的对应关系

算法组件对应:

  • 策略网络 → src/trpo.py 中的 PolicyNet 类
  • 价值网络 → src/trpo.py 中的 ValueNet 类
  • KL 散度约束 → TRPOAgent.update 方法中的 KL 约束检查
  • 共轭梯度 → TRPOAgent.conjugate_gradient 方法
  • 线搜索 → TRPOAgent.line_search 方法
  • GAE 优势估计 → TRPOAgent._compute_returns_adv 方法

超参数对应:

  • KL 散度阈值 → config.py 中的 TRPO_MAX_KL(默认 0.01)
  • 共轭梯度迭代数 → config.py 中的 TRPO_CG_ITERS(默认 10)
  • 阻尼项 → config.py 中的 TRPO_DAMPING(默认 0.01)
  • 线搜索系数 → config.py 中的 TRPO_LS_COEF(默认 0.9)
  • GAE 参数 → config.py 中的 TRPO_GAE_LAMBDA(默认 0.95)
  • 熵正则化系数 → config.py 中的 TRPO_ENTROPY_COEF(默认 0.01)

10.3 关键设计决策的理解

为什么需要替代目标函数?

  • 真实性能 η(θ)\eta(\theta)η(θ) 难以直接优化(依赖于策略的状态分布)
  • 替代目标 L(θold,θ)L(\theta_{\text{old}}, \theta)L(θold​,θ) 使用旧策略的状态分布,易于优化
  • 在旧策略附近,LLL 和 η\etaη 的值和梯度都匹配

为什么需要 KL 散度约束?

  • 替代目标只在旧策略附近有效,步长过大时可能失效
  • KL 散度约束限制策略变化幅度,保证替代目标与真实性能的差异可控
  • 使用约束而非惩罚项,允许更大的步长(只要满足约束)

为什么使用平均 KL 散度而非最大 KL 散度?

  • 最大 KL 散度约束对每个状态都有约束,难以求解
  • 平均 KL 散度约束只有一个约束,易于求解
  • 实验表明两者性能相近

为什么使用共轭梯度算法?

  • Fisher 信息矩阵维度高,显式构建和求逆计算成本高
  • 共轭梯度算法只需计算 FIM-向量乘积,无需显式构建矩阵
  • 计算效率高,特别适合大规模问题

为什么需要线搜索?

  • 共轭梯度算法使用线性/二次近似,可能与实际非线性目标有偏差
  • 线搜索确保实际性能改进和 KL 约束满足
  • 避免性能灾难性下降

10.4 TRPO vs DQN vs DDPG vs PPO 综合对比

特性TRPODQNDDPGPPO
策略类型随机策略确定性策略(ϵ\epsilonϵ-贪婪)确定性策略 + 噪声随机策略
动作空间离散/连续离散连续离散/连续
学习方式在策略离策略离策略在策略
更新方式KL 约束硬更新软更新裁剪/自适应KL
稳定性保证单调改进保证经验回放 + 目标网络软更新 + 经验回放裁剪机制
计算复杂度高(共轭梯度 + 线搜索)中(经验回放采样)中(经验回放采样)中(多轮更新)
实现复杂度复杂简单中等简单
样本效率高(在策略学习)中(经验回放)中(经验回放)高(多轮更新)
理论保证有(单调改进)无无无
适用场景需要稳定训练离散动作任务连续控制任务通用 RL 任务

10.5 常见问题与解答

Q1: TRPO 与策略梯度的主要区别是什么?

  • 策略梯度:直接优化策略梯度,步长需要手动调整,可能不稳定
  • TRPO:使用 KL 散度约束限制步长,保证单调改进,更稳定

Q2: 为什么 TRPO 计算成本高?

  • 需要计算 Fisher 信息矩阵的 Hessian-向量乘积
  • 需要执行共轭梯度算法(通常 10 次迭代)
  • 需要执行线搜索(可能多次评估目标函数)
  • 但相比显式构建 FIM,已经高效很多

Q3: KL 散度阈值 δ\deltaδ 如何选择?

  • 通常设置为 0.01(论文推荐值)
  • 太小:更新过于保守,学习速度慢
  • 太大:可能违反单调改进保证,训练不稳定
  • 建议从默认值开始,根据训练曲线调整

Q4: 如何判断训练是否收敛?

  • 观察训练曲线:奖励应该逐渐上升并趋于稳定
  • 观察 KL 散度:应该接近但不超过阈值 δ\deltaδ
  • 观察策略改进:替代目标应该持续改进
  • 测试性能:在测试环境中评估策略性能

Q5: TRPO 与 PPO 的关系是什么?

  • PPO(Proximal Policy Optimization)是 TRPO 的简化版本
  • PPO 使用裁剪机制替代 KL 散度约束,实现更简单
  • PPO 通常性能与 TRPO 相近,但实现更简单
  • TRPO 有理论保证,PPO 更实用

Q6: TRPO 训练时 KL 散度总是很小怎么办?

  • 原因:
    • KL 散度阈值 δ\deltaδ 设置过小
    • 共轭梯度算法求解不准确
    • 线搜索过于保守
  • 解决方案:
    • 适当增大 KL 阈值(如从 0.01 到 0.02)
    • 增加共轭梯度迭代数(如从 10 到 20)
    • 检查线搜索实现,确保正确执行
    • 如果 KL 散度始终很小,说明更新过于保守,可以增大步长

Q7: TRPO 计算成本高,如何加速?

  • 减少计算成本的方法:
    • 减少共轭梯度迭代数(通常 10 次足够)
    • 减少线搜索回溯次数(限制最大回溯次数)
    • 使用更小的批量大小(但可能影响稳定性)
    • 减少 Fisher 信息矩阵计算的数据量(子采样)
  • 权衡:
    • 减少迭代数可能降低更新精度
    • 需要在速度和精度之间平衡
    • 对于简单任务,可以适当减少计算

10.6 实践建议

训练技巧:

  1. 从简单开始:先在简单环境上验证实现
  2. 监控训练:观察训练曲线、KL 散度、替代目标等
  3. 调整超参数:根据任务特点调整 KL 阈值、CG 迭代数等
  4. 保存检查点:定期保存模型,避免训练中断丢失

调参建议:

  1. KL 散度阈值:从 0.01 开始,如果训练不稳定则减小
  2. 共轭梯度迭代数:通常 10 次足够,增加迭代数可能提高精度但计算成本高
  3. 阻尼项:通常 0.01,用于稳定共轭梯度算法
  4. GAE 参数:通常 0.95,平衡偏差和方差

常见问题:

  1. 训练不稳定:减小 KL 阈值、增加阻尼项、检查网络初始化
  2. 不收敛:检查奖励函数、增加探索、调整网络结构
  3. 性能不佳:检查超参数、增加训练时间、尝试不同网络结构
  4. 计算慢:减少 CG 迭代数、减少线搜索回溯次数、使用更小的批量

调试技巧:

  1. 监控关键指标:
    • KL 散度:应该接近但不超过阈值 δ\deltaδ
    • 替代目标改进:应该持续改进
    • 实际性能改进:确保真实性能也在改进
    • 共轭梯度收敛:观察 CG 算法的收敛情况
  2. KL 散度分析:
    • KL 散度过小:更新过于保守,可以增大阈值
    • KL 散度过大:可能违反约束,需要减小步长
    • KL 散度波动大:检查线搜索实现
  3. 共轭梯度调试:
    • 如果 CG 不收敛:增加阻尼项或迭代数
    • 如果 CG 收敛太快:可能步长计算不准确
    • 检查 FIM-向量乘积的计算是否正确

10.7 进一步阅读

相关论文:

  • Schulman et al. (2015): “Trust Region Policy Optimization”(TRPO 原始论文)
  • Schulman et al. (2017): “Proximal Policy Optimization Algorithms”(PPO,TRPO 的简化版本)
  • Kakade & Langford (2002): “Approximately Optimal Approximate Reinforcement Learning”(保守策略迭代)

扩展算法:

  • PPO:使用裁剪机制替代 KL 散度约束,实现更简单
  • ACER:结合经验回放和重要性采样,提高样本效率
  • IMPALA:大规模分布式策略梯度算法

应用领域:

  • 机器人控制:连续控制任务,需要稳定训练
  • 游戏 AI:离散动作任务,需要稳定策略更新
  • 自然语言处理:序列决策问题

10.8 算法选择指南

何时选择 TRPO?

  • ✅ 适用场景:
    • 需要稳定训练的场景(保证单调改进)
    • 离散或连续动作空间都可以
    • 需要理论保证的场景
    • 复杂任务,需要稳定策略更新
  • ❌ 不适用场景:
    • 需要快速实现的场景(PPO 更简单)
    • 计算资源有限的场景(TRPO 计算成本高)
    • 简单任务(PPO 或标准策略梯度即可)
  • 项目对应:车辆路径跟踪任务可以使用 TRPO,但 PPO 实现更简单
    • 动作空间:离散转向角(5-9 个动作)
    • 状态空间:横向误差、航向误差(低维)
    • 奖励函数:基于跟踪误差和控制平滑性
    • 优势:保证单调改进,训练稳定
    • 劣势:实现复杂,计算成本高
    • 建议:如果不需要理论保证,优先使用 PPO

与其他算法的选择建议:

  • TRPO vs PPO:需要理论保证用 TRPO,需要简单实现用 PPO
  • TRPO vs DQN/DDPG:需要稳定训练用 TRPO,需要离策略学习用 DQN/DDPG
  • TRPO vs 标准策略梯度:需要稳定训练用 TRPO,简单任务用标准策略梯度
  • TRPO vs GRPO:LLM 强化学习用 GRPO,通用 RL 任务用 TRPO

10.9 性能优化技巧

提高训练速度:

  1. 减少 CG 迭代数:通常 10 次足够,可以减少到 5-7 次
  2. 减少线搜索回溯:限制最大回溯次数
  3. 使用更小的批量:减少每次更新的计算量
  4. 并行计算:使用多线程计算 FIM-向量乘积

提高样本效率:

  1. GAE:使用 GAE 减少优势估计的方差
  2. 熵正则化:鼓励探索,提高样本效率
  3. 网络容量:适当增加网络容量,提高表达能力
  4. 批量大小:使用较大的批量大小,提高更新稳定性

提高稳定性:

  1. KL 阈值:确保 KL 阈值 δ\deltaδ 合适
  2. 阻尼项:使用合适的阻尼项稳定 CG 算法
  3. 梯度裁剪:防止梯度爆炸
  4. 网络初始化:使用合适的初始化方法

减少计算成本:

  1. 子采样 FIM:使用子采样数据计算 FIM
  2. 近似 FIM:使用对角 FIM 近似(但可能降低性能)
  3. 减少更新频率:不是每批数据都更新,可以累积多批
  4. 使用 PPO:如果不需要理论保证,使用 PPO 更简单

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐