《Reinforcement Learning: An Introduction》第8章笔记

news/2024/5/19 0:31:53 标签: 笔记, 强化学习

文章目录

  • Chapter 8 Planning and Learning with Tabular Methods
    • 8.1 Models and Planning
    • 8.2 Dyna: Integrated Planning, Acting, and Learning
    • 8.3 When the Models Is Wrong
    • 8.4 Prioritized Sweeping
    • 8.5 Expected vs. Sample Updates
    • 8.6 Trajectory Sampling
    • 8.7 Real-time Dynamic Programming
    • 8.8 Planning at Decision Time
    • 8.9 Heuristic Search
    • 8.10 Rollout Algorithm
    • 8.11 Monte Carlo Tree Search

Chapter 8 Planning and Learning with Tabular Methods

根据是否需要对环境建立模型将强化学习方法分为基于模型的(model-based)强化学习方法和无模型(model-free)的强化学习方法。

  • 基于模型的方法有动态规划方法和启发式搜索,它将规划(planning)作为其主要组成部分。
  • 无模型的方法有Monte Carlo方法和时序差分(TD)方法,它主要依赖于学习(learning)。

基于模型的强化学习方法和无模型的强化学习方法。有一些主要区别,但是也有很多相似之处:

  • 两种方法的核心都是价值函数的计算。
  • 两种方法都需要基于未来事件来计算一个回溯值,使用它来作为目标来更新一个近似价值函数。

本章试图去整合基于模型的强化学习方法和无模型的强化学习方法。

8.1 Models and Planning

环境的模型(model)是指agent能够用它来预测环境将如何对其动作作出反应的任何事物。给定一个状态和动作,一个模型会预测下一个状态和下一个奖励。

如果一个模型是随机的,那么会有几种可能的下一个状态和下一个奖励,每个都有一定的发生概率。

  • 分布模型(distribution models),生成所有可能的结果的描述和对应的概率分布。
  • 样本模型(sample models),只生成所有可能结果中的一个,它是根据概率采样得到的。

举个例子,如果考虑对12个骰子之和建模,一个分布模型可以生成所有可能的和的值及其发生概率,而一个样本模型则会根据这个概率分布来生成单个和。在动态规划中的模型—也就是MDP动态特性 p ( s ′ , r ∣ s , a ) p(s^{\prime},r|s,a) p(s,rs,a)是一个分布模型;而在第5章的blackJack例子是一个样本模型。

分布模型相对于样本模型更强大,因为它可以用来生成样本,但是在很多应用中获取样本模型相比与分布模型要容易的多。

那么模型有什么用呢?模型可以用来模拟minic(或仿真simulate)经验:

  • 给定一个开始状态和动作,样本模型生成一个可能的转移,分布模型会根据发生的概率产生所有可能的转移。
  • 给定一个初始状态和策略,样本模型生成整个回合(episode),分布模型会生成所有可能的回合及其概率。

在两种情况下,我们都说模型是用来模拟环境(simulate the environment)和产生模拟经验(simulated experience)的。

本书中规划(planning)被定义为任何以环境模型为输入,并生成或改进与它进行交互的策略的计算过程

在这里插入图片描述

根据这个定义,在人工智能领域,有两种不同的规划方法:

  • 状态空间规划(Sate-space planning),它包括本书中采用的方法,可以将它们视为一种搜索方法,即在状态空间中寻找最优策略或实现目标的最优决策路径。每个动作都会引发状态之间的转移,价值函数的计算是基于状态的。
  • 方案空间规划(plan-space planning),规划是在“方案空间”中进行的。定义一些操作将一个方案转换成另一个,如果价值函数存在,它是被定义在不同“方案”所构成的空间中的。方案空间规划包括进化算法和“偏序规划(partial-order planning)"(在规划中并非所有阶段里的步骤都有完全确定的顺序,这是人工智能领域中的一种常见规划方法)。因为方案空间规划方法很难应用于随机性序列决策问题,所以本书不会进一步讨论它们。

本章中提出一个统一视角,即所有的状态空间规划算法都有一个通用的结构,如下图所示,包括有两个基本思想:

  1. 所有的状态空间方法都会将计算价值函数作为提升策略的关键中间步骤。

  2. 它们通过基于仿真经验的更新或回溯操作来计算价值函数。

    在这里插入图片描述

使用这种视角来看待规划方法,强调了规划方法与学习方法之间的关系。学习方法和规划方法的核心都是通过回溯操作来估计价值函数。不同之处在于,规划利用模型生成的仿真经验,学习方法使用从环境得到的真实经验。不考虑这种差异导致的其他差异(如何评估性能,如何产生丰富的经验等)的话,这种通用结构意味着许多思想和算法可以在规划和学习之间迁移。特别是,在许多情况下学习算法可以代替规划方法的关键回溯步骤。因为学习方法只需要经验作为输入,而且在许多情况下,它们可以被应用到模拟经验中,就像应用到真实经验中一样。

下图的算法流程展示了一个例子,它是被称为随机采样单步表格型Q规划算法(random-sample one-step tabular Q-planning),它基于one-step Q-learning和样本模型的随机采样方法。它可以收敛到相应环境模型下的最优策略,并且与在真实环境的one-step Q-learning的最优策略收敛条件相同(1. 每个”状态-动作“对必须在步骤1中被无限次选中;2. 随着时间的推移, α \alpha α需要适当地减小)

在这里插入图片描述

8.2 Dyna: Integrated Planning, Acting, and Learning

对于一个规划agent,实际经验至少扮演了两个角色:

  • 它被用于改进模型,使模型与现实环境更匹配。这个过程被称为模型学习(model learning)
  • 被用于直接改善本书前几章中介绍的强化学习中的价值函数和策略。这个过程被称为直接强化学习(direct reinforcement learning, direct RL)

经验、模型、价值函数、策略的关系如下图所示,箭头代表产生影响和改进的关系方向。经验可以直接地或通过模型间接地改善价值函数和策略,而与”规划“相关的是后一种方式,被称为间接强化学习(indirect reinforment learning)

在这里插入图片描述

直接强化学习和间接强化学习各有优缺点:

  • 间接方法往往能够更充分地利用有限的经验,减少与环境的交互的同时,获得更好的策略。
  • 直接方法简单的多,并且也不受模型设计的偏差影响。

直接方法好还是间接方法好,有很多争论,而本书作者的观点是,在所有争论中,不同观点之间的差异性被夸大了,而分享两种观点的相似性比将它们对立起来反而能给我们更多的启发。举个例子,在本书中作者强调了动态规划和时序差分方法之间的内在相似性,尽管其中一个是为规划而设计的,另一个是为无模型学习设计。

Dyna-Q包括上面图片中所有的过程,规划、动作、模型学习和直接强化学习,该过程持续迭代:

  • 规划:使用8.1节给出的随机采样单步表格型Q-Planning方法
  • 直接强化学习:单步表格型Q-learning
  • 模型学习:表格型的、假设环境是确定的
  • 在每次转移 S t , A t → R t + 1 , S t + 1 S_t, A_t \rightarrow R_{t+1}, S_{t+1} St,AtRt+1,St+1之后,模型在它的表格中为 S t , A t S_t,A_t St,At建立条目,记录环境在这种情况下产生的转移结果的预测值 R t + 1 , S t + 1 R_{t+1}, S_{t+1} Rt+1,St+1
  • 如果对模型之前经历过的状态-动作对进行查询,将返回最后观察到的后继状态和后继奖励作为预测值。
  • 在规划过程中,Q-Planning 算法随机的从之前经历过的状态-动作对中进行采样(算法第一步),所以模型永远不会查询没有信息的”状态-动作“对

Dyna智能体的一个整体框架图如下图,它是Dyna-Q算法的一个样例。

  • 图中的中间列表示智能体与环境之间的基本交互,这些交互产生了真实经验。
  • 图左边的箭头标志直接强化学习使用真实经验来改善价值函数和策略。
  • 图的右侧是基于模型的过程,模型从实际经验中学习,并进行仿真产生模拟经验。
  • 使用术语”搜索控制(search control)“来表示为模型生成的模拟经验选择初始状态和动作的过程。
  • 规划是通过将强化学习应用于模拟经验来实现的,就像它们真的发生过一样。
  • 强化学习方法是学习和规划的”final common path",学习和规划是紧密结合在一起的,它们分享了所有的计算资源,只是它们的经验来源不一样。

在这里插入图片描述

下图是Dyna-Q算法的一个伪代码,从概念上讲,规划、动作、模型学习和直接强化学习在Dyna的智能体中是同时并行进行的,而在串行计算机的实现中,每一步我们都要制定它们发生的顺序。 下图的 M o d e l ( s , a ) Model(s, a) Model(s,a)表示基于“状态-动作”对 ( s , a ) (s,a) (s,a)预测的后继状态和后继奖励的内容。 直接强化学习、模型学习、规划分别由步骤(d)、(e)、(f)来实现,如果(e)和(f)被省略,剩下的算法就是单步表格型Q-learning了。

在这里插入图片描述

例8.1 Dyna迷宫示例了带规划的agent相比与不带规划的agent性能更好,如下图(Figure 8.2)所示

在这里插入图片描述

8.3 When the Models Is Wrong

创建的模型可能因为如下原因是不正确的:

  • 环境是随机的,并且只有有限样本被观测到
  • 模型是通过泛化能力较差的函数来近似的
  • 环境发生了改变,而新的行为还没有被观测到

当模型不正确时,规划过程就可能计算出次优的策略。有些情况下,规划计算出的次优策略会使我们很快发现并修正模型错误,这一般会在模型比较“乐观”的时候发生,即模型倾向于预测出比真实情况可能更大的奖励或更好的状态转移。规划智能体尝试利用这些机会,很快就发现这些机会根本不存在,于是感知到模型错误,继而修正模型。比如【例子8.2 Blocking Maze】给出的下面图片(Figure 8.4)展示了一个有较小的建模错误然后得到修复的迷宫示例。图中左上角示意了一开始的目标路径是在右边,1000步之后,最短路径变成了最左边的路径,如图中右上角所示。图中的下半部分表示在1000步内两种智能体都找到了最优路径,环境改变时,智能体在一段时间内没有奖励(曲线变平)的一段,而过了一段时间后,它们都学习到了新的最优动作。

在这里插入图片描述

而当环境比以前更好,但以前正确的策略并没有反映这些改善时,智能体的学习就会遇到很大困难,这些情况下,建模错误可能在很长时间甚至一直都不会被检测到。 【例子8.3 Shortcut Maze】给出的下面图片(Figure 8.5)展示这种环境变好引起的问题。一开始最优路径在屏障的左侧(左上角),3000步后,沿着右侧多了一条较短的路径。图中的下半部分表明Dyna-Q不会切换到捷径,它从没有意识到捷径的存在。
在这里插入图片描述

书里Figure 8.5

这里遇到的学习问题是第2章的探索与利用之间矛盾的另一个版本。在“规划”的语境里,探索意味着尝试那些改善模型的动作,而利用则意味着以当前模型的最优方式来执行动作。我们希望智能体通过探索来发现环境的变化,但又不希望探索太多使得平均性能大大降低。如以前讨论过的一样,没有银弹,但简单的启发式方法常常很有效。

解决了例子8.3里的Dyna-Q+就使用启发式方法。它对每一个“状态-动作”对进行跟踪,记录它自上一次在与环境进行真实交互时出现以来,已经过了多少时刻。时间越长,我们就越有理由推测这个“状态-动作”相关的环境动态性会产生变化,它的模型很可能是不正确的。为了鼓励尝试很久未出现的动作,为该动作相关的模拟经验设置的“额外奖励”被提供给智能体:如果模型对一个单步转移的奖励是r,这个转移有 τ \tau τ个时间步内没有被尝试,那么在更新时就会采用 r + κ τ r+\kappa \sqrt{\tau} r+κτ ,其中的 κ \kappa κ是一个比较小的数字。虽然这些试探是有代价的,就像迷宫任务中一样,这种计算上的好奇心(computational curiosity)是值得付出额外代价的。

8.4 Prioritized Sweeping

在前面的Dyna智能体中,模拟转移是从所有先前经历过的”状态-动作“对中随机均匀采样得到的,均匀采样更新的方式存在效率较低的缺点,尤其当状态空间非常大时。

规划计算的反向聚焦(backward focusing):从任意的价值发生变化的状态中进行反向操作,要么进行有用的更新,要么就终止信息传播。

优先级遍历(prioritized sweeping):根据价值变化来对更新进行优先级排序。如果某个”状态-动作“二元组在更新之后的价值变化是不可忽略的,就可以将它放入到优先队列维护,这个队列是按照价值改变的大小来进行优先级排序的。当队列头部的”状态-动作“对被更新时,也会计算它对其前导”状态-动作“对的影响,如果这些影响大于某个较小的阈值,就把相应的前导”状态-动作“对也插入到优先队列中(如果已经在队列中,则保留优先级最高的)。这种方法可以使得价值变化的影响被有效地反向传播直到影响消失,算法如下图所示:

在这里插入图片描述

8.5 Expected vs. Sample Updates

单步更新方法主要在三个维度产生变化:

  • 更新状态价值还是动作价值
  • 估计的价值是最优策略还是任意给定策略
  • 期望更新(expected update) 或采样更新(sample update)。期望更新会考虑所有可能的转移,而采样更新仅考虑采样得到的单个转移样本。

前两个维度组合出四类更新,用于近似四个价值函数: q ∗ q_* q v ∗ v_* v q π q_{\pi} qπ v π v_{\pi} vπ。而三个维度组合出8类更新,其中7个对应着特定的算法(第8个不产生任何有用的更新),这些算法的回溯图如下图所示。

在这里插入图片描述

考虑一种将期望更新和采样更新用于近似 q ∗ q_* q的特殊例子,这里状态和动作都是离散的,近似价值函数Q用表格表示,环境动态模型用 p ^ ( s ′ , r ∣ s , a ) \hat{p}(s^{\prime},r|s,a) p^(s,rs,a)表示,状态-动作对s, a的期望更新为:
Q ( s , a ) ← ∑ s ′ , r p ^ ( s ′ , r ∣ s , a ) [ r + γ m a x a ′ Q ( s ′ , a ′ ) ]   ( 8.1 ) Q(s, a) \leftarrow \sum_{s^{\prime}, r} \hat{p}(s^{\prime},r|s,a) [r + \gamma max_{a^{\prime}} Q(s^{\prime}, a^{\prime})] \ \qquad (8.1) Q(s,a)s,rp^(s,rs,a)[r+γmaxaQ(s,a)] (8.1)
对应的s, a的采样更新是类似Q-learning的更新,给定后继状态 S ′ S^{\prime} S和奖励R(来自模型):
Q ( s , a ) ← Q ( s , a ) + α [ R + γ m a x a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ]   ( 8.2 ) Q(s, a) \leftarrow Q(s, a) + \alpha [R + \gamma max_{a^{\prime}} Q(s^{\prime}, a^{\prime}) - Q(s, a)] \ \qquad (8.2) Q(s,a)Q(s,a)+α[R+γmaxaQ(s,a)Q(s,a)] (8.2)
上式的 α \alpha α是一个通常为正数的步长参数。

当环境是随机环境时,在给定状态和动作的情况下,后继状态有多种可能,此时期望更新和采样更新差异很明显:

  • 期望更新的一个优势是它是一个精确的计算,这使得一个新的Q(s, a)的正确性仅仅受限 Q ( s ′ , a ′ ) Q(s^{\prime}, a^{\prime}) Q(s,a)在后继状态下的正确性。
  • 采样更新在计算上复杂度更低,因为它只考虑单个后继状态,而不是所有可能的后继状态。但是采样更新会受到采样错误的影响。

对于一个特定的初始二元组s,a,设b是分支因子(branching factor),即对于所有可能的后继状态 s ′ s^{\prime} s,其中 p ^ ( s ′ ∣ s , a ) > 0 \hat{p}(s^{\prime}|s, a)>0 p^(ss,a)>0的数目。则这个二元组的期望更新需要的计算量大约是采样更新的b倍。如果有足够的时间来完成期望更新,则所得到的的估计总体上应该比b次采样更新更好,因为没有采样误差。但是如果没有足够的时间来完成一次期望更新,那么采样更新总是比较可取的,因为它们至少可以通过少于b次的更新来改进估计值。

在给定一个单位的计算量,是否采用期望更新比采用b倍次数的采样更新会更好呢?下图(Figure 8.7)展示了这个问题的分析结果。

在这里插入图片描述

8.6 Trajectory Sampling

两种状态更新过程中的算力分配方法:

  • 穷举式遍历:基于动态规划的经典方法是遍历整个状态(或“状态-动作”对)空间,每遍历一次就对每个状态(或“状态-动作”对)的价值更新一次。这对大规模任务会有问题,因为很可能没有时间完成一次遍历;并且在许多任务中,绝大部分状态是无关紧要的,将计算时间均匀用于状态空间的所有部分不一定划算。
  • 轨迹采样(trajectory sampling):根据on-policy下的分布来分配算力,即根据当前所遵循的策略下观察到的分布来分配算力,其优点是容易生成。不管是回合式任务还是连续性任务,样本状态转移和奖励都由模型给出,样本动作由当前策略给出。换句话说,我们通过模拟仿真得到独立且明确的完整智能体运行轨迹,并对沿途遇到的状态或“状态-动作”对进行回溯更新。

on-policy可以显著提高规划的速度

在短期内,根据on-policy分布进行采样有助于聚焦于接近初始状态的后继状态;而从长期来看,聚焦于on-pollicy分布则可能存在危害,因为通常发生的各种状态都已经有了正确的估计值,采样到它们没什么用。所以根据on-policy分布的采样对于大尺度问题可能具有很大的优势。

8.7 Real-time Dynamic Programming

实时动态规划(real-time dynamic programming, RTDP)是动态规划价值迭代算法的on-policy轨迹采集采样版本。RTDP是异步DP算法的一个例子。异步DP算法不是根据对状态集合的系统性遍历来组织的,它可以采用任何顺序和其他状态恰好可用的任何价值来计算某个状态的价值函数更新。在RTDP中,更新顺序是由真实或模拟轨迹中状态被访问的顺序决定的。

optimal partial policy: 策略对于相关的状态是最优的,而对于不相关的状态则可以指定任意的甚至是未定义的动作。

在这里插入图片描述

RTDP的两个优点:

  • 对于满足某些合理条件的特定类型的问题,RTDP可以保证找到相关状态下的最优策略,而无须频繁访问每个状态,甚至可以完全不访问某些状态。这对于具有大尺度状态集的问题来说可能是一个很大的优势。
  • 随着价值函数接近最优价值函数 v ∗ v* v,智能体产生轨迹所使用的的策略也会接近最优策略,因为它相对于当前价值函数总是贪心的。在实践中,当价值函数在某次遍历中的该变量很小时,价值迭代将终止迭代,这种终止方式就是获得书中例8.6结果的如下表结果的方式。

在这里插入图片描述

8.8 Planning at Decision Time

规划过程至少有两种运行方式:

  • 后台规划(background planning):以动态规划和Dyna为代表的方法从环境模型(单个样本或概率分布)生成模拟经验,并以此为基础采用规划在逐步改进策略或价值函数。在为当前状态 S t S_t St 进行动作选择之前,规划过程都会预先针对多个状态的动作(包括 S t S_t St)的动作选择所需要的表格条目(表格型方法)或数学表达式(近似方法)进行改善。显然这种运行方式下,规划并不仅仅聚焦于当前状态。
  • 决策时规划(decision-time planning):在遇到每个新状态 S t S_t St之后才开始并完成规划,这个计算过程的输出是单个动作 A t A_t At,在下一时刻,规划过程将从一个新的状态 S t + 1 S_{t+1} St+1开始,产生 A t + 1 A_{t+1} At+1,以此类推。更一般地,以这种方式运行的规划过程可以比单步前瞻看得更远,同时对于动作选择的评估会产生许多不同的预测状态和奖励轨迹。在这种方式下,规划聚焦于特定的状态。

决策时规划在不需要快速相应的应用程序是最有用的。

如果低延迟动作选择优先,则在后台进行规划通常能够更好地计算出一个策略,以便可以将其迅速地应用于每个新遇到的状态。

8.9 Heuristic Search

人工智能中经典的状态空间规划方法是决策时规划,整体被统称为启发式搜索(heuristic search)。

在启发式搜索中,对于遇到的每个状态,建立一个树结构,该结构包含了后面各种可能的延续。将近似价值函数应用于叶子结点,然后向当前状态节点回溯,回溯更新在当前状态的状态动作节点处停止。一旦这些节点的回溯价值全部被计算后,选择最好的作为当前动作,然后舍弃所有回溯值。

贪心策略、 ϵ \epsilon ϵ策略和UCB动作选择方法与启发式搜索并没有差别很大,只是它们的规模更小,例如,为了计算给定模型和状态价值函数下的贪心动作,我们必须从每个可能的动作出发,将所有可能的后继状态的奖励考虑进去并进行价值估计,然后选择最优动作。因此我们可以将启发式搜索看作单步贪心策略的某种扩展。

需要采用比单步搜索更深的搜索方式的原因是为了获得更好的动作选择。如果有一个完美的环境模型和一个不完美的动作价值函数,那么实际上更深的搜索通常会产生更好的策略。另一方面,搜索越深,需要的计算越多,通常导致响应时间越长。

8.10 Rollout Algorithm

Rollout(有翻译称为预演)算法是一种基于Monte Carlo控制的决策时规划算法,Monte Carlo控制应用于以当前状态为起点的采样轨迹模拟。Rollout算法通过平均许多起始于可能的动作并遵循给定的策略的模拟轨迹的回报来估计动作价值。当动作价值的估计被认为足够准确时,对应最高估计值的动作会被执行,之后这个过程再从得到的后继状态继续进行。

rollout 这个词来源于backgammon游戏中通过playing out即rolling out来估计一个棋局局面的价值。

与第5章 的Monte Carlo控制算法不一样,rollout算法的目标不是为了估计一个最优动作价值函数 q ∗ q_* q,或对于给定的策略 π \pi π的完整动作-价值函数 q π q_{\pi} qπ。相反,rollout算法只对一个给定策略的被称为rollout策略和每一个当前状态做出动作价值的Monte Carlo估计。作为决策时规划算法,rollout算法只是即时地利用这些动作价值的估计值,然后丢弃它们。

rollout算法的目的是为了改进rollout策略的性能,而不是找到最优的策略。过去的经验表明,rollout算法表现的出人意料地有效。但改进后的策略的性能取决于rollout策略的性质以及基于Monte Carlo价值估计的动作的排序。从直观上看,基础rollout策略越好,价值的估计越准确,rollout算法得到的策略就越可能更好。

因此就涉及了时间约束和更好的价值估计的权衡,因为更好的rollout策略一般都意味着要花更多的时间来模拟足够多的轨迹从而得到一个良好的价值估计。rollout算法需要的计算时间取决于:

  • 每次决策时需要评估的动作的个数
  • 为了获得有效的回报采样值而要求模拟轨迹具备的步数
  • rollout策略进行决策所花费的时间
  • 为了得到良好的Monte Carlo价值估计所需的模拟轨迹的数量

平衡上述这些因素在rollout算法的应用中很重要,但也有一些方法可以缓解这个问题:

  • 由于Monte Carlo 试验之间是相互独立的,因此可以在多个独立的处理器上并行地进行多次实验
  • 在尚未完成时就截断模拟轨迹,利用预存的评估函数来更正截断的回报值
  • 监控Monte Carlo模拟过程并对那些不太可能是最优的,或其值与当前的最优值很接近以至于选择它们不会带来任何区别的动作进行剪枝

8.11 Monte Carlo Tree Search

蒙特卡洛树搜索(Monte Carlo Tree Search, MCTS)是一种rollout算法,它通过累积Monte Carlo模拟得到价值估计来不停地将模拟导向高奖励轨迹。这个算法有很多变体,其中一个变体对于2016年的AlphaGo获胜有很关键的作用。MCTS在很多任务中被证明是有效的,包括普通的游戏,但是不限于游戏,如果有一个简单到可以进行快速多步模拟的环境模型,它也可以有效地解决单智能题序贯决策问题。

MCTS在遇到一个新状态后,首先用来选择智能体在这个状态下的动作,之后它又会被用来选择后继状态下的动作,依此类推。而每一次的执行都是一个循环重复的过程:模拟许多从当前状态开始运行到终止状态(或运行到折扣系数使得更遥远的奖励对回报值的贡献小到可以忽略为止)的轨迹。MCTS的核心思想是对从当前状态出发的多个模拟状态不断地聚焦,这通过扩展从更早的模拟获得较高评估值的轨迹的初始片段来实现的。

  • rollout 策略: 生成模拟轨迹的动作的简单策略。
  • 树策略:至少树内部状态信息的策略,能够平衡探索和利用,可以用用 ϵ \epsilon ϵ贪心策略或UCB选择规则来选择动作

在计算过程中,只维护部分的Monte Carlo估计值,这些估计值对应于会在几步内到达的“状态-动作”对所形成的子集,这就形成了一棵以当前状态为根节点的树,如下图所示:

在这里插入图片描述

如上图所示,一个基本版的MCTS的每一次循环中包括下面四个步骤:

  1. 选择selection。从根节点开始,使用基于树边缘的动作价值的树策略遍历这棵树来挑选一个叶子节点。
  2. 扩展expansion。在某些迭代中(依据应用的细节决定),针对选定的叶子节点找到采取非试探性动作可以到达的节点,将一个或多个这样的节点加为该叶子节点的子节点,以此来实现树的扩展。
  3. 模拟simulation。从选定的节点,或其中一个它新增加的子节点(如果存在)出发,根据rollout策略选择动作进行整个回合的轨迹模拟。得到的结果是一个Monte Carlo实验,其中动作首先由树策略选取,而到了树外则由rollout策略选取。
  4. 回溯backup。模拟回合产生的回报值回溯来更新或初始化动作价值,这些动作价值对应着在这次MCTS迭代中被树策略遍历的树边缘。

MCTS为什么能取得注入效果有以下几点原因:

  • 它是一种rollout算法,将基于Monte Carl控制的决策时规划算法应用到了从根节点开始的模拟中
  • 受益于在线、增量的、基于采样的价值估计和策略改进
  • 保存了树边缘上的动作-价值估计值并用强化学习中的采样更新方法来进行更新,避免了估计一个全局的动作价值函数,但同时依然可以通过过去的经验来引导探索过程。

http://www.niftyadmin.cn/n/5057207.html

相关文章

深眸科技入局AI视觉行业,以深度学习赋能视觉应用推进智造升级

随着科技的飞速发展,人工智能技术已经成为改变我们生活的重要力量,而深度学习作为人工智能的一个重要分支,近年来随着卷积神经网络的突破和推广,取得了显著进展,并呈现爆发式增长势头。 目前AI技术已经被迅速引入到机…

JDBC【DBUtils】

一、 DBUtils工具类🍓 (一)、DBUtils简介🥝 使用JDBC我们发现冗余的代码太多了,为了简化开发 我们选择使用 DbUtils Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发&#xff0c…

Unity - 实践: Metallic流程贴图 转 Specular流程贴图

文章目录 目的Metallic Flow - SP - 输出输出的 MRA (MGA) 贴图 Metallic->Specular (根据教程一步一步实践)1. Base color Metallic -> Diffuse2. Base color Metallic -> Specular3. Roughness -> Glossiness输出贴图,在 unity 中展示:M…

Ubuntu下文件的解压缩操作:常用zip和unzip

Ubuntu下文件的解\压缩 压缩一个文件夹为zip包,加参数-r: zip -r MyWeb.zip MyWeb需要排除目录里某个文件夹?例如我要去掉node_modules,以显著减小压缩包体积,此时该怎么做? zip -r MyWeb.zip ./MyWeb…

Python 中并发方面的差异

文章目录 线程和多线程进程和多进程 异步和asyncio 考虑到Python 3发布后有关异步操作和并发性的新趋势,有些人可能会认为Python刚刚引入了这些概念或功能。 许多新手可能会认为使用asyncio是执行并发和异步任务的唯一实用方法。本文将讨论如何在Python中实现并发以…

【项目实战】单数据源多数据库实现多租户

文章目录 前言多租户的四种实现方案单数据源多数据库实现思路代码实现 总结 前言 多租户(Multi-Tenancy)是一种软件架构设计模式,旨在使单个应用程序可以同时为多个租户(如不同组织、用户或客户)提供服务,…

Redis key基本使用

查看key的数据类型 string 、hash等 type key 查看key是否存在 exist key1 查看key的有效期 -1:永不过期 -2:已过期 设置key过期时间 expire key seconds expireat key 日期 key移动到其它库 move key index redis 默认是16个库 0,1,2,…15 切换数据库【…

Python rsync 同步

在技术不断变化的世界中,我们仍然并且可能总是会遇到需要传输或交换文件的情况。 Rsync 是一个基于 Linux 的工具,可以帮助我们指定传输细节。 本文将探讨 rsync 以及我们如何从 Python 脚本中使用它。 Python同步 如上所述,rsync 是一个强…