11.2、信赖域策略优化算法TRPO强化学习-约束优化求解

本文详细介绍了TRPO(TrustRegionPolicyOptimization)强化学习算法,包括理论基础、优化式子的求解过程,特别是针对LunarLander环境的实例,涉及泰勒展开、约束方程的拉格朗日求解和共轭梯度法求解步骤,以及如何通过LineSearch确定步长。
摘要由CSDN通过智能技术生成

基于LunarLander登陆器的TRPO强化学习(含PYTHON工程)

TRPO强化学习算法主要分为3个部分,分别介绍其理论、细节、实现

本文主要介绍TRPO的优化式子的求解

TRPO系列(TRPO是真的复杂,全部理解花费了我半个月的时间嘞,希望也能帮助大家理解一下):
11.1、信赖域策略优化算法TRPO强化学习-从理论到实践
11.2、信赖域策略优化算法TRPO强化学习-约束优化求解
11.3、信赖域策略优化算法TRPO强化学习-运用实践

只需要代码请直接到11.3、信赖域策略优化算法TRPO强化学习-运用实践

其他算法:
07、基于LunarLander登陆器的DQN强化学习案例(含PYTHON工程)

08、基于LunarLander登陆器的DDQN强化学习(含PYTHON工程)

09、基于LunarLander登陆器的Dueling DQN强化学习(含PYTHON工程)

10、基于LunarLander登陆器的Dueling DDQN强化学习(含PYTHON工程)

11、基于LunarLander登陆器的A2C强化学习(含PYTHON工程)
TRPO的LunarLander登陆器强化学习(含PYTHON工程):
11.1、信赖域策略优化算法TRPO强化学习-从理论到实践
11.2、信赖域策略优化算法TRPO强化学习-约束优化求解
11.3、信赖域策略优化算法TRPO强化学习-运用实践
PPO的LunarLander登陆器强化学习(含PYTHON工程):
13、近端策略优化Proximal Policy Optimization (PPO) 算法:从原理到实践
SAC的LunarLander登陆器强化学习(含PYTHON工程):
14、强化学习Soft Actor-Critic算法:推导、理解与实战

参考:【TRPO系列讲解】(五)TRPO_理论推导篇

1、 TRPO的优化式子

11.1、信赖域策略优化算法TRPO强化学习-理论分析中详细介绍了TRPO的理论以及如何将TRPO强化学习问题转化为数学的优化式子的求解问题,要求解的式子为:
max ⁡ θ E s ∼ ρ θ o l d , a ∼ θ o l d [ π θ ( a ∣ s ) π θ o l d ( a ∣ s ) A θ o l d ( s , a ) ] s u b j e c t    t o E s ∼ ρ θ o l d [ D K L ( π θ o l d ( ⋅ ∣ s ) ∥ π θ ( ⋅ ∣ s ) ) ] ≤ δ \begin{array}{l} {\max _\theta }E{_{s\sim{\rho _{{\theta _{old}}}},a\sim\theta_{old} }}\left[ {\frac{{{\pi _\theta }(a\mid s)}}{{{\pi _{{\theta _{old}}}}(a\mid s)}}{A_{{\theta _{old}}(s,a)}}} \right]\\ subject\;to\quad {E_{s\sim{\rho _{{\theta _{old}}}}}}\left[ {{D_{KL}}({\pi _{{\theta _{old}}}}( \cdot \mid s)\parallel {\pi _\theta }( \cdot \mid s))} \right] \le \delta \end{array} maxθEsρθold,aθold[πθold(as)πθ(as)Aθold(s,a)]subjecttoEsρθold[DKL(πθold(s)πθ(s))]δ
这实际上是一个优化问题,我们可以使用迭代法进行求解。

2、 优化式子的泰勒展开

