美文网首页
TRPO算法解析

TRPO算法解析

作者: 金色暗影 | 来源:发表于2021-03-29 23:48 被阅读0次
让子弹飞

这俗话说的好呀,这饭要一口一口吃,酒要一口一口喝,路要一步一步走,步子迈大了,喀,容易扯到蛋。
这训练模型呢,也是这个理,欲速则不达,收敛慢并不可怕,可怕的是不收敛,今天要介绍的TRPO(Trust Region Policy Optimization)算法,正是这样的一个很稳的算法,它对新旧策略施加了一个特殊的约束,从而达到了改进传统Policy Gradient方法的效果。

TRPO算法是由大名鼎鼎的OpenAi科学家John Schulman提出来的(后来那个万金油算法PPO也是他搞的..),他的导师的导师是当年入职百度就要上1000张GPU的名声如雷贯耳的Google大脑三巨头之一的吴恩达..... 说起来吴恩达这个人跟我是有些渊源的...我就是16年的时候无聊刷网易云偶然刷到吴恩达关于机器学习的公开课才像发现新大陆一样进入机器学习领域的..虽然至今没有看完过他任何一集的视频...可能是觉得看视频这种学习方式太低效了..... 所以学机器学习算法,还是看我的文章吧!

言归正传,让观察一下这个算法的名字,不难猜测,所谓的TRPO算法就是:使用Trust Region算法来进行Policy 优化的算法, 实际上确实是如此。

数值优化

因此,要搞懂TRPO,就必须要搞清楚Trust Region是什么。其实跟常见的梯度下降/上升类似,Trust Region也是一类数值优化的方法。在开始讲trust region之前,我们先来看一下原始的policy gradient中所使用的的梯度上升法。

随机梯度上升

在Policy Gradient中,假设Policy的参数是\theta, 我们的目标是找到最优的\theta^* 使得状态价值V_{\theta}(S)的期望最大,于是我们使用随机梯度上升来重复下面两个步骤,来使得随机状态价值沿着梯度方向变大:
g = \frac{\partial V_\theta(s)}{\partial \theta} \tag{1}
\theta_{new} = \theta + \alpha* g \tag{2}

但是这个原始的梯度上升存在一个很大的问题,就是我们很难控制它的学习速率,如果太大,可能会使得参数陷入崩溃的局面,使得训练过程回抖动难以收敛:


改变太大,参数翻车

但是改变太小,又会造成收敛极慢,甚至陷入局部最优无法自拔:


局部最优

并且,在强化学习中,要让学习率适应各种情形是很困难的:


假设针对上面的黄点专门调整了学习率。该区域相对平坦,因此该学习速率应高于平均水平,以获得良好的学习速度。但是,可能会有一个不好的举动让我们从悬崖上掉下去,到了红点的位置。红点处的梯度很高,当前的学习率将触发爆炸性的策略更新。由于学习率对地形不敏感,因此PG将有严重的收敛问题。

从上面Policy Gradient的各种缺陷可以看出,对梯度更新幅度有所限制是有必要的,这也是引入Trust Region的主要原因。

Trust Region

