有了上一节的引导,我们现在可以提出一个基于 ε 的蒙特卡洛控制算法,其流程如下:
有了之前蒙特卡洛控制的经验,很容易想到,把其中蒙特卡洛预测的部分替换成时间差分,那不就可以完成时间差分控制了么。使得,而且这个算法有一个新名字,叫做sarsa。和蒙特卡洛控制有所区别的是,这里我们使用动作价值函数Q
实际上就是在一个马尔科夫过程
以:
sarsa算法主要流程如下:
当srasa的观察步骤拓展到整个动作状态周期时候,sarsa就和蒙特卡洛方法一致了。
和sarsa比较的话,Q-learing其实没有做很大的改进,其主要就是变化了下状态更新公式,成了:
也就是说每次用于更新的真值估计变成了收益加上本状态最大的收益函数(不论什么动作)。其他和sarsa还是一样的
有了在线策略学习,为什么还要花心思研究离线策略学习呢。很简单,在线策略是一个不断学习优化的过程,从之前的算法我们也可以看书,由于没有先验知识,很多参数我们都是随机初始化或者全部置0的,但是,这样的话就很难把我们的经验用在实际控制里面了。离线策略学习正是为了解决这样一个问题,它希望将之前的经验全部利用起来,先得到一个较为准确的策略,之后再以此为基础优化。值得注意一点的是,在这里我们的经验就并非是同一个策略所得到的经验了,而是使用不同策略所得到的经验,所以离线策略学习想要利用不同策略经验的话,首先就要学会如何从不同策略中选择出较好的那一个进行学习。
而离线策略学习主要要解决的问题就在于通过其他策略经验 μ(a|s) 评价策略 π(a|s) 来计算出 vπ(s) 或者 qπ(s,a) 。由于我们的经验策略和评价目标策略不一样,应该如何衡量这个经验策略有没有用呢,这里我们就要使用重要性采样。
关于重要性采样的详细介绍读者请跳转我的另一篇文章:http://blog.csdn.net/ArtistA/article/details/51570878
这样,重要性采样下的收益可以表达为:
于是,我们也可以使用其他策略的经验进行学习了。
这次的分析就到这里,下次我们将把ROS-rl-agent里面的东西拆开来,进入实战分析。