定义优化式子为(单纯为了减少书写):
max ⁡ θ L θ o l d ( θ ) = max ⁡ θ E s ∼ ρ θ o l d , a ∼ θ o l d [ π θ ( a ∣ s ) π θ o l d ( a ∣ s ) A θ o l d ( s , a ) ] s u b j e c t    t o E s ∼ ρ θ o l d [ D K L ( π θ o l d ( ⋅ ∣ s ) ∥ π θ ( ⋅ ∣ s ) ) ] ≤ δ \begin{array}{l} {\max _\theta }{L_{{\theta _{old}}}}(\theta ) ={\max _\theta }E{_{s\sim{\rho _{{\theta _{old}}}},a\sim\theta_{old} }}\left[ {\frac{{{\pi _\theta }(a\mid s)}}{{{\pi _{{\theta _{old}}}}(a\mid s)}}{A_{{\theta _{old}}(s,a)}}} \right]\\ subject\;to\quad {E_{s\sim{\rho _{{\theta _{old}}}}}}\left[ {{D_{KL}}({\pi _{{\theta _{old}}}}( \cdot \mid s)\parallel {\pi _\theta }( \cdot \mid s))} \right] \le \delta \end{array} maxθLθold(θ)=maxθEsρθold,aθold[πθold(as)πθ(as)Aθold(s,a)]subjecttoEsρθold[DKL(πθold(s)πθ(s))]δ

此处需要使用泰勒展开对优化式子进行近似,泰勒公式的基本形式如下(Rn为无穷小项):

