• Ⅴ. Temporal-Difference Learning


    Dictum:

     Although the world is full of suffering, it is full also of the overcoming of it. -- Helen Keller


    时序差分学习(Temporal-Difference Learning, TD)结合了DP和MC方法的优点,主要有两个优势:

    • 相比于DP,它不需要一个环境模型,可以直接从经验中学习
    • 相比于MC,价值函数的更新不必等到交互终止

    TD预测

    每次访问型MC方法的价值函数更新(V_(n+1)doteq V_n + frac{W_n}{C_n}[G_n-V_n ]),可以改写为

    [V(S_t)leftarrow V(S_t)+alpha [G_t-V(S_t)] ag{5.1} ]

    类似地,TD学习的更新如下

    [V(S_t)leftarrow V(S_t)+alpha [R_{t+1}+gamma V(S_{t+1})-V(S_t)] ag{5.2} ]

    对比上述两种方法,MC方法必须等到一个episode的末尾才能确定对(V(S_t))的增量,因为只有此刻(G_t)已知;而TD学习只需要等待下一个时序步长,它的目标函数为(R_{t+1}+gamma V(S_{t+1})),该方法也被称为TD(0)。
    【注】它们的更新都可以看作(NewEstimateleftarrow OldEstimate+StepSize[Target-OldEstimate])的形式。同时,MC和TD更新被称为采样更新(sample updates),而DP更新被称为期望更新(expected updates);采样更新是基于采样得到的单个后继节点的样本数据,而期望更新是基于所有可能后继节点的完整分布

    公式((5.2))括号中的数值是一种误差,被称为TD error,用于衡量当前时刻(t)状态(S_t)的估计值与更好的估计值(R_{t+1}+gamma V(S_{t+1}))之间的差距,TD(0)的TD error可以写成

    [delta_tdoteq R_{t+1}+gamma V(S_{t+1})-V(S_t) ]

    由上可以得到,公式((5.1))中的MC error为TD error之和,推导如下

    [egin{aligned} G_{t}-Vleft(S_{t} ight) &=R_{t+1}+gamma G_{t+1}-Vleft(S_{t} ight)+gamma Vleft(S_{t+1} ight)-gamma Vleft(S_{t+1} ight) \ &=delta_{t}+gammaleft(G_{t+1}-Vleft(S_{t+1} ight) ight) \ &=delta_{t}+gamma delta_{t+1}+gamma^{2}left(G_{t+2}-Vleft(S_{t+2} ight) ight) \ &=delta_{t}+gamma delta_{t+1}+gamma^{2} delta_{t+2}+cdots+gamma^{T-t-1} delta_{T-1}+gamma^{T-t}left(G_{T}-Vleft(S_{T} ight) ight) \ &=delta_{t}+gamma delta_{t+1}+gamma^{2} delta_{t+2}+cdots+gamma^{T-t-1} delta_{T-1}+gamma^{T-t}(0-0) \ &=sum_{k=t}^{T-1} gamma^{k-t} delta_{k} end{aligned} ]

    TD控制

    同步策略控制

    1. Sarsa

    Sarsa学习的是动作价值函数,即给定状态(s)以及动作(a),估计出在当前策略下所有对应的(q_pi (s,a)),MDP是可以表示为下图

    Sarsa_Sequence

    Sarsa的更新定义为

    [Q(S_t,A_t)leftarrow Q(S_t,A_t)+alpha [R_{t+1}+gamma Q(S_{t+1},A_{t+1})-Q(S_t,A_t)] ]

    该更新规则用到了五元组((S_t,A_t,R_{t+1},S_{t+1},A_{t+1}))的所有元素,因此被称为Sarsa。如果(S_{t+1})为终止状态,将(Q(S_{t+1},A_{t+1}))定义为0。Sarsa的收敛性取决于策略对(Q)的依赖程度。

    1. 期望Sarsa

    Sarsa更新目标中的(Q(S_{t+1},A_{t+1}))是对下一个状态(S_{t+1})任取一动作(A_{t+1})估计得到的动作价值函数,会使更新存在方差。为了消除因为随机选择(A_{t+1})产生的方差,替代地使用了期望值,期望Sarsa的更新定义为

    [egin{aligned} Q(S_t,A_t) &leftarrow Q(S_t,A_t)+alpha [R_{t+1}+gammamathbb{E}[Q(S_{t+1},A_{t+1})|S_{t+1}]-Q(S_t,A_t)] \ &leftarrow Q(S_t,A_t)+alpha[R_{t+1}+sum_a pi(a|S_{t+1})Q(S_{t+1},a)-Q(S_t,A_t)] end{aligned}]

    相比于Sarsa,期望Sarsa的性能稳定提升。

    异步策略控制

    1. Q-Learning

    Q-Learning是一种经典的异步策略学习算法,且在深度强化学习中使用也很广泛。它的更新为

    [Q(S_t,A_t)leftarrow Q(S_t,A_t)+alpha [R_{t+1}+gamma max_a Q(S_{t+1},a)-Q(S_t,A_t)] ]

    已学的动作价值函数(Q)直接近似最优动作价值函数(q_*),与生成决策序列轨迹的策略无关。

    1. Double Q-Learning

    上述的算法都包含最大化操作,即都会寻找当前状态的最优动作价值函数,使用相同的样本去确定最大化价值的动作并对它的价值进行估计,会产生正的最大化偏差。因此,可以将样本分成两个集合,并用它们学习两个独立的估计(Q_1(a))(Q_2(a)),它们都是对真实价值(q(a))的估计;接着用其中一个估计确定最优动作,用另一个估计出该最优动作的价值,如(Q_1)确定最优动作(A^*=argmax_aQ(a)),然后用(Q_2)估计该动作的价值(Q_2(A^*)=Q_2ig(argmax_a Q_1(a)ig))。由于(mathbb{E}[Q_2(A^*)]=q(A^*)),所以该估计是无偏估计。
    【注】尽管需要学习两个估计值,但对每个样本集合只更新一次估计值,因此,只需要两倍的内存,无需增加额外的计算量

    最经典的双学习方法就是double Q-Learning,更新如下

    [Q_1(S_t,A_t)leftarrow Q_1(S_t,A_t)+alpha [R_{t+1}+gamma Q_2(S_{t+1},argmax_a Q_1(S_{t+1},a)-Q_1(S_t,A_1))] ]


    References

    Richard S. Sutton and Andrew G. Barto. Reinforcement Learning: An Introduction (Second Edition). 2018.
    Csaba Szepesvári. Algorithms for Reinforcement Learning. 2009.
    Course: UCL Reinforcement Learning Course (by David Silver)

  • 相关阅读:
    Spread Studio中文支持图解
    C#反射实例No.1
    关于XML序列化的简单例子
    将数据结构类型序列化和反序列化(BinaryFormatter类)
    获取计算机名称,IP,MAC地址
    原始套接字发送自定义IP包
    IP包首部格式
    struct和byte[]相互转换(用Marshal类实现)
    图片保存到数据库和从数据库读取图片并显示(C#)
    单词分析器源码
  • 原文地址:https://www.cnblogs.com/HughCai/p/13845123.html
Copyright © 2020-2023  润新知