强化学习算法下(TRPO)
置信域策略优化(TRPO)
6 实用算法
在此,我们基于上述思想提出两种实用的策略优化算法,它们分别采用前一节中的单路径采样或藤蔓采样方案。这些算法重复执行以下步骤:
-
使用单路径或藤蔓采样过程收集一组状态-动作对及其蒙特卡洛估计的QQQ值。
-
通过对样本求平均,构建式(14)中的目标函数和约束的估计。
-
近似求解此约束优化问题以更新策略的参数向量θ\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)N1n=1∑N∂θi∂θj∂2DKL(πθ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)N1n=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∂2DˉKL(θold,θ)
- 两种方法:
- 经验 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 的梯度协方差
- 需要存储所有轨迹的策略梯度
- 解析 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∂2DKL(πθ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 +λ1A(θ 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αmaxs,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)∣≤α⋅2maxs,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αmaxsAˉ(s)≤4α(1−(1−α)t)maxs∣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αsmaxAˉ(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αmaxs,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)maxs,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,并定义ϵ=maxs,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∑∞γtEτ∼π[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 }π满足maxsDTV(π(⋅∣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 \alphasmaxDTV(π(⋅∣s)∥π(⋅∣s))≤α,那么我们可以定义一个具有适当边缘分布的α\alphaα耦合策略对(π,π~)\left( {\pi ,\widetilde{\pi }}\right)(π,π)。在式45中取α=maxsDTV(π(⋅∣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α=smaxDTV(π(⋅∣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)∣⋅maxa∣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)
其中最后一行使用了总变差散度的定义以及ϵ=maxs,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} γ2rGΔ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∑KNk。μ\muμ的各分量通过对输入sss应用神经网络,然后对每个切片应用softmax算子计算得到,从而为每个因子生成归一化概率。
10 总结与理解要点
10.1 TRPO 核心思想总结
TRPO 的核心创新:
- 单调改进保证:理论上保证每次更新都能改进策略性能(或至少不降低)
- 替代目标函数:使用局部近似 L(θold,θ)L(\theta_{\text{old}}, \theta)L(θold,θ) 替代难以优化的真实性能 η(θ)\eta(\theta)η(θ)
- KL 散度约束:限制策略更新幅度,避免过大更新导致性能下降
- 高效求解:使用共轭梯度算法,无需显式构建 Fisher 信息矩阵
- 线搜索:确保实际性能改进和 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 综合对比
| 特性 | TRPO | DQN | DDPG | PPO |
|---|---|---|---|---|
| 策略类型 | 随机策略 | 确定性策略(ϵ\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 实践建议
训练技巧:
- 从简单开始:先在简单环境上验证实现
- 监控训练:观察训练曲线、KL 散度、替代目标等
- 调整超参数:根据任务特点调整 KL 阈值、CG 迭代数等
- 保存检查点:定期保存模型,避免训练中断丢失
调参建议:
- KL 散度阈值:从 0.01 开始,如果训练不稳定则减小
- 共轭梯度迭代数:通常 10 次足够,增加迭代数可能提高精度但计算成本高
- 阻尼项:通常 0.01,用于稳定共轭梯度算法
- GAE 参数:通常 0.95,平衡偏差和方差
常见问题:
- 训练不稳定:减小 KL 阈值、增加阻尼项、检查网络初始化
- 不收敛:检查奖励函数、增加探索、调整网络结构
- 性能不佳:检查超参数、增加训练时间、尝试不同网络结构
- 计算慢:减少 CG 迭代数、减少线搜索回溯次数、使用更小的批量
调试技巧:
- 监控关键指标:
- KL 散度:应该接近但不超过阈值 δ\deltaδ
- 替代目标改进:应该持续改进
- 实际性能改进:确保真实性能也在改进
- 共轭梯度收敛:观察 CG 算法的收敛情况
- KL 散度分析:
- KL 散度过小:更新过于保守,可以增大阈值
- KL 散度过大:可能违反约束,需要减小步长
- KL 散度波动大:检查线搜索实现
- 共轭梯度调试:
- 如果 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 性能优化技巧
提高训练速度:
- 减少 CG 迭代数:通常 10 次足够,可以减少到 5-7 次
- 减少线搜索回溯:限制最大回溯次数
- 使用更小的批量:减少每次更新的计算量
- 并行计算:使用多线程计算 FIM-向量乘积
提高样本效率:
- GAE:使用 GAE 减少优势估计的方差
- 熵正则化:鼓励探索,提高样本效率
- 网络容量:适当增加网络容量,提高表达能力
- 批量大小:使用较大的批量大小,提高更新稳定性
提高稳定性:
- KL 阈值:确保 KL 阈值 δ\deltaδ 合适
- 阻尼项:使用合适的阻尼项稳定 CG 算法
- 梯度裁剪:防止梯度爆炸
- 网络初始化:使用合适的初始化方法
减少计算成本:
- 子采样 FIM:使用子采样数据计算 FIM
- 近似 FIM:使用对角 FIM 近似(但可能降低性能)
- 减少更新频率:不是每批数据都更新,可以累积多批
- 使用 PPO:如果不需要理论保证,使用 PPO 更简单
更多推荐
所有评论(0)