Reinforcement Learning - An Introduction强化学习读书笔记 Ch8.4-Ch8.11

8.4 优先遍历

模拟转移中,均匀采样通常不是最好的,如果模拟转移和价值函数更新集中在某些特定的二元组中,能更加高效地进行学习。在进行价值更新的时候,可以从使得价值法身变化的任何状态进行反向计算,同时更新前导状态的价值,称为反向聚焦。
而在进行反向推演传播的时候,价值改变更大的状态的前导状态也更可能改变很大,且不同的前导状态应该被赋予不同的权值,从而引发优先级遍历的思想,维护一个优先队列,其按照价值改变的大小来进行优先级排序,当队列头部的二元组被更新时,也会计算它对前导二元组的影响,并计算是否需要插入优先队列中。
确定环境中的优先遍历的算法如下:
在这里插入图片描述
而推广到随机环境中的时候,模型要维护每个二元组出现的次数和他们的后继状态出现的次数,并采用期望更新来估计所有可能的后继状态及其发生概率。

8.5 期望更新与采样更新的对比

在关注单步更新方法中,主要考虑三个维度变化,第一是采用状态价值还是动作价值,第二是所估计的价值函数对应的是最优策略还是任意策略,第三是采用期望更新还是采样更新,一共对应8种情况,其中7种对应特定的算法,如下图所示:
在这里插入图片描述
对于随机环境问题,总是使用某种期望更新方法来完成优先遍历。期望更新能产生更好的估计,但是也需要更多的计算。在拥有很大的随机分支因子并要求对大量状态价值准确求解的问题的时候,采样更新会比期望更新要好。

8.6 轨迹采样

轨迹采样:通过模拟仿真得到独立且明确的完整agent运行轨迹,并对沿途遇到的状态或二元组进行回溯更新,这种借助模拟生成经验来进行回溯更新的方法称为轨迹采样。
根据on-policy策略分布来进行采样有助于聚焦于接近初始状态的后继状态,使得空间中大量不重要的区域被忽略,如果有很多状态且分支因子较小,这种效应会很大且持久,但这种方法也会使得长期更新存在一定的危害,因为经常发生的状态都已经有了正确的估计值,而agent还在频繁采样它们。

8.7 实时动态规划

实时动态规划(RTDP)是动态规划价值迭代算法的on-policy的轨迹采样版本,是异步DP的一个例子,更新顺序是由真实或模拟轨迹中状态被访问的顺序决定的。
有时存在一些状态,来自任何初始状态的任何最优的策略都无法到达,对于这些不相关的状态就不需要指定最优动作,需要的是最优部分策略。但对于采用on-policy的轨迹采样控制方法寻找一个最优部分策略,通常需要无数次访问所有的二元组,也包括哪些不相关的状态,这可以通过使用“试探性出发”来完成,但在特定条件下,RTDP中可以保证找到最优策略的情况下不需频繁的访问每个状态(例如3.4节中的不带折扣的分幕式任务)。
在许多问题中,每一幕序列开始于从若干初始状态中随机选择的一个状态,并且在目标状态结束。对于这类问题,RTDP收敛的条件为:每个目标状态的初始值为零,存在至少一个策略保证从任何初始状态都能达到目标状态,从非目标状态跳出的转移所对应的所有收益都严格为负,所有初始值都严格大于等于其最优值。
DP中每个状态的价值都在每一次遍历中进行更新,而RTDP则将更新集中在较少的状态上,只关注与目标问题相关的状态子集,且更新过程中策略相对于当前价值函数总是贪心的。

8.8 决策时规划

后台规划:在为当前状态进行动作选择之前,规划过程会预先对多个状态的动作选择所需要的表达式进行改善,规划不仅仅聚焦于当前状态,而是还要预先在后台处理其他的多个状态。
决策时规划:遇到每个新状态之后才开始规划,比单步前瞻看得更远,同时对于动作选择的评估会产生许多不同的预测转改和收益规划,聚焦于特定的状态。
在应用中想要做到两方面的结合:对当前状态的重点规划以及存储规划的结果(以便一段时间后还能回到同一个状态),决策时规划在不需要快速响应的应用中更有用,后台规划在低延迟动作选择优先的应用中更有用。