f ( x ) = f ( x 0 ) + f ′ ( x 0 ) 1 ! ( x − x 0 ) + f ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 + ⋯ + f ( n ) ( x 0 ) n ! ( x − x 0 ) n + R n R n ( x ) = o [ ( x − x 0 ) n ] \begin{aligned}f(x)=f(x_0)+\frac{f'(x_0)}{1!}(x-x_0)+\frac{f''(x_0)}{2!}(x-x_0)^2+\cdots+\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n+R_n\\R_n(x)=o[(x-x_0)^n]\end{aligned} f(x)=f(x0)+1!f(x0)(xx0)+2!f′′(x0)(xx0)2++n!f(n)(x0)(xx0)n+RnRn(x)=o[(xx0)n]

首先对优化式子的第一个式子 L θ o l d ( θ ) {L_{{\theta _{old}}}}(\theta ) Lθold(θ) θ o l d \theta_{old} θold进行一阶的泰勒展开(由于此处是最大化问题,第一项为常数可以忽略掉):
L θ o l d ( θ ) → ∇ θ L θ o l d ( θ ) ∣ θ = θ o l d ( θ − θ o l d ) L_{\theta_{old}}(\theta)\to\nabla_{\theta}L_{\theta_{old}}(\theta)|_{\theta=\theta_{old}}(\theta-\theta_{old}) Lθold(θ)θLθold(θ)θ=θold(θθold)
对于第二行的不等式约束,我们对其使用二阶泰勒展开(证明参考自然梯度Natural Policy):
D K L ρ o l d ‾ ( π o l d , π n e w ) → 1 2 ( θ − θ o l d ) T A ( θ o l d ) ( θ − θ o l d ) H = A ( θ o l d ) = ∇ θ 2 D K L ρ o l d ‾ ( π o l d , π n e w ) \begin{aligned}\overline{D_{KL}^{\rho_{old}}}(\pi_{old},\pi_{new})\to\frac12(\theta-\theta_{old})^TA(\theta_{old})(\theta-\theta_{old})\\\\H=A(\theta_{old})=\nabla_\theta^2\overline{D_{KL}^{\rho_{old}}}(\pi_{old},\pi_{new})\end{aligned} DKLρold(πold,πnew)21(θθold)TA(θold)(θθold)H=A(θold)=θ2DKLρold(πold,πnew)

由此,整个问题被再次近似(此处的 A ( θ o l d ) A(\theta_{old}) A(θold) H H H是等价的,都代表在 θ = θ o l d \theta=\theta_{old} θ=θold的二阶泰勒展开的导数,证明见自然梯度Natural Policy):
m a x θ [ ∇ θ L θ o l d ( θ ) ∣ θ = θ o l d ⋅ ( θ − θ o l d ) ] subject to 1 2 ( θ − θ o l d ) T A ( θ o l d ) ( θ − θ o l d ) ≤ δ \begin{aligned} &max_{\theta}\left[\nabla_{\theta}L_{\theta_{old}}(\theta)|_{\theta=\theta_{old}}\cdot(\theta-\theta_{old})\right] \\ &\text{subject to}\quad\frac12(\theta-\theta_{old})^TA(\theta_{old})(\theta-\theta_{old})\leq\delta \end{aligned} maxθ[θLθold(θ)θ=θold(θθold)]subject to21(θθold)TA(θold)(θθold)δ

为了方便书写,我们把求导的项用新变量代替:
g T = ∇ θ L θ o l d ( θ ) ∣ θ = θ o l d {g^T} = {\nabla _\theta }{L_{{\theta _{old}}}}(\theta ){|_{\theta = {\theta _{old}}}} gT=θLθold(θ)θ=θold

此外,对max函数取负号,将其转化为求min(一般优化求解都是求min):
min ⁡ θ ′ − g T ( θ ′ − θ ) s . t . 1 2 ( θ ′ − θ ) T H ( θ ′ − θ ) − δ < 0 \begin{aligned}\min_{\theta^{\prime}}-g^T(\theta^{\prime}-\theta)\\s.t.\frac{1}{2}(\theta^{\prime}-\theta)^TH(\theta^{\prime}-\theta)-\delta<0\end{aligned} θmingT(θθ)s.t.21(θθ)TH(θθ)δ<0

3、 约束方程的拉格朗日求解

对于约束的最小化求解问题,此处使用拉格朗日乘子法(高数学过),将其进行转换,转换的详细理论参考:拉格朗日乘子法(二):不等式约束与KKT条件。转换后的方程变为:
方程:
L ( θ , λ ) = − g T ( θ ′ − θ ) + λ ( 1 2 ( θ ′ − θ ) T H ( θ ′ − θ ) − δ ) {\mathcal L}(\theta,\lambda)=-g^{T}(\theta^{\prime}-\theta)+\lambda(\frac{1}{2}(\theta^{\prime}-\theta)^{T}H(\theta^{\prime}-\theta)-\delta) L(θ,λ)=gT(θθ)+λ(21(θθ)TH(θθ)δ)
KKT约束:
{ ∂ L ∂ θ = − g T + λ ( θ ′ − θ ) H = 0 λ ≥ 0 λ ( 1 2 ( θ ′ − θ ) T H ( θ ′ − θ ) − δ ) = 0 1 2 ( θ ′ − θ ) T H ( θ ′ − θ ) − δ ≤ 0. \left\{ \begin{array}{l} \frac{{\partial {\cal L}}}{{\partial \theta }} = - {g^T} + \lambda ({\theta ^\prime } - \theta )H = 0\\ \lambda \ge 0\\ \lambda \left( {\frac{1}{2}{{({\theta ^\prime } - \theta )}^T}H({\theta ^\prime } - \theta ) - \delta } \right) = 0\\ \frac{1}{2}{({\theta ^\prime } - \theta )^T}H({\theta ^\prime } - \theta ) - \delta \le 0. \end{array} \right. θL=gT+λ(θθ)H=0λ0λ(21(θθ)TH(θθ)δ)=021(θθ)TH(θθ)δ0.

对上述的约束条件进行求解,即可得到TRPO的更新表达式:
θ ′ = 2 δ g T H − 1 g H − 1 g + θ \theta^{\prime}=\sqrt{\frac{2\delta}{g^{T}H^{-1}g}}H^{-1}g+\theta θ=gTH1g2δ H1g+θ

4、共轭梯度法求解 H − 1 g {{H^{ - 1}}g} H1g

H − 1 g {{H^{ - 1}}g} H1g非常难求,又需要求逆矩阵还需要和g相乘,在此使用共轭梯度法进行求解。共轭梯度法实际上是求解最小化二次函数的,如:
ϕ ( x ) = 1 2 x T A x − x T b \phi(x)=\frac{1}{2}x^{T}Ax-x^{T}b ϕ(x)=21xTAxxTb
其中 b , x ∈ R n , A ∈ R n × n b,x\in\mathbb{R}^n,A\in\mathbb{R}^{n\times n} b,xRn,ARn×n且假设矩阵 A A A是对称正定的(SPD)。该函数的最小值 x ∗ x^{*} x可以根据一阶最优条件得到,即导数为零
∇ ϕ ( x ∗ ) = A x ∗ − b = 0 \nabla\phi(x^*)=Ax^*-b=0 ϕ(x)=Axb=0
这也意味着最小化 ϕ ( x ) \phi(x) ϕ(x)等价于求解线性方程 A x = b Ax=b Ax=b。此外,在TRPO算法中,由于二次函数的Hessian矩阵是半正定的,该解具有唯一性。

注意,这边求解的x实际上就是 H − 1 g {{H^{ - 1}}g} H1g(b=g,A=H)。共轭梯度法求解的详细过程参考我的另一个博客:最速下降法、梯度下降法、共轭梯度法—理论分析与实践

5、Line Search确定步长

不知道兄弟们发现没有,在TRPO的策略网络的更新中,我们居然没有定义学习率唉。这是因为在训练过程中,学习率是已经给定了,以TRPO的更新式子为例:
θ ′ = 2 δ g T H − 1 g H − 1 g + θ \theta^{\prime}=\sqrt{\frac{2\delta}{g^{T}H^{-1}g}}H^{-1}g+\theta θ=gTH1g2δ H1g+θ
实际上TRPO使用的思路和自然梯度法类似,自然梯度法的更新式子如下:
∇ ~ θ L ( θ ) = F ⁡ − 1 ∇ θ L ( θ ) θ = θ − α ∇ ~ θ L ( θ ) \begin{aligned}\tilde{\nabla}_\theta\mathcal{L}(\theta)&=\operatorname{F}^{-1}\nabla_\theta\mathcal{L}(\theta)\\\\\theta&=\theta-\alpha\tilde{\nabla}_\theta\mathcal{L}(\theta)\end{aligned} ~θL(θ)θ=F1θL(θ)=θα~θL(θ)
因此,在TRPO算法中,其学习率lr为:
α = 2 δ g T H − 1 g \alpha=\sqrt{\frac{2\delta}{g^TH^{-1}g}} α=gTH1g2δ
但是,我们此处使用了太多的近似,理论的方程并不一定是最好的,那我们我们该如何做呢?我们可以选择小于 α \alpha α的学习率多次尝试(如 0. 9 1 α 0.9^1\alpha 0.91α 0. 9 2 α 0.9^2\alpha 0.92α 0. 9 3 α 0.9^3\alpha 0.93α 0. 9 4 α 0.9^4\alpha 0.94α…),直到找到一个能够提升替代优势 L θ o l d ( θ ) {L_{{\theta _{old}}}}(\theta ) Lθold(θ)的学习率

当然,此处的回溯衰减因子和最大的回溯次数都是超参数,在上面的例子中,回溯衰减因子为0.9,如果定义最大的回溯次数是5,那么我们最多尝试到 0. 9 5 α 0.9^5\alpha 0.95α,如果还是无法带来替代优势的提升,就跳过这一次更新了。

这个尝试的过程,被称为Line Search。

6、全部流程图

参考:Trust Region Policy Optimization
在这里插入图片描述

7、代码解析和基于LunarLander登陆器的TRPO强化学习


11.3、信赖域策略优化算法TRPO强化学习-运用实践

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怡步晓心l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值