这个文章是从这个网页搬来的:https://zhuanlan.zhihu.com/p/61062275
说实话,之所以会看这个只是,主要是因为被这篇论文End-to-end training of deep visuomotor policies中的一句话给迷惑了很久。
一句话带过,大概是大佬完全把这个知识当成基础知识了,所以完全不给解释和参考文献。
于是这段我一直是不明白,只知道是在采样,具体怎么采样,也不明白。
于是搜到了这篇文章。
开始这节之前,我们先说说什么是rollout?
本来想翻译一下这个词,但是确实没找到比较优雅的译法,索性就用英文吧。但是大家也不用担心,等解释完之后你就知道它是什么意思了。
其实之前我们也提过这个词,rollout在字典中的意思是:首次展示,滑跑。不得不说,这两个解释和我们今天介绍的含义还是有些差别。在CS相关论文中,一般rollout表示一次试验,一条轨迹。就比如我们我们用MC仿真出了一个episode,这个episode就是一个rollout。它和我们前面讲的轨迹采样(trajectory sampling)也很像。
知道了rollout的含义,我们应该大概猜到rollout算法是一类在仿真轨迹层面上进行更新学习的方法。具体的定义如下:rollout算法是一种基于MC控制的决策时规划算法。看到决策时规划,我们知道规划是针对于当前的状态的,基于MC说明了我们是利用MC来估计当前状态或者行为的值,从而进行规划的。具体是怎么做的呢?为了估计一个给定策略的动作值函数,rollout算法利用MC采样得到很多从当前状态开始的仿真轨迹(当前状态下有多个动作,因此对于每个动作都会得到一些仿真的轨迹)。然后分别用这些轨迹回报的均值来估计每个动作的值。当这个估计值足够准确了,规划算法会执行具有最高估计值的动作。这个动作和环境交互,转移到下一个状态,再利用同样的方法规划出下一个状态的动作。重复下去,就得到了一个完整的plan。
我们在第5章讲了MC方法,这里rollout算法似乎也是用MC估计值函数,他们有什么区别呢?rollout算法的目标不是估计完整的最优动作值函数 [公式],或者是对于特定策略 [公式] 的动作值函数 [公式] 。相反,rollout算法只估计每一个当前状态的值。和决策时规划算法一样,rollout算法只在当前时刻会利用到这些估计值,然后就丢弃了。我的理解是他们的应用场景不同,导致其侧重不同。MC是用于学习,所以我们要估计出所有状态的值函数,然后才能找到一个最优策略。而rollout算法是用于规划的,而且是决策时规划。对于这种规划,我们只在当前状态下搜索所有可能的plan,然后选择最有利的。因此就只侧重于当前状态周围值函数的值。这个区别,使得rollout算法实现起来很简单。因为我们不需要对所有状态-动作对采样。