8.9 启发式搜索

在启发式搜索中,对于遇到的每个状态,建立一个树结构,该结构包含了后面各种可能的延续,将近似价值函数应用于叶子结点,然后以根节点向当前状态回溯更新,计算了这些节点的更新值后,则选择其中最好的值作为当前动作,然后舍弃所有更新值。可以将启发式搜索视为单步贪心策略的某种扩展,搜索越深,需要的计算越多,通常导致响应时间越长。
启发式搜索中聚焦的最明显的方式:关注当前状态,内存和计算资源对当前决策的高度聚焦可能是启发式搜索如此有效的原因。

8.10 预演算法

预演算法是一种基于MC控制的决策时规划算法,应用于当前环境状态为起点的采样模拟轨迹,通过平均许多起始于每一个可能的动作并遵循给定的策略的模拟轨迹的回报来估计动作价值,例如在西洋双陆棋中,可以通过随机生成的骰子序列和某个固定的走棋策略来推演从当前局面到棋局结束的结果,并利用多次预演的完整棋局来估计当前局面的价值。
预演算法是MC控制算法的一个特例,计算的是模拟轨迹的平均回报,目标并不是估计最优价值函数,而是对一个当前状态以及一个给定的语言策略做出价值的估计值,然后就丢弃它,这样使得实现相对简单,既不用采样每一个二元组的结果,也没有必要估计一个涵盖整个状态空间的函数。
预演算法的目的并不是找到最优的策略,而是在每一步改变预演策略的性能。预演算法的性能取决于预演策略的性质以及基于MC估计的动作的排序。

8.11 蒙特卡洛树搜索

蒙特卡洛树搜索(MCTS)也属于决策时规划,是一种预演算法,通过累计MC模拟得到的价值估计来不断将模拟导向高收益轨迹。
MCTS的核心思想是对当前状态出发的多个模拟轨迹不断地聚焦和选择,通过扩展模拟轨迹中获得较高评估值的初始片段来实现的,而这些评估值则是根据更早的模拟样本经计算的,MCTS不需要保存近似价值函数或每次动作选择的策略。
在计算过程中,只维护部分的MC估计值,对应于会在几步之内到达的二元组形成的子集,这就形成了一颗以当前状态为根节点的树,通过增量式地逐步添加节点来进行树扩展,这些节点代表了从模拟轨迹上来看前景更为光明的状态。
一个基本的MCTS的每一次循环中包括以下四个步骤:

  1. 选择,从根节点开始,使用基于树边缘的动作价值的树策略遍历这棵树来挑选一个叶子结点。
  2. 扩展,针对选定的叶子结点采取非试探性动作可以到达的节点,将一个或多个这样的节点加为该节点的子节点,以此来实现树的扩展。
  3. 模拟,从选定的节点或其中一个它新增的子节点开始,根据预演策略选择动作进行整幕的轨迹模拟,其中动作首先在树内由树策略(greedy贪心、UCB选择等),在树外由预演策略选取。
  4. 回溯,模拟整幕国际得到的回报值向上回传,对树策略所遍历的树边缘上的动作价值进行更新或初始化,而预演策略在树外访问到的状态和动作的任何值将不会被保存下来。
    整个过程如下图所示:
    在这里插入图片描述
    该方法使用了预演算法、online的增量的基于采样的价值估计、策略改进,同时还保存了树边缘上的动作价值估计值并使用采样更新方法来进行更新。
    可以使得MCTS聚焦于某些特定轨迹,这些轨迹的初始片段与之前的模拟中的高收益的轨迹是相同的,通过逐步扩展这棵树,MCTS成功地产生了一张用来存储部分动作价值函数的查找表,其中的内存分配给某些特定的二元组估计值,对应于高收益采样轨迹的开始片段所访问过的二元组,从而避免了估计一个全局的动作价值函数,也同时可以通过过去的经验来引导试探过程。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值