强化学习 蒙特卡洛模拟 一种model-free的强化学习方法

一、蒙特卡洛方法

动态规划方法是建立在模型已知的情况下,但是往往大多数情况下模型是未知的,实际应用中我们不可能完全了解一个环境的所有知识,比如说得出它的状态转移矩阵。这个时候蒙特卡洛算法就派上用场了,它只需要从经验(experience)中去学习,这个经验包括样本序列的状态(state)、动作(action)和奖励(reward)。得到若干样本的经验后,通过平均所有样本的回报(return)来解决强化学习的任务。

对于DP我们求解其价值函数V时,其方法是求解在当前状态下后续回报的期望即:

E[G_t|S_{t}}] = E[R_{t+1}+\gamma R_{t+2}+\gamma ^{2} R_{t+1}+... ]

蒙特卡洛方法下的价值评估时不是求的回报的期望,而是使用经验平均回报(empirical mean return)。当然,随着的样本越来越多,该平均值是会收敛于期望的

二、first-visit MC method & every-visit MC method

在一个episode中,当每出现一次状态现都称为一次该状态的visit,当然在一个episode中, 状态 s 可能出现多次。我们称第一次出现该状态为 first-visit,因此对于first-visit MC method我们只会统计在第一次的平均reward作为经验平均回报。同样的,对于every-visit MC method,则是在每一个episode中所有的出现的状态s作为经验平均回报。

三、动作价值蒙特卡洛估计

如果无法得到环境的模型,那么计算动作的价值比起计算状态的价值更加useful。在模型已知的时候,只用状态值函数就可以完全决定策略,而模型未知的时候就必须估计每个动作的值,即状态动作值函数。动作价值函数的策略评估问题的目标是估计q(s,a),即在策略pi下从状态s采取动作a的期望汇报。只需将对状态的访问改为对“状态-动作”二元组的访问,蒙特卡洛算法就可以用几乎和之前相同的方式来解决此问题。

四、蒙卡洛特控制

和DP类似,对于二元组q(s,a)找到最佳策略,经过策略迭代。经过若干测迭代(从随机初始策略开始)即:

策略的改进也是在当前动作策略价值函数上贪心的选择动作,由于我们有动作价值函数,所以在贪心的时候不需要任何其他模型信息,不像状态价值函数,需要求所有可能性的p对应的和。所以:

对于上述完成蒙特卡洛算法的收敛需要满足两个条件:第一个是试探性的发出假设,第二个是无限多episode的任务样本序列进行试探。对于第二个假设无法解决,但就像DP一样可以无限的逼近收敛值,通过假设并定义一些测度等。

如下是蒙特卡洛ES(试探性出发)算法,下面的算法效率不高,可以通过增量式去改善这个算法。

五、没有试探性出发的蒙特卡洛控制

试探性出发 即:能够保证状态集合 s中的所有状态都是有可能被选中为每个episode的初始状态。

显然上面的假设难以在现实中实现,如何避免上面的假设呢?唯一的一般性解决方案是智能体能够持续不断的选择所有的可能的动作,有两种方式可以保证这一点,分别被称为同轨策略(ON-POLICY)和离轨策略(OFF-POLICY

On-policy方法:在一定程度上解决了exploring starts这个假设,让策略既greedy又exploratory,最后得到的策略也一定程度上达到最优。

Off-policy方法:更加直接,分别在策略估计和策略提升的时候使用两种策略,一个具有探索性的策略专门用于产生episode积累经验,称为behavior policy ,另一个则是更为贪婪,用来学习成为最优策略的target policy 。

以下是on policy和off policy的MC 控制算法

猜你喜欢

转载自blog.csdn.net/qq_36336522/article/details/107848931
今日推荐