Lecture 4:Model Free Prediction -By David Silver

本文是自己学习David Silver课程的学习笔记:原视频可以在油管或者B站上搜到。

PPT的连接如下:http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Teaching.html。网速慢的话可以点击这里

强化学习的精髓是解决无模型的问题。在无模型里面,我们不知道环境是如何运作的,这对于大部分有趣的问题来说这很不现实,它是直接从经验中学习,从agent和环境交互中学习。

我们梳理一下强化学习的研究思路。强化学习的交互过程可以用马尔可夫决策过程来对其进行理解。在已知模型的情况下,我们可以使用动态规划的方法来解决马尔可夫决策过程。在动态规划中我们先进行策略评估,也就是值函数的评估,之后我们利用值函数改进当前策略。无模型的方法也于此大致类似。但是在动态规划算法中我们计算状态s处的值函数是用了状态的转移概率,但是这个概率是我们从环境中获取的,也就是我们得充分了解环境,然后在无模型强化学习中,我们是不知道这个状态转移概率的。

如果我们还想用策略评估和策略改善方法的话,我们就必须得找到其他的方法来评估当前策略,也就是用其他合理的方法来计算当前状态的值函数。

第一种方法就是蒙特卡洛方法

它可能不是最有效的方法,但是它是最有效果的方法,也是最广泛使用在实践中的方法。举个例子来说这种方法的话就是,我们想要评估当前的状态,然后我们随机走,走到游戏结束,我们假设第一次走到游戏结束我们得到了2个奖励,第二次走到游戏结束,我们得到了4个奖励,那么我们评估当前的状态就是(2+4)/2=3 个奖励。如果我们对上述方法做更加理性的分析的话,如下所示:

我们回到值函数的最初定义公式:

其中:

其实就是在计算返回奖励的期望值,在动态规划里面,我们采用数学模型计算转移概率再计算期望。当我们没有模型的时候,我们采取蒙特卡洛的方法计算期望,采用经验平均值代替随机变量的期望。

经验:

我们利用当前策略进行多次实验,从任意的初始状态到终止状态,计算一次实验中状态s处的折扣回报返回值G_{s}(t)G_{t}(s)=R_{t+1}+\gammaR_{t+2}+....r^{T-1}R_{T},那么“经验”就是指利用该策略做很多实验,产生很多幕数据(这里的一幕就是指一次实验)。

平均:

平均就是求平均值,这里又可以分为一次平均每次访问平均。一次平均就是在每次试验时,只利用第一次访问到状态s的返回值G_{s}(t),如果你以后再访问到这个状态s的话,我也不管了。当下一次实验开始的时候我们也是这样计算,然后除以我们总的实验次数。如果是每次访问平均的话,那么我们在一次试验中访问了多次s的话,我们每一次的返回值G_{s}(t)都要加起来,作为这次实验的值,然后看第二次实验·。然后再把他们全部加起来,除以我们总的试验次数。

在动态规划方法中,算法会将所有的状态都考虑进去,但是在无模型的方法中我们很难保证每个状态都会被访问到。因此,在蒙特卡洛方法中,必须采用一定的方法保证每个状态都能够被访问到。一般用的方法就是在初始化的时候,让每一个状态都有一定的几率被选中。

我们知道蒙特卡洛的方法是将所有值加起来求平均,但是这项工作是可以递增地来完成的,这样的话,我们就不必把所有东西的总和弄出来,之后再进行计算。递增公式如下图所示:

我们将其应用到蒙特卡洛方法中的话就如下图所示:

公式的大体意思我们可以理解为,当前状态的值是等于当前状态的值加上我们需要更新的值,这个更新的值可以看作是我们当前状态得到的实际奖励减去当前状态的估计奖励,然后进行更新。蒙特卡洛方法采取的是期望的原始定义,得出的是无偏估计,但是需要试验整个回合,在这其中会经历很多随机的状态和动作,因此它的方差会比较大。

第二种方法就是时间差分的方法

时间差分方法是另一种无模型强化学习方法,也是强化学习理论中最核心的内容。与动态规划的方法、蒙特卡洛的方法相比,时间差分的主要不同在于值函数的估计。在动态规划中,计算值函数时用到了当前状态s的所有后继状态s‘,后继状态由模型中的状态转移矩阵计算得出,蒙特卡洛方法利用经验平均估计状态的值函数。但是蒙特卡洛方法需要等到每次实验结束才可以学习。下面,我们看一下蒙特卡洛和时间差分之间的区别。

其中R_{t+1}+\gamma V(S_{t+1})称为TD目标。R_{t+1}+\gamma V(S_{t+1}) - V(S_{t})我们称其为TD-error。

从这里的话,我们就可以知道了,蒙特卡洛的方法使用的是值函数最原始的定义,该方法利用所有回报的累积和估计值函数;动态规划方法和时间差分方法则利用一步预测方法计算当前状态值函数,它俩的共同点是利用了bootstrapping方法;不同的是,动态规划是利用模型中的状态转移概率计算后继状态,而在时间差分里面采取的是试验的方法。

时间差分方法中,如果我们的V(S_{t+1})采用的是真实值,那么我们的TD估计也是无偏估计,但是实际情况是这个值是估计的,因此,时间差分属于有偏估计。与蒙特卡洛方法相比,时间差分只采取了一步随机状态和动作,因此它的方差是要比蒙特卡洛方法小的。

如果我们不是看接下来一步的话,而是看之后的多步,这样就产生了TD(lamda)。

这里的时间差分是前向的观点,需要整个试验结束之后才能计算,这种方法和蒙特卡洛的方法类似。

然而我们也有后向的观点。这种更新方法我们可以不用等到试验结束就可以更新当前状态的值函数。

上图为后向观点示意图,人坐在状态流上,手里拿着话筒,面朝已近经历过的状态流,获得当前回报并利用下一个状态的值函数得到TD偏差后,此人会向已经经历过的状态喊话,告诉这些状态处的值函数需要利用当前时刻的TD偏差更新。此时过往的每个状态值函数更新的大小应该与距离当前状态的步数有关。

这里我们比较一下TD(Lambda)的前向观点和后向观点的异同。

1.前向观点需要等到试验结束再对其进行更新,而后向的是每一步都在更新,是增量式的方法。

2.前向观点在一次试验结束后更新值函数,更新完当前状态的值函数后,此状态的值函数就不再改变,后向观点在每一步计算完当前TD误差后,其他状态的值函数需要利用当前状态的TD误差更新。

3.在一次试验结束后,前向观点和后向观点每个状态的值函数的更新总量是相同的,都是G_{t}^{\lambda }

第三点证明如下:

 

猜你喜欢

转载自blog.csdn.net/weixin_39059031/article/details/83143440