TRPO算法解析

让子弹飞

这俗话说的好呀,这饭要一口一口吃,酒要一口一口喝,路要一步一步走,步子迈大了,喀,容易扯到蛋。
这训练模型呢,也是这个理,欲速则不达,收敛慢并不可怕,可怕的是不收敛,今天要介绍的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埋下了伏笔。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • PPO(Proximal Policy Optimization) 是一种解决 PG 算法中学习率不好确定的问题的...
    臻甄阅读 2,605评论 0 0
  • 1. RL算法的分类 在现代RL空间中绘制精确的,无所不包的算法分类法真的很难,因为算法的模块性没有用树结构很好地...
    博士伦2014阅读 8,855评论 0 4
  • 主题: 为何Policy Gradient有效 将Policy Gradient视为Policy Iteratio...
    Jabes阅读 1,672评论 0 1
  • 1 意义: 人工智能的目标就是最优化:在复杂环境与多体交互中做出最优决策 2 目标: 给定目标函数的最大值(最小值...
    wenju_song阅读 1,246评论 0 0
  • 在2017年的时候,无论是openai或者是deepmind,在深度强化学习领域都取得了重大突破,而能带来这个突破...
    金色暗影阅读 15,380评论 0 3