从 TRPO 到 PPO(理论分析与数学证明)
本文首发于行者AI
引言
一篇关于强化学习算法的理论推导,或许可以帮助你理解 PPO 算法背后的原理,从而找到改进 PPO 算法的灵感...
马尔可夫决策过程由六个元素构成。其中是一个有限的状态空间集合,是一个有限的动作空间集合。 表示状态转移概率函数,例如表示的含义就是在状态处执行动作到达的状态为的概率为 0.6。是奖励函数,是初始状态分布概率函数,是折扣因子。
让表示一个随机策略函数,例如表示在状态处选择动作的概率为 0.5。令表示基于策略的长期期望折扣奖励:$\eta(\pi) = \mathbb{E}{s_0, a_0,\ldots}[\sum\limits{t=0}^{\infty}\gamma^t r(s_t)]s_0\sim \rho_0(s_0), a_t\sim \pi(a_t|s_t), s_{t+1}\sim P(s_{t+1}|s_t,a_t)$。
下面给出状态价值函数、状态动作价值函数、优势函数的定义:
(1)状态动作价值函数:$$Q_\pi(s_t,a_t) = \mathbb{E}{s{t+1},a_{t+1},\ldots}[\sum\limits_{l=0}^\infty\gamma^lr(s_{t+l})]$s_ta_t$后获得的长期期望折扣奖励。
(2)状态价值函数:$$V_\pi(s_t) = \mathbb{E}{a_t, s{t+1},\ldots}[\sum\limits_{l=0}^\infty\gamma^lr(s_{t+l})] = \mathbb{E}{a_t}[Q\pi(s_t, a_t)]$s_t$开始获得的长期期望折扣奖励。
(3)优势函数
:
表示的是在状态处,动作相对于平均水平的高低。
强化学习的目标就是最大化长期期望折扣奖励 $$\eta(\pi) = \mathbb{E}{s_0, a_0,\ldots}[\sum\limits
{t=0}^{\infty}\gamma^t r(s_t)]$\pi\theta\pi(s,a) = \pi_\theta(s,a)\theta$的更新公式为
这样的更新公式容易导致以下问题:如果步长选取不合适,那么会导致比差,当使用进行采样学习的时候,采取到的样本就是比较差的样本,再继续使用不好的样本对参数进行更新,得到的是更加不好的策略,从而导致恶性循环。TRPO 算法解决的问题就是:如何选择一个合适的更新策略,或是如何选择一个合适的步长,使得更新过后的策略一定比更新前的策略好呢?
1.TRPO 的理论分析
1.1 不同策略的长期期望折扣奖励之间的关系
先来看一下基于策略的长期折扣奖励 $$ \eta({\pi}) = \mathbb{E}{s_0,a_0,\ldots}[\sum\limits{t=0}^{\infty}\gamma^t r(s_t)]$\tilde{\pi}\eta(\tilde{\pi})\eta(\pi)$\eta(\tilde{\pi}) = \eta(\pi) + \mathbb{E}{s_0,a_0,\ldots\sim\tilde{\pi}}[\sum\limits{t=0}^\infty \gamma^t A_{\pi}(s_t,a_t)]\ \ \ \ \ \ \ (3.1)$A_\pi(s_t,a_t)A_\pi(s_t,a_t) = Q_\pi(s_t,a_t) - V_\pi(s_t)$。(证明过程见文章后面附录证明 4.1)。
上述公式要注意的点是表示轨迹中的状态和动作都是基于策略采样得到的,而表示的是策略的优势函数。
为了方便公式的书写和后续求导的计算,定义
则公式可以改写为:
证明过程见文章后面附录证明 4.2。
1.2 替代函数的建立
再来回顾一下我们在背景中提出的目标:找到一个合适的步长,使得每一个更新得到的新的策略要比更新前的策略好,体现在公式上就是要求。
由于公式中的对有强烈的依赖性,但是在更新之前我们还不知道策略的具体形式
,所以我们考虑找到一个的替代函数:
这个替代函数的作用是什么呢,可以帮助我们得到函数的哪些性质呢?把策略表示为带有参数的随机策略,给出下面定理:与在处一阶近似,用公式表示为:$$\left{\begin{aligned}L_{\pi_{\theta_0}}(\pi_{\theta_0})& = \eta(\pi_{\theta_0})\\nabla_{\theta}L_{\pi_{\theta_0}}(\pi_\theta)|{\theta=\theta_0}& = \nabla\theta\eta(\pi_\theta)|_{\theta=\theta_0}\\end{aligned}\right.$$证明过程见文章后面附录证明 4.3。
上述公式的第二个等式可以告诉我们:在附近,的曲线的变化趋势相同,因为一阶导数的意义就是曲线的变化趋势。又因为这两个函数在处的值相等(公式的第一个等式),所以在的附近,可以通过优化来达到优化的目的,注意是:的附近!!!附近!!!下面给出一个一阶近似的例子:
如图所示:函数 与 函数在处是一阶近似的,即, ,所以这两个函数的曲线的变化趋势在处是近乎相同的。
用来表示更新前的策略,定义我们采用一种软更新的方式对策略进行更新,更新公式为
其中就表示更新之后的策略,为更新步长。
部分读者在阅读到这里的时候可能会产生以下疑问:为什么不直接把直接当作更新之后的策略呢?不是可以推导出吗?
解答:因为这是一种迭代更新方式,只是给出了一个可以优化的方向,我们要做的是将向的那个方向迭代,而不是直接将当作更新之后的策略;另外并不可以直接推导出,因为并不一定在的附近!
1.3 TRPO 算法的推出
再来回顾一下我们最初的目的:找到一个合适的步长,使得每一个更新得到的新的策略要比更新前的策略好。那么使用软更新方式得到的策略是否比更新前的策略好呢,换句话说,是否成立呢?其实给我们的优化提供了方向,我们的关键就在于如何选择合适的步长使得更新之后的策略一定是比更新之前的策略好。再思考一下,其实一定有, 因为是从朝着的方向迭代的,并且。再回想一下前面我们说:在附近,等价于, 所以我们只需要把限制在附近即可,可以通过放在惩罚项或者约束上进行限制。如何限制两个策略的差异性呢,可以使用两个策略的 KL 散度:,因为 KL 散度是用来度量两个概率分布相似度的指标。其实从这个分析我们就可以得到最终的 TRPO 算法了,原论文中给出了严格的数学推导,我们大概介绍一下思路(可以不看):
设是按照更新公式得到的新策略,从论文[1]中可以得到下面不等式成立:
其中 $\epsilon = max_s|\mathbb{E}{a\sim \pi'(a|s)}[A\pi(s,a)]|$。
我们可以令 $\alpha = D^{max}{TV}(\pi
{old}, \pi_{new})$, 进而成立:
其中。再根据不等式:,令 成立:
其中。
给出下面策略更新算法:
假设我们根据上面这个算法得出一个策略序列,下面证明该策略序列是越来越好的,即。
令, 则成立:
等式成立是因为当时,。
所以成立:
所以在第 i 次迭代时,可以作为的替代函数,从而得到的策略序列是越来越好的。进而每一个更新过后的策略都好于更新前的策略。目的达到。如果这个数学证明没看懂没有关系,可以直接通过之前的语言分析理解 TRPO 算法。
为了方便将写作, 在接下来的分析中,我们都考虑带有参数的策略。通过之前的分析,从而我们可以通过优化下面的式子来达到优化的目的:
但是有 C 作为惩罚系数,会导致每次的的值特别小,从而导致更新的步子很小,降低更新速度,所以我们考虑将惩罚项变为约束项:
用语言理解就是在以为球(圆)心,以为半径的区域中搜索可以提高(等价于提高)的策略。这就是 TRPO 算法。
注意到, 其中相对于来说是常数,可以去掉,因此上述公式变为
1.4 重要度采样
在最开始推导公式的时候,我们当时说了等号右边的是基于策略采样的,但是在真实世界中,因为在更新前是未知的,所以我们没法基于采样,所以我们考虑使用重要度采样,假设我们使用策略进行采样,那么我们的优化函数要有所变化:$$\begin{aligned}\sum\limits_s\rho_{\theta_{old}}(s)\sum\limits_a\pi(a|s)A_\pi(s,a)&=\sum\limits_s\rho_{\theta_{old}}(s)\sum\limits_aq(a|s)\frac{\pi_\theta(a|s)}{q(a|s)}A_{\theta_{old}}(s,a)\&=\sum\limits_s\rho_{\theta_{old}}(s)\mathbb{E}{a\sim q}[\frac{\pi\theta(a|s)}{q(a|s)}A_{\theta_{old}}(s,a)]\&=\mathbb{E}{s\sim \rho{\theta_{old}},a\sim q}[A_{\theta_{old}}(s,a)]\end{aligned}$$
所以最终 TRPO 的更新算法变为:$$\begin{aligned}maximize_\theta&\ \ \mathbb{E}{s\sim \rho{\theta_{old}},a\sim q}[A_{\theta_{old}}(s,a)]\subject\ \ to&\ \ D_{KL}(\theta_{old}, \theta)\le \delta\end{aligned}$s\rho_{\theta_{old}}\rho_{\theta_{old}}(s)a\theta_{old}saqq(a|s)\pi_{\theta_{old}}(a|s)q(a|S)$。
2. PPO 算法的理论分析
2.1 TRPO 算法的局限性
但是采样策略真的可以任意吗?太任意会出现什么问题呢?我们来看下面这个例子:
如图所示,是真实的分布概率,是采样时候使用的概率,显然二者的差异很大。设曲线交点的横坐标为,所以在采样的时候,我们大多采到的是的点,因为在正半轴的概率值更大,所以我们最终得到的的值为正值,但是真实的状况是,大多分布在负半轴,真实的应该为负值,这就是由于采样概率和真实概率差距过大导致的误差。
所以我们还得限制采样策略和更新策略的相似度,使得他们尽可能的相像,这就是 PPO 算法要做的事情了。
2.2 PPO 算法
第一种思路:记得我们在分析 TRPO 算法中,使用了 KL 散度限制了策略和策略的相似度,使得他们两个的差距不能太大,所以我们考虑直接用当作采样策略,所以这就同时限制了采样策略和策略的差距,一举两得,这就得到了 PPO 算法:$$\begin{aligned}maximize_\theta&\ \ \mathbb{E}{s,a\sim \theta{old}}[A_{\theta_{old}}(s,a) - \beta D_{KL}(\theta_{old}, \theta)]\end{aligned}$\rho(s)a\theta_{old}$的。
2.3 PPO2 算法
第二种思路:在优化公式中对和进行限制,采用了截断函数,当两个函数的比值过大时,用截断,当两个函数的比值过小时,采用截断。PPO2 算法如下:$$\begin{aligned}maximize_\theta&\ \ \mathbb{E}{s\sim \rho{\theta_{old}},a\sim q(a|s)}min(\frac{\pi_\theta(a|s)}{q(a|s)}A_{\theta_{old}}(s,a), clip(\frac{\pi_\theta(a|s)}{q(a|s)}, 1-\epsilon, 1+\epsilon)A_{\theta_{old}}(a|s))\end{aligned}$q(a|s)\pi_{\theta_{old}}(a|s)q(a|s)$\begin{aligned}maximize_\theta&\ \ \mathbb{E}{s,a\sim \theta{old}}min(\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)}A_{\theta_{old}}(s,a), clip(\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)}, 1-\epsilon, 1+\epsilon)A_{\theta_{old}}(a|s))\end{aligned}$$
3.参考文献
[1] Kakade,Sham and Langford,John. Approximately optimal approximate reinfocement learning(https://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=EAB75A180B3AE59A7A516BF93A00863C?doi=10.1.1.7.7601&rep=rep1&type=pdf). In ICML, volume2,pp.267-247,2002.
[2] R.Sutton, D.McAllester, S.Singh, and Y.Mansour. Policy gradient methods for reinforcement learning with function approximation(https://homes.cs.washington.edu/~todorov/courses/amath579/reading/PolicyGradient.pdf). Neural Information Processing Systemsm,13,2000.
[3] J.Schulman, S.Levine, P.Moritz, M.I.Jordan, and P.Abbeel."Trust region policy optimization"(https://arxiv.org/abs/1502.05477). In: CoRR, ans/1502.05477(2015).
[4] Proximal Policy Optimization Algorithms](https://arxiv.org/abs/1707.06347), Schulman et al. 2017
4.附录证明
4.1 证明:$\eta(\tilde{\pi}) = \eta(\pi) + \mathbb{E}{s_0,a_0,\ldots\sim\tilde{\pi}}[\sum\limits{t=0}^\infty\gamma^t A_\pi(s_t,a_t)]$
$$\eta(\pi) = \mathbb{E}{s_0, a_0,\ldots}[\sum\limits{t=0}^{\infty}\gamma^t r(s_t)] = \mathbb{E}[V_\pi(s_0)]$$$$\begin{aligned}\mathbb{E}{s_0,a_0,\ldots\sim\tilde{\pi}}[\sum\limits{t=0}^\infty\gamma^t A_\pi(s_t,a_t)] &=\mathbb{E}{s_0,a_0,\ldots\sim\tilde{\pi}}[\sum\limits{t=0}^\infty\gamma^t(Q_\pi(s_t,a_t)-V_\pi (s_t))]\&=\mathbb{E}{s_0,a_0,\ldots\sim\tilde{\pi}}[\sum\limits{t=0}^\infty\gamma^t(r(s_t)+\gamma V_\pi (s_{t+1})-V_\pi (s_t))]\&=\mathbb{E}{s_0,a_0,\ldots\sim\tilde{\pi}}[-V\pi(s_0) + \sum\limits_{t=0}^\infty\gamma^t r(s_t)]\&=-\mathbb{E}{s_0}[V\pi(s_0)] + \mathbb{E}{s_0,a_0,\ldots\sim\tilde{\pi}}[\sum\limits{t=0}^\infty\gamma^t r(s_t)]\&=-\eta(\pi) + \eta(\tilde{\pi})\end{aligned}$$
4.2 证明:
$$\begin{aligned}\eta(\tilde{\pi}) &= \eta(\pi) + \mathbb{E}{s_0,a_0,\ldots\sim\tilde{\pi}}[\sum\limits{t=0}^\infty \gamma^t A_{\pi}(s_t,a_t)]\&=\eta(\pi) + \sum\limits_{t=0}^\infty\sum\limits_sP(s_t=s|\tilde{\pi})\sum\limits_a\tilde{\pi}(a|s)\gamma^tA_\pi(s,a)\&=\eta(\pi) + \sum\limits_s\sum\limits_{t=0}^\infty\gamma^tP(s_t=s|\tilde{\pi})\sum\limits_a\tilde{\pi}(a|s)A_\pi(s,a)\&=\eta(\pi) + \sum\limits_s\rho_{\tilde{\pi}}(s)\sum\limits_a\tilde{\pi}(a|s)A_{\pi}(s,a)&br;\end{aligned}$$
4.3 证明:
$$\left{\begin{aligned}L_{\pi_{\theta_0}}(\pi_{\theta_0})& = \eta(\pi_{\theta_0})\\nabla_{\theta}L_{\pi_{\theta_0}}(\pi_\theta)|{\theta=\theta_0}& = \nabla\theta\eta(\pi_\theta)|{\theta=\theta_0}\\end{aligned}\right.$$$$L
\pi(\tilde{\pi}) = \eta(\pi) + \sum\limits_s\rho_\pi(s)\sum\limits_a\tilde{\pi}(a|s)A_\pi(s,a)$\tilde{\pi} = \pi$时:
对于每一个有 $$\begin{aligned}&\sum\limits_a\pi(a|s)A_\pi(s,a)\=&\mathbb{E}a[A\pi(s,a)]\=&\mathbb{E}a[Q\pi(s,a) - V_\pi(s)]\=&\mathbb{E}a[Q\pi(s,a) - \mathbb{E}a[Q\pi(s,a)]]\=&\mathbb{E}[Q_\pi(s,a)] - \mathbb{E}a[\mathbb{E}a[Q\pi(s,a)]]\=&\mathbb{E}[Q\pi(s,a)] - \mathbb{E}[Q_\pi(s,a)]\=& 0\end{aligned}$\mathbb{E}_a[\mathbb{E}a[Q\pi(s,a)]]\mathbb{E}a[Q\pi(s,a)]\mathbb{E}a[Q\pi(s,a)]$的结果与 a 无关,相当于一个常数,所以再对 a 求期望的话,相当于对常数求期望,等于常数本身。
再证明公式的第二个等式:$\nabla_{\theta}L_{\pi_{\theta_0}}(\pi_\theta)|{\theta=\theta_0} = \nabla\theta\eta(\pi_\theta)|_{\theta=\theta_0}$
我们有:
两边对求导(注意任何和有关的式子在对求导的时候都视为常数)得:
进而成立:$$\nabla_\theta L_{\pi_{\theta_0}}(\pi_\theta)|\theta = \theta_0 = \sum\limits_s\rho_{\pi_{\theta_0}}(s)\sum\limits_a\nabla_\theta\pi_\theta(a|s)|{\theta = \theta_0}A{\pi_{\theta_0}}(s,a)$$
由论文[2]可知:
又因为
上述推导过程中第一行到第二行是因为与无关,所以可以提到的前面。第二个式子到第三个式子是因为求和的导数等于导数的求和。第三个式子到第四个式子是因为对于每个来说都成立:,然后 1 对求导等于 0,即。
所以可得:
进而成立:$$\begin{aligned}\nabla_\theta\eta(\pi_\theta)|{\theta = \theta_0}&=\sum\limits_s\rho{\pi_{\theta_0}}(s)\nabla_{\theta}\pi_\theta(a|s)|{\theta = \theta_0}A{\pi_{\theta_0}}(s,a) = \nabla_\theta L_{\pi_{\theta_0}}(\pi_\theta)|_{\theta=\theta_0}\end{aligned}$$命题得证。
我们是行者 AI,我们在“AI+游戏”中不断前行。
前往公众号 【行者 AI】,和我们一起探讨技术问题吧!
版权声明: 本文为 InfoQ 作者【行者AI】的原创文章。
原文链接:【http://xie.infoq.cn/article/1564c2d09df05cae9d524ee6d】。文章转载请联系作者。
评论