TRPO(Trust Region Policy Optimization)(1)

    最近是需要看这篇论文的。文章来源于伯克利。

    论文主要是与策略优化相关。对于策略优化,大致可以分为基于模型的与无模型的。基于模型的策略优化主要是传统的优化,大体是利用传统控制器配合上监督学习的方法做策略搜索,可以认为是指导策略搜索。无模型的策略搜索方式主要是与统计相关的与数学有较大联系的搜索方法,包括随机策略搜索方法和确定策略搜索方法,随机策略搜索方法包括策略梯度方法、统计学习方法、路径积分方法。其中,TRPO就是属于策略梯度方法的。而确定策略搜索方法就是DDPG方法。

    我觉得可能很多时候策略的优化是可以用很久的计算做到的,无论策略到底有多么复杂,但是在现有的很复杂的策略搜索例子中,例如围棋,国际象棋等,这些都有在为降低计算量而努力做新的算法,那么问题就是确实在这一方面我们是需要去降低计算量的。

    文章在摘要中提到,这个策略优化方法是与其他优化方法不一样的,他能保证策略的优化总是朝着变好的方向在进步,显然这是很重要的一点,这意味着策略总是会越来越好。当然,这是在做了合理的近似后得到的结果。这个算法类似于natural策略梯度方法,对于大型的非线性策略优化例如神经网络。算法也被证明在机器人的某些动作上能够表现很好,例如机器人的游泳,跳跑等动作。

    现在在策略优化方面主要有三种方法,一是策略迭代方法,通过在当前策略下的值函数求取以及对策略的提升迭代来优化策略。第二种是策略梯度方法,利用通过采样得到的策略轨迹得到的报酬梯度,通过这个梯度来优化策略的参数。第三种是衍生物-自由策略优化方法,可以简单理解为无策略梯度的情况下做的策略优化方法,例如cross-entropy(CEM)以及covariance matrix adaptation(CMA)方法,虽然这两个方法无法直接得到报酬函数,但是依然能够做出优化。CEM和CMA方法被用作很多问题的解决办法,主要是因为这两个方法既可以实现比较好的结果,并且他们也比较简单,也容易用代码实现。例如在approximate dynamic programming(ADP)问题中,stochastic optimization方法就几乎可以说是最好的办法。对于连续控制的问题,CMA方法就可以使用,并且可以应用在一些比较有挑战性的问题上,但要求这个问题需要是低维的,并且需要提供一些手工设计的策略来作为策略的搜索空间。文章还提到,基于梯度的方法是没办法总是表现的比无梯度的方法好的,因为前者总是要求更严格的条件。连续的基于梯度的方法对于一些函数的学习是很有用的,这些函数往往带有大量的参数,利用梯度的方法可以得到最优的参数,把这种方法推广到强化学习上,可以很有效的训练复杂且强大的策略。(那么为什么不用这种方法来求取策略呢?)

    文章前面的一部分先证明了最小化一个certain surrogate objective function可以保证我们的策略是在往提高的方向进展的,尽管这个进展可能很慢。然后文章给出了一个理论上允许的近似,从而可以得到一个更为实际的方法,这个方法就是TRPO(trust region policy optimization),这个方法有两个变种,一个是使用了single-path方法,另一个是使用了vine方法,第一种方法可以被用到无模型的问题上,第二种方法需要系统恢复到特殊的状态。当然,这些仅仅在仿真中实现过。这个算法可以优化有着成千上万参数的非线性策略。介绍的最后部分当然是讲他们的方法多么好,可以用在很多机器人的动作策略上,甚至可以用来玩atari games directly from raw images。

    接下来算是算法的发展与最后成型了。首先是介绍一个基本的MDP,这个MDP是无限世界的,也就是infinite-horizon,这里面包括了普通MDP的基本要素,包括报酬,转移概率,首状态概率,折扣率等等。这里面采用折扣报酬作为最终的值函数评定标准。这里面存在一个优势函数是文章中很难懂的一个点,优势函数的本意是取状态动作对所对应的Q值与对应的状态的值函数的差来表征这个动作的好坏,显然,如果动作的Q值是大于状态值的话,那么这个动作就是高于大部分的动作的。但是Q值的计算需要涉及到后续状态以及后续状态的动作选择问题,这个时候后续状态的动作选择是要依赖旧的策略还是新的策略呢?如果依赖的是旧的策略,那么只要在做这一个操作之前,把旧策略对应的Q值全部都算出来,在考虑新策略的时候,把新策略中遇到的状态动作对的Q值取出,就可以求出优势函数值了。我原来以为用旧策略的Q值来求取优势函数是不合适的,因为这样子就不能知道新策略比旧策略好多少,但后来想想我之前的想法可能有错误。这是一个策略优化的问题,实际上是对旧策略做一定的改进,策略依然是在旧策略的基础上的,我觉得比较好理解的一个说法是,新策略实际上只是把旧策略中Q值比较大的状态动作对的出现几率提高,这样子就可以让原有的策略得到改进。

    接下来,文章开始把优势函数展开,然后需要利用一个技巧去化简这么一个式子。

你可能感兴趣的:(Generative,Adversarial,Networks)