一、介绍
无论是价值迭代还是策略迭代,都是在已经知道MDP模型(也就是动态转移矩阵P和奖励R)的前提下用DP的方式进行控制。那么如果对模型的这些属性并不了解,要如何进行预测和控制呢?
本节主要讲几种方法来进行无模型前提下的策略评估(model-free policy evaluation)。
二、Monte-Carlo RL方法
Episodic MDP: 所有的行为序列都在有限步终止。
MC方法从已有的完整经验片段(complete episode of experience)或者说History中采样,这些片段都是采用策略π的,那么MC方法使用经验平均return来代替期望return,用这种方式来估计策略π下的状态价值函数 vπ 。
- First-Visit MC Policy Evaluation,仅仅计算每个片段第一次到达某个状态时return的平均值。
- Every-Visit MC Policy Evaluation,计算每个片段每次到达某个状态时return的均值。
一个递增式的均值计算公式, μk=μk−1+1k(xk−μk−1) 。
所以,MC-Policy-Evaluation的更新公式可以表示为(这个公式中的α是 1k 的一种变形,可以看做是一种衰减系数),这种公式下的方法叫做Incremental-MC:
三、Temporal-Difference Learning
TD也是一种Model-Free的方法,但是它可以从不完整的片段中学习。
下面介绍一种最简单的TD方法,TD(0)。
它同Incremental-MC相比,把公式中的实际回报 Gt 变成了估计回报 Rt+1+γV(St+1) ,而这个估计回报在TD中被叫做TD target,估计回报和现在价值的差被称为 δt :TD error。
TD和MC的区别,可以通过一个例子来说明。假设,你现在按照某种方式(策略π)在做一件事情,会尝试很多次(有很多Episode),这件事情中一共要经历几个阶段(状态),每次行动之后你会获得一个效果评价(R)。
现在你用MC的方式对做这件事情的方式(策略π)进行评估,首先你找到了其中一次你做这件事情的整个流程(初始状态,行动1,状态1,效果1….,最终状态),而后你在评估每一个阶段(状态)的时候,都看向一遍整个过程,看看这个状态之后在整个过程里你能获得怎样的平均收益(因为是用 Gt 来评估的)。
如果你用TD的方式进行评估,那么你只需要找到(状态t,行动t,效果t)就能够更新你对某个阶段(状态)的评估了,因为你评估的时候,只会向后看一步,以我对这些阶段(状态)的了解,用这个阶段(状态)后面可能到达的阶段(状态)来评估这个状态的好坏。也就是在做事情的时候,你每走一步,都可以根据外界对你这一步的效果评价,更新你对每个阶段的评价(也就是更新你对你做事情的方式的评价)。
MC的估计方式,估计的过程中不会出现偏差,但是比较慢。
TD的估计方式,在估计的过程中会出现一些偏差(毕竟事情还没有完全做完就评估了),但是拥有更低的方差【这里没看懂。。】。
TD利用了马尔科夫性质而MC没有,因此在不具备马尔科夫性质的问题中,MC更适合。
bootstrap:在更新值的过程中是否使用了估计值。如果你向前走了n步,没有走到最后就更新参数,那么就是使用了bootstrap。
MC没有bootstrap过程而DP和TD都有。
四、TD(λ)
另一种扩展TD方法的方式是,每次使用向前走n步(而不是上一节中的1步),这时的TD target变成了下面的样子:
更进一步,把向前n步的估计return结合起来加权求和,得到一个新的估计return,然后用这个估计作为TD target,这就是TD(λ)的思想。
当然,TD(λ)需要在一个complete episode中进行。
从backward view的角度来看,TD(λ)相当于使用了MC方法的TD error: δt ,并在此基础上给予每个状态一个能量等级,这个状态最近出现的越频繁,这个能量等级就越高。
λ=1时,且在Offline-updates的前提下,TD(λ)等价于Every-Visit-MC。
疑问:
- 为什么说TD(λ)可以在TD(0)相似的时间开销下完成,感觉要慢很多啊。
- 为什么λ=0时,TD(λ)等价于TD(0)。