这篇论文的作者星光闪耀,都是大牛级人物,而且是最顶尖的那种。第一作者是Schulman(cs294课程的主讲人)、Levine和Abbeel也在作者名单里面。
论文首先通过一些surrogate目标函数来保证较大的步长来进行策略优化和提升,然后通过一系列的近似来推出理论公式和实际工程可行的算法,这就是鼎鼎大名的TRPO算法
论文通过一系列测试说明TRPO算法能够学到复杂的策略比如游泳,跳和走,以及通过图像学习Atari游戏。
下面这个公式就是我们的目标函数,表明的是一个策略代表的累积收益。我们的任务是找到一个策略迭代的途径似的这个函数不断迭代直到取得最大值。
从这个公式继续推导可以看出,在从一个策略优化到新的策略的时候,只要保证每个状态S下,保持一个非负的advantage,新的策略肯定是更优的。
这里最难的地方在于
是没法采样,而且很难计算优化掉的,所以论文采用了下面的surrogate函数
下面的公式4表明通过梯度来迭代优化我们选的surrogate函数,就可以迭代优化我们的目标函数,但是多大的步长合适是没法保证的
参考以前这方面论文的一些结论,和自己的证明,得出下面的理论:
到这里我们可以使用minorization-maximization (MM) algorithm来通过迭代不断优化L的值,目标函数就可以同步得到优化。
TRPO算法就是上面这个公式的近似,但是如果通过一个惩罚系数,我们没法找到最合适的步长。在算法中,我们使用计算新的策略和老的策略之间的kl散度(也就是他们的距离),只要保证他们距离在一个合理范围内,我们就可以保证是在一个安全的范围中进行策略更新。公式更新如下:
展开L函数,
根据上面的公式我们基本就可以通过采样进行迭代优化了。
KL散度是可以通过Fisher information matrix来表达的,下面的公式没有明确出现在论文里(在附录中有说明),是在Abbeel的技术演讲中给出的。个人感觉更形象说明问题:
我尝试用我的理解说明一下。我们期望是按照最陡峭的方向来迭代更新我们的网络,数据效率最高,收敛最快。要解决的问题有两个,第一个是梯度方向,第二个是优化步长。梯度方向这篇论文讲的不多,但是他提到另外一篇论文讲nature gradient的,基本思想是说我们按照采样求出的梯度方向并不是最好的方向,这也比较容易理解,受采样和参数误差的影响,在深度学习中,除了最常见的Stochastic gradient descent以及Mini-batch gradient descen,还有Momentum、Nesterov accelerated gradient、Adagrad、RMSprop以及Adam等各种各样的梯度下降方法。
策略梯度方向的计算是通过这个公式Ax=g来确定, 其中A就是fisherinformation matrix,方向确定了,步长确定就是这篇论文的中心了,在深度学习中,步长调整也有一些策略,比如刚刚开始大一点,到以后小一点,既保证了收敛速度,又尽可能减少震荡。在策略梯度中,步长选的不合适后果严重的多,上一次迭代还是在山峰,下一次迭代变成了悬崖下,而且选择一个非常差的策略后,我们会在这个策略下进行采样,并没有确保的手段使得我们能重新回到原来的那个好的策略,所以策略梯度中,步长问题是非常重要的一个问题,论文主要的思想在保证安全的情况下最大化的提高步长,就是我们上面看到的一系列的公式推导和下面的这个结论了。保证theta的两次迭代的距离不超过一个参数,保证下次迭代的策略仍然是安全的,当取最大值的时候就是安全的最大更新步长。
论文的算法部分主要是这些了,另外就是如何采样和估算Q,论文提出了两种办法:
最后提一句,目前为止,在openAI的gym的测试环境中,表现最好的就是TRPO-GAE算法(2016年的论文,在这篇论文基础上有了进一步的演进),后面的计划中也会读这篇论文。