强化学习知识要点与编程实践(7)——基于模型的学习和规划
基于模型的学习和规划
- 0. 引言
- 1. 环境的模型
- 2. 整合学习与规划——Dyna算法
- 3. 基于模拟的搜索
- 3.1 简单蒙特卡罗搜索
- 3.2 蒙特卡罗树搜索
本文未经许可,禁止转载,如需转载请联系笔者
0. 引言
无论是前面第五章的关于价值函数的近似,还是第六章的基于策略梯度的深度强化学习,都没有让个体去试图理解环境,没有让他学习环境的变化规律。
如果能建一个较为准确的模拟环境动力学特征的模型或者问题的模型本身就类似于一些棋类游戏是明确或者简单的,个体就可以通过构建这样的模型来模拟其与环境的交互,这种依靠模型模拟而不实际与环境交互的过程类似于“思考”过程。通过思考,个体可以对问题进行规划、在与环境实际交互时搜索交互可能产生的各种后果并从中选择对个体有利的结果。这种思想可以广泛应用于 规则简单、但状态或结果复杂 的强化学习问题中。
1. 环境的模型
正如前面所说,可以根据价值函数或者策略函数来制定agent与环境互动的策略,但是如果能够建立 环境的模型,那么它在与环境 交互的过程 中,既可以通过实际交互来提高模型的准确程度,也可以在 交互间隙 利用构建的模型进行思考、规划,决策出对个体有力的行为。
基于模型的强化学习流程可以用下图表示:

理论上来说,模型 M M M是一个马尔科夫决策过程 M D P < S , A , P , R > MDP MDP<S,A,P,R>的参数化的表现形式。假设状态空间 S S S和行为空间 A A A是已知的,那么模型 M = < P η , R η > M=

上述的这两个模型应该如何学习呢?
显然可以通过神经网络来训练学习,训练的数据集为:

那么将 S T − 1 S_{T-1} ST−1和 A T − 1 A_{T-1} AT−1作为网络的输入, R T R_T RT作为网络的输出,可以训练一个神经网络,这是一个回归问题。
将 S T − 1 S_{T-1} ST−1和 A T − 1 A_{T-1} AT−1作为网络的输入, S T S_T ST作为网络的输出,可以训练一个神经网络,这是一个概率密度估计问题。
当然也可以用查表式的方法,但是现在已经用得比较少了,基本都用神经网络近似拟合。
如果已知模型了,那么控制问题就变为了规划问题,对于已知模型来求解基于此模型的最优价值函数或最优策略,这是典型的动态规划算法,可以参看《动态规划寻找最优策略》,里面有MC算法和TD算法。
由于实际经历的不足或者一些无法避免的缺陷,通过实际经历学习得到的模型不可能是完美的模型,即:
< P η , R η > ≠ < P , R >
而从 基于不完美模型的MDP 中学习得到的最优策略通常也 不是实际问题的最优策略,这就要求个体在环境实际交互的同时要不断的更新模型参数,基于更新模型来更新最优策略。
这种使用近似的模型解决强化学习问题与使用价值函数或策略函数的近似表达来解决强化学习问题并不冲突,它们是从不同角度来近似求解一个强化学习问题,当构建一个模型比构建近似价值函数或近似策略函数更方便时,那么使用近似模型来求解会更加高效。
使用模型来解决强化问题时要特别注意模型参数要随着个体与环境交互而不断地动态更新,即通过实际经历要与使用模型产生的虚拟经历相结合来解决问题,这就催生了一类整合了学习与规划的强化学习算法——Dyna算法。
2. 整合学习与规划——Dyna算法
Dyna算法从 实际经历 中学习得到模型,同时联合使用 实际经历 和基于模型采样得到的 虚拟经历 来学习和规划,更新价值和(或)策略函数,其基本思路如下图所示:

基于行为价值的 Dyna-Q算法的流程如下表所示:

3. 基于模拟的搜索
在强化学习中,基于模拟的搜索(simulation-based search)是一种 前向搜索形式,它从当前时刻的状态开始,利用模型来模拟采样,构建一个关注短期未来的前向搜索树,将构建得到的搜索树作为一个学习资源,使用不基于模型的强化学习方法来寻找当前状态下的最优策略,如下图所示:

如果使用蒙特卡罗学习方法则称为 蒙特卡罗搜索,如果使用Sarsa学习方法,则称为 TD搜索。其中蒙特卡罗搜索又分为 简单蒙特卡罗搜索 和 蒙特卡罗树搜索。
3.1 简单蒙特卡罗搜索
对于一个模型 M v M_v Mv和一个一致的模拟过程中使用的策略 π \pi π,简单蒙特卡罗搜索 在当前实际状态 s t s_t st时会针对行为空间中的每一个行为 a ∈ A a \in A a∈A 进行 K K K次的模拟采样:

通过计算模拟采样得到的 k k k个状态 s t s_t st时采取行为 a a a的收获的平均值来估算该 状态行为对的价值 Q ( s t , a ) Q(s_t,a) Q(st,a):

比较行为空间中所有行为 a a a的价值,确定当前状态 s t s_t st下与环境发生实际交互的行为 a t a_t at(完全贪婪原则):

简单蒙特卡罗搜索 可以使用基于模拟的采样对当前模拟采样的 策略 进行 评估,得到基于模拟采样的某 状态行为对的价值,这个价值的估计同时还与每次采样的 K值大小有关。在估算行为价值时,关注点在于从当前状态和行为对应的收获,并不关注模拟采样得到的一些中间状态和对应行为的价值。
如果同时考虑模拟得到的中间状态和行为的价值,则可以考虑蒙特卡罗树搜索。
3.2 蒙特卡罗树搜索
蒙特卡罗树搜索(Monte-Carlo tree search,MCTS) 在构建当前状态 s t s_t st的基于模拟的前向搜索时,关注模拟采样中所经历的 所有状态及对应的行为,以此构建一个搜索树。利用这颗搜索树不仅可以对 当前模拟策略进行评估,还可以 改善模拟策略。
在使用蒙特卡罗树搜索进行模拟策略评估时,对于个体构建的模型 M v M_v Mv。和当前的模拟策略 π \pi π,在实际当前状态 s t s_t st时模拟采样出 K K K个完整状态序列(和简单蒙特卡罗搜索一样):

构建一颗以状态 s t s_t st为根节点包括所有已访问的状态和行为的搜索树,对树内的每一个状态行为对 ( s , a ) (s,a) (s,a)使用该状态行为对的平均收获来估算其价值︰

当搜索结束时,比较当前状态 s t s_t st下行为空间 A A A内的每一个行为的价值,从中选择 最大价值对应的行为 a t a_t at 作为当前状态 s t s_t st时个体与环境实际交互的行为(完全贪婪原则)。
比较 简单蒙特卡罗搜索 和 蒙特卡罗树搜索。可以看出两者之间的区别在于 前者 针对当前状态 s t s_t st时每一个可能的行为都进行相同数量的采样,而 后者 则是根据模拟策略进行一定次数的采样。此外,蒙特卡罗树搜索会对模拟采样产生的状态行为对进行计数,并计算其收获,根据这两个数据来计算模拟采样对应的状态行为对价值。
比较两者之间的差别可以看出,如果 问题的行为空间规模很大,那么使用 蒙特卡罗树搜索 比简单蒙特卡罗搜索要 更实际可行。
在蒙特卡罗树搜索中,搜索树的广度和深度是伴随着模拟采样的增多而逐渐增多的。在构建这个搜索树的过程中,搜索树内状态行为对的价值也在不停的更新,利用这些更新的价值信息可以使得在每模拟采样得到一个完整的状态序列后都可以一定程度地改进模拟策略。
通常 蒙特卡罗树搜索的策略 分为两个阶段:
-
树内策略(tree policy):为当模拟采样得到的状态存在于当前的搜索树中时采用的策略。树内策略可以是 ϵ \epsilon ϵ-贪婪策略,随着模拟的进行可以得到持续改善; -
默认策略(default policy):当前状态不在搜索树内时,使用默认策略来完成整个状态序列的采样,并把当前状态纳入到搜索树中。默认策略可以是随机策略或基于某目标价值函数的策略。
随着不断地重复模拟,状态行为对的价值将持续地得到评估。同时搜索树的深度和广度将得到扩展,策略也不断得到改善。蒙特卡罗树搜索较为抽象,本章暂时介绍到这里,后续会做进一步的介绍。
参考文献:
-
David Silver强化学习视频.
-
叶强《强化学习入门——从原理到实践》
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