回到上面的优化问题,我们用J(\theta) 来更通用的表示我们想要优化的目标, 我们希望找到一个\theta^* 来让J(\theta) 最大 。
假设N(\theta)\theta 的邻域,\theta'是其中的点, 即:
N(\theta) = \{\theta': \parallel \theta' - \theta \parallel_2 <= \Delta \}
如果我们可以找到一个函数 M(\theta') 在邻域N(\theta) 的范围内近似于J(\theta), 这个N(\theta) 就被称作trust region .

因为在trust region中,M(\theta')J(\theta') 很接近,因此就可以用更好求最大值的M 的最大值来近似J 最大值。

于是Trust region算法就可以表示成这样两个步骤,然后不断重复:

  • 基于当前的\theta_i, 找到 M_i 函数
  • 在trust region中,在M_i上找到新的\theta_{i+1} 使得 M_i的值最大
    trust region

TRPO

理解了trust region,接下来就可以开始着手设计TRPO了。

找近似函数

遵循算法的思想,依样画葫芦... 将上面的优化目标J(\theta) 替换为状态价值 \mathbb{E}_S [V_\pi(S)]:
\begin{align} J(\theta)=\mathbb{E}_S(V_\pi(S)) =& \mathbb{E}_S[\mathbb{E}_{A\sim\pi}[Q_\pi(S,A)]] \\ =& \mathbb{E}_S[\sum_a \pi(a_i|S;\theta_i) *Q_\pi(S,a_i)] \\ =& \mathbb{E}_S[\sum_a \pi(a|S;\theta_{i-1}) * \frac{ \pi(a_i|S;\theta_i)}{ \pi(a_i|S;\theta_{i-1})} *Q_\pi(S,a_i)] \\ =& \mathbb{E}_S[\mathbb{E}_{A \sim \pi(a|S;\theta_{i-1})}[\frac{ \pi(A|S;\theta_i)}{ \pi(A|S;\theta_{i-1})} *Q_\pi(S,A)] ]\\ \end{align}
显然,上面的期望没法求最大值,于是我们使用蒙特卡洛近似,让agent使用当前的策略\pi_{\theta_{i-1}}与环境交互得到一个trajectory:
s_1,a_1,r_1,s_2,a_2,r_2,...,s_n,a_n,r_n
就可以用随机采样回报g = r_1+\gamma r_2 + \gamma^2 r_3+...+\gamma^{n-1} r_n来近似Q_\pi(S,A) ,用随机采样的观察s_i来作为转移状态,为了更稳定,我们可以取均值,于是就得到了一个J(\theta)的近似函数M(\theta):
M(\theta) = \frac{1}{n} \sum^n_{i=1}\frac{ \pi(a_i|s_i;\theta)}{ \pi(a_i|s_i;\theta_{last})}*g_i
回顾一下上面trust region中对于函数M的限定,它得满足新的\theta 在旧\theta_{last} 附近,那么要如何保证呢? 拍下脑袋就能有两个很容易想到的思路:

  • 新旧\theta 的二范数小于某个合适的值 \Delta
  • \pi(·|s_i;\theta)\pi(·|s_i;\theta_{latest}) 的KL散度小于某个合适的值 \Delta

到这里第一步就完成了,下面开始第二步。

求最大值

但是要怎么求M(\theta)这玩意的最大值呢???
感觉瞬间就懵逼了。不会不要紧,肯定会有数学大佬会呀,赶紧去找找数值优化的方法,总归能找到的....
论文里用了一种被称之为MM算法(我们熟悉的EM算法可以看作是MM的特例)的优化方法,这个算法推导起来有点复杂,这里就不细说了,有兴趣自己去了解,或者等我下次单独开一篇来介绍一下MM 算法,总之我们通过它来求解约束范围内的最大值,然后一步一步优化\theta 最终得到一个好的policy。

总结

TRPO实际上就是使用了Trust Region算法来进行策略的优化,相对的传统的Policy Gradient则是用的随机梯度上升。正因为用了Trust Region,因此TRPO的训练相对稳定,而且学习能力更强,但是其中的优化过程计算复杂,比较耗算力...这也为之后的PPO埋下了伏笔。

相关文章

  • TRPO算法解析

    这俗话说的好呀,这饭要一口一口吃,酒要一口一口喝,路要一步一步走,步子迈大了,喀,容易扯到蛋。这训练模型呢,也是这...

  • RLLAB 中 TRPO 算法

    Neil Zhu,简书ID Not_GOD,University AI 创始人 & Chief Scientist...

  • 深入理解TRPO和PPO算法

    最近在整理电脑文件,看到一份当初给同事讲解TRPO算法原理时写的PPT,感觉要比先前那篇写的更加清楚明白,加之这几...

  • Trust Region Policy Optimization

      本文是自己的TRPO算法学习笔记,在数学原理推导核心部分附有自己的理解与解释。整篇文章逻辑清晰,思路顺畅。有想...

  • 学习资料汇总

    GeoHash核心原理解析 GeoHash算法学习讲解、解析及原理分析

  • 算法 | 解析算法

    【算法思想】 找出问题的条件与结果之间的数学表达式,再通过表达式的计算来实现问题求解。 【算法实例】 输入已知三角...

  • 共识算法:Raft

    共识算法:RaftRaft 官网Raft 原理动画 (推荐看看Raft 算法解析图片来源

  • VPG && TRPO && PPO

    PPO(Proximal Policy Optimization) 是一种解决 PG 算法中学习率不好确定的问题的...

  • 【ICLR 2018】模型集成的TRPO算法【附代码】

    论文题目:model-ensemble trust-region policy optimization 所解决的...

  • LRU Cache理解

    LRU Cache 1. 概念解析,LRU Cache算法 Lru Cache算法就是Least Recently...

网友评论

      本文标题:TRPO算法解析

      本文链接:https://www.haomeiwen.com/subject/limthltx.html