《Reinforcement Learning: An Introduction》 读书笔记 - 目录

先来看一个例子
每天上班的路程,都是可以看作是一系列子过程的组合,如:走路去地铁站=>地铁1=>地铁2=>公交,总时长是这些子过程之和。每天我们依赖之前的经验,估计当天的时长,并更新我们的经验。
《Reinforcement Learning》 读书笔记 6:时序差分学习(TD-Learning)
那么如何做出更好的估计呢?如何更快地积累有效的经验?
尤其是在一个没有适合model(回顾MDP中的 p(s,r|s,a))的环境下

两种思路

回顾第二章中的迭代式更新reward方法:
New=Old+StepSize(TargetOld)
这里并没有对model做任何假设,并且可以以一种在线、增量的方式进行更新
从而我们可以有两种方式:

  • const-α Monte Carlo
    V(St)V(St)+α(GtV(St))

    • stepsize设为一个固定的值α,这样新的经验会占有更大的权重,能适应环境的变化
    • target定义为 Gt,也就是需要每一轮episode结束后才能进行更新
  • TD(0)(one-step TD)
    V(St)V(St)+α[Rt+1+γV(St+1)V(St)]

    • stepsize同样是一个固定的α
    • target定义为 Rt+1+γV(St+1),和const-α MC的区别在于用V(St+1)代替了实际的reward
    • 但是这里要注意的是,V(St+1)仍然是当前的估计值,并不是真实的value,类似第四章中动态规划的做法,这种利用当前估计值进行更新的方法叫做bootstrap(对比MonteCarlo
      《Reinforcement Learning》 读书笔记 6:时序差分学习(TD-Learning)

我们来比较一下两种方法

  • 相同点
    • 两者都是value function的无偏估计
    • 每次更新都是基于样本(sample update),区别于动态规划依赖于model的expected update,所以同时它们都是model-free
    • 另一种表示方式,V(St)(1α)V(St)+αtarget,即两者都可以认为是一种对老的估计和新的target之间的加权和(平均)α为调节因子
  • 不同
    • TD(0) 可以在每一步都对value做更新,而不用等到episode结束
    • 同时,在这种动态的环境下,一般TD(0)的收敛速度都会比const-α MC快
    • 考虑下面这个问题,每组都是一个state,reward序列,如何评价状态A,B的value?
      《Reinforcement Learning》 读书笔记 6:时序差分学习(TD-Learning)
      • 两种思路
        • 不考虑Markov转移,直接用MonteCarlo上极大似然,则V(A)=0, V(B)=0.75
        • 考虑问题的整体性,将A->B的转移考虑进来
          《Reinforcement Learning》 读书笔记 6:时序差分学习(TD-Learning)
          对这个新的模型假设,做一轮的新的MLE,假设γ=1,可以得到V(A)=V(B)=0.75
      • 对比一下这两种思路,两者在各自的模型假设下,都得到了各自的最小误差(但两者不一样),但后者似乎更合理一些,且得到了更小的误差
      • 尤其是 如果后者的模型假设是对的话,则value function一定是对的,这个被称为certainty-equivalence estimate(确定性等价估计)

对于开头提到的那个例子,两者的区别可以看到
《Reinforcement Learning》 读书笔记 6:时序差分学习(TD-Learning)

Temporal Difference Prediction

  • 上面的迭代式中TargetOld 可以认为是一种当前估计的误差,对应到TD(0)中,就是
    • TD-error δt=Rt+1+γV(St+1)V(St)
    • td-error是对不同时间(temporal)的状态的估计的差异(error, difference)
  • 收敛性
    • 对固定的policy π,TD(0) 能保证收敛到vπ, 如果α足够小,或者满足以下条件
      n=1αt= , n=1αt2<
  • 更新方法
    • 上面提到的更新周期是每一个sample更新一次,相当于batch size=1,同理,我们也可以将batch size调大一些

TD Control

上面介绍了用TD method估计state value function,同理,action value function也是一样,并由此进行control
更新的迭代式如下:

Q(St,At)Q(St,At)+α[Rt+1+γXQ(St,At)]

算法基本就像value iteration一样
这里的X表示在TD中bootstrap方法使用的替代估计量,有几种常见的方法:

  • Sarsa

    • X=Q(St+1,At+1)
    • 在实际计算时,需要先向前模拟一步,产生一个{St,At,Rt+1,St+1,At+1}序列,故名SARSA
    • 这里,behavior序列(实际抽样模拟的)和target序列(X 所代表的)都是当前的序列,所以是on-policy
    • 《Reinforcement Learning》 读书笔记 6:时序差分学习(TD-Learning)
  • Q-Learning

    • X=maxaQ(St+1,a)
    • 这里,target序列选择的是根据Q选择的最优action,但实际的behavior却不变,所以是off-policy
    • 《Reinforcement Learning》 读书笔记 6:时序差分学习(TD-Learning)
  • Expected Sarsa

    • X=E[Q(St+1,At+1)|St+1]=aπ(a|St+1)Q(St+1,a)
    • 如果α=1,那就是动态规划中的方法
    • 相比上面的两种,是一种更折中,更稳健的方法
  • 举个例子,
    《Reinforcement Learning》 读书笔记 6:时序差分学习(TD-Learning)
    《Reinforcement Learning》 读书笔记 6:时序差分学习(TD-Learning)

    • Sarsa在这里效果更好,原因是q-learning过于激进,会很快选择靠近悬崖边的路径,导致经常掉下去,而sarsa会“乖一点”,expected sarsa通常会更优
  • Double Learning

    • 在q-learning和sarsa中, 用到的target policy是ε-greedy或贪婪的,这么做容易过于乐观,导致maximizaion bias(我理解就是由于随机性,贪婪不一定是好的方法,感觉说的就是多臂老虎机中的问题),具体可以看下面的例子
    • 因为这个问题,所以一种简单的做法就是维护另一个action-value 估计,两者相关性小
      • 每一次选择behavior策略时,综合考虑两个估计
      • 而更新的target,则使用另一个value function来估计,即
        Q2(A)=Q2(argmaxaQ1(a)),且E[Q2(A)]=q(A)
    • 对于Q1来说,X=Q2(St+1,argmaxaQ1(St+1,a))
    • 以q-learning为例
      《Reinforcement Learning》 读书笔记 6:时序差分学习(TD-Learning)
    • 举例
      《Reinforcement Learning》 读书笔记 6:时序差分学习(TD-Learning)

相关文章: