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

news2024/11/22 19:55:56

文章目录

  • 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.coloradmin.cn/o/1050460.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

南京大学【软件分析】13 Static Analysis for Security

文章目录 1. Information Flow Security2. Confidentiality and Integrity3. Explicit Flows and Covert/Hidden Channels4. Taint Analysis污点分析案例 1. Information Flow Security 引起安全问题最主要的两大原因是:injection errors(2013-2019排名…

Disucz插件-免费最全Disucz插件大全

在网络世界里,拥有一个活跃并充满吸引力的社区论坛是许多网站管理员和品牌经营者的梦想。然而,要让一个论坛充满活力、吸引大量用户,需要大量的内容。这就是为什么许多人转向Disucz插件的原因。Disucz插件不仅可以帮助您创建一个互动性强大的…

数据响应式原理

面试题:请阐述vue2响应式原理 vue官方阐述:https://cn.vuejs.org/v2/guide/reactivity.html 响应式数据的最终目标,是当对象本身或对象属性发生变化时,将会运行一些函数,最常见的就是render函数。 在具体实现上&#x…

基于SpringBoot的飘香水果购物网站

目录 前言 一、技术栈 二、系统功能介绍 水果信息管理 减积分管理 会员购买订单管理 首页 水果 购买水果订单管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息互联网购物的飞速发展,一般企业都去创建属于自己的电商平台以及购物…

crypto:大帝的密码武器

题目 下载zip之后可得到提示文本 结合题目名和文本提示可知&#xff0c;为凯撒密码 利用脚本&#xff0c;爆破位移的位数 str1 FRPHEVGL str2 str1.lower() num 1 for i in range(26):print("{:<2d}".format(num),end )for j in str2:if(ord(j)num > or…

【QT开发(6)】0926-QT 中加入 fastDDS 通信库的程序使用说明

在智能驾驶中&#xff0c;DDS有可能被广泛使用&#xff0c;因此推出这篇说明教程。 1、基于【QT开发&#xff08;5&#xff09;】教程的项目文档进行开发 2、安装DDS 查看《【eProsima Fast DDS&#xff08;1&#xff09;】安装eProsima Fast DDS》 至少安装: foonathan_m…

idea Springboot 高校科研资源共享系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 高校科研资源共享系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c; 系统具有完整的源代码和数据…

spring源码解析——IOC-开启 bean 的加载

概述 前面我们已经分析了spring对于xml配置文件的解析&#xff0c;将分析的信息组装成 BeanDefinition&#xff0c;并将其保存注册到相应的 BeanDefinitionRegistry 中。至此&#xff0c;Spring IOC 的初始化工作完成。接下来我们将对bean的加载进行探索。 BeanFactory 当我…

WinPcap4.1.3安装失败解决方法,A newer version of winpcap...

WinPcap4.1.3安装失败解决方法&#xff0c;A newer version of winpcap… 如图所示&#xff0c;提示本地安装有更高版本的WinPcap时&#xff0c;按如下操作即可解决。 找到相应文件&#xff0c;扩展名修改成如下&#xff1a; C:\Windows\SysWOW64 的wpcap.dll改成 wpcap.dll.…

微服务治理:构建强大、健壮的分布式系统

文章目录 什么是微服务治理&#xff1f;微服务治理的挑战1. 服务注册和发现2. 负载均衡3. 故障处理4. 安全性5. 监控和日志记录 构建强大的微服务治理1. 服务网格2. 服务注册和发现3. 负载均衡4. 故障处理5. 安全性6. 监控和日志记录 微服务治理的未来 &#x1f389;欢迎来到架…

ACGAN

CGAN通过在生成器和判别器中均使用标签信息进行训练&#xff0c;不仅能产生特定标签的数据&#xff0c;还能够提高生成数据的质量&#xff1b;SGAN&#xff08;Semi-Supervised GAN)通过使判别器/分类器重建标签信息来提高生成数据的质量。既然这两种思路都可以提高生成数据的质…

Oracle - 多区间按权重取值逻辑

啰嗦: 其实很早就遇到过类似问题&#xff0c;也设想过&#xff0c;不过一致没实际业务需求&#xff0c;也就耽搁了&#xff1b;最近有业务提到了&#xff0c;和同事讨论&#xff0c;各有想法&#xff0c;所以先把逻辑整理出来&#xff0c;希望有更好更优的解决方案&#xff1b;…

传统遗产与技术相遇,古彝文的数字化与保护

古彝文是中国彝族的传统文字&#xff0c;具有悠久的历史和文化价值。然而&#xff0c;由于古彝文的形状复杂且没有标准化的字符集&#xff0c;对其进行文字识别一直是一项具有挑战性的任务。本文介绍了古彝文合合信息的文字识别技术&#xff0c;旨在提高古彝文的自动识别准确性…

linux 和 windows的換行符不兼容問題

linux 和 windows的換行符&#xff1a; 1.vim 模式下&#xff0c;執行命令&#xff1a; :set ffunix idea中設置code style

从零手搓一个【消息队列】项目设计、需求分析、模块划分、目录结构

文章目录 一、需求分析1, 项目简介2, BrokerServer 核心概念3, BrokerServer 提供的核心 API4, 交换机类型5, 持久化存储6, 网络通信7, TCP 连接的复用8, 需求分析小结 二、模块划分三、目录结构 提示&#xff1a;是正在努力进步的小菜鸟一只&#xff0c;如有大佬发现文章欠佳之…

Linux账户组管理及权限练习

1.使用id命令查看root账户信息 [rootserver ~]# id root 用户id0(root) 组id0(root) 组0(root) 2.使用id命令查看自己的普通账户信息 [rootserver ~]# id kxy 用户id1000(kxy) 组id1000(kxy) 组1000(kxy),10(wheel) 3.新建账户test1&#xff0c;并查看账户信息&#xff1a; [ro…

安装python扩展库

博主&#xff1a;命运之光 专栏&#xff1a;Python程序设计 Python扩展库安装 Python提供了丰富的标准库&#xff08;不需要安装&#xff09; &#xff0c;还支持大量的第三方扩展库&#xff0c;它们数量众多、功能强大、涉及面广、使用方便&#xff0c;得到各行业领域工程师的…

千问的大模型KnowHow

卷友们好&#xff0c;我是rumor。 通义千问昨天放出了14b参数的模型&#xff0c;还有一份比较详尽的技术报告&#xff0c;包含作者们训练8个模型的宝贵经验。 同时他们开源的13B比起开源的SOTA也有不少提升&#xff1a; 今天我们就来一起白嫖&#xff0c;更多细节请移步原文&am…

Mybatis 日志(Apache Commons Logging)

之前我们介绍了使用JDK Log打印Mybatis运行时的日志&#xff1b;本篇我们介绍使用Apache Commons Logging打印Mybatis运行时的日志。 如何您对Mybatis中使用JDK Log不太了解&#xff0c;可以参考&#xff1a; Mybatis 日志(JDK Log)https://blog.csdn.net/m1729339749/articl…

上海市小机灵数学比赛回顾和五年级1-15届真题和答案学习资料

从2017年到现在&#xff0c;之前卷得非常厉害的上海市一系列与升学挂钩的竞赛如“小机灵杯、走美杯、希望杯、中环杯”等比赛都成为了竞赛历史的一部分。 尽管教育部门明确规定&#xff0c;学校不得将相关比赛的成绩作为学生评价和选拔的要素&#xff0c;但是许多家长仍按对于…