强化学习基础篇(三十四)基于模拟的搜索算法

上一篇Dyna算法是基于真实经验数据和模拟经验数据来解决马尔科夫决策过程的问题。本篇将结合前向搜索和采样法,构建更加高效的搜索规划算法,即基于模拟的搜索算法。

1、前向搜索算法(Forward Search)

前向搜索算法将当前状态作为根节点构建一个搜索树,并使用马尔科夫决策过程模型进行前向搜索。需要注意的是前向搜索主要关注的是从当前状态开始构建的马尔科夫决策过程,而非整个马尔科夫决策过程。

image.png

2、基于模拟的搜索(Simulation-Based Search)

基于模拟的搜索算法从当前时间步开始,在环境模型或者实际环境中进行采样,生成当前状态到终止状态的K条经验模拟轨迹:

image.png

在获得模拟经验轨迹数据后,使用model-free的强化学习算法,求解价值函数或者策略函数。基于蒙特卡洛控制算法的模拟搜索称为蒙特卡洛搜索,基于Sarsa算法或者Q-learning的模拟搜索称为时间差分搜索。

3、蒙特卡洛搜索

蒙特卡洛搜索是基于模拟的搜索中最为简单的一种形式。其实现形式简单,运行速度快。但由于该方法基于特定的模拟策略,如果模拟策略自身并非较优策略,基于模拟策略下产生的动作很可能不是状态下的较优动作。

蒙特卡洛搜索的具体步骤如下:

  • (1)给定环境模型和模拟策略。

  • (2)针对动作空间中每一个动作,从当前状态开始模拟出K条模拟经验轨迹:

  • (3)使用平均奖励评估动作的动作价值

  • (4)选择动作值函数的极大值,作为当前状态下的最优动作:

4、蒙特卡洛树搜索

简单蒙特卡洛搜索算法中,模拟策略可保持不变,导致最终获得的动作不一定是针对当前状态的最优动作。本节介绍的蒙特卡洛树搜索法,通过评估基于当前模拟策略构建的搜索树中的每一个动作值,并基于评估的动作值改进模拟策略。随后不断重复上述评估与改进的过程,使得最终改进的模拟策略能够生成更优的动作。蒙特卡洛树搜索算法分为选择、扩展、模拟和回溯4个步骤。而本节为了将蒙特卡洛树搜索和强化学习中的策略改进过程结合起来,将主要介绍评估和模拟两个阶段,以更好理解简单蒙特卡洛搜索和蒙特卡洛树搜索的差异。

评估

蒙特卡洛搜索树的评估,主要指衡量基于模拟策略针对当前状态所构建的搜索树中的每一个(状态,动作)对的价值,其具体步骤如下:

  • (1)给定环境模型。

  • (2)使用模拟策略,从当前状态模拟出K条模拟经验轨迹:

  • (3)基于上一步生成的模拟经验轨迹数据集,生成包括智能体所经历过(状态,动作)对的搜索树。

  • (4)针对上一步生成的搜索树,计算搜索树中每个(状态,动作)对从开始到终止状态的一个完整经验轨迹的平均奖励,作为该(状态,动作)对的动作价值:

  • (5)当所有(状态-动作)对的价值得到更新后,选择动作值函数的极大值,作为当前状态下的最优动作:

模拟

由评估过程可知,在搜索树的构建过程中,其中所有的对的价值都得到更新。而更新后的一状态-动作>对价值信息,可用于改进模拟策略(类似于策略优化过程),即选取能够最大化动作值的动作。

需要注意的是,由于构建的搜索树并不包括所有对空间的价值,所以每次模拟(从当前状态到终止状态)都包含了2个部分:搜索树内状态以及搜索树外状态。策略改进时要分情况进行处理:针对搜索树内状态采用树内确定性策略,针对搜索树外状态采用树外默认策略。

  • 树内确定性策略:对于搜索树中已存在的(状态,动作)对,策略的更新倾向于选择使得值最大化的动作。随着模拟的进行,已存在的(状态,动作)对的策略会持续得到改进。
  • 树外默认策略:对于搜索树中不包含的状态,可采用随机策略对状态进行选择。

在重复模拟中,搜索树的(状态,动作)对的价值将得到持续更新,并基于可以使得搜索树不断进行扩展,使得模拟策略得到持续改进。

5、时间差分搜索

相比于蒙特卡洛法,时间差分法无须等到一次经验轨迹采样结束之后才进行学习,可以在每一时间步进行学习,使得时间差分算法具有更高的学习效率。与此类似,相比于蒙特卡洛树搜索,时间差分搜索同样无须等到经验轨迹的终止状态,可以聚焦于特定节点的状态,使得节点价值的更新更加高效。

简而言之,时间差分搜索可看成采用Sarsa学习算法对从当前状态开始的子马尔可夫决策过程问题进行求解,主要求解过程如下。

  • (1)从当前实际状态开始模拟经验轨迹集,采样过程中,将(状态-动作)对作为节点录入搜索树.

  • (2)估计搜索树内每一个节点(状态-动作对)的动作价值Q

  • (3)在模拟过程的每一步,采用Sarsa算法更新动作值:

  • (4)基于步骤(3)获得的动作值函数,使用策略或其他策略获得执行动作。

回溯法采用的搜索策略_强化学习基础篇(三十四)基于模拟的搜索算法相关推荐

  1. 回溯法采用的搜索策略_数值优化|笔记整理(3)——线搜索中的步长选取方法,线性共轭梯度法...

    上一节笔记传送门: 学弱猹:数值优化|笔记整理(2)--线搜索:步长选取条件的收敛性​zhuanlan.zhihu.com ------------------------------------ 大 ...

  2. 回溯法采用的搜索策略_下列那种函数是回溯法中为避免无效搜索采取的策略( )_学小易找答案...

    [填空题]图示刚架,单元编号.结点编号和结点位移编号如图所示,则单元 3的单元定位向量为 _________ .提示:写成 [ , , , , ,]T的形式 [单选题]下列测量仪器中,最适宜用于多点水 ...

  3. 回溯法采用的搜索策略_五大常用算法之四:回溯法

    1.概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就"回溯"返回,尝试别的路径.回溯法是一种选优搜索法,按选优条件向 ...

  4. 回溯法采用的搜索策略_急性阑尾炎最典型的症状为:

    票的的持定价按一它授先购买股格在内优权利予它有者一定时期,急性普通的一认股股东种特权是权优先. 阑尾物屠岸个人中杜撰出迁在记·晋世家>贾这司马<史. 比较悲剧文化地反中国集中精神映了,炎最 ...

  5. 强化学习基础篇(五):Dyna-Q 算法

    强化学习基础篇(五):Dyna-Q 算法 (Dynamic Programming) 1. 简介 2. Dyna-Q 3. Dyna-Q 代码实践 4. 小结 文章转于 伯禹学习平台-动手学强化学习 ...

  6. 强化学习经典算法笔记(十四):双延迟深度确定性策略梯度算法TD3的PyTorch实现

    强化学习经典算法笔记(十四):双延迟深度确定性策略梯度算法TD3的PyTorch实现 TD3算法简介 TD3是Twin Delayed Deep Deterministic policy gradie ...

  7. WF4.0 基础篇 (三十 完) 对学习WF的一点建议

    从09年10月份 NET4.0 Bata 2发布后,我就开始写[WF4.0 基础篇]这个系列,经历了5个多月终于在NET4.0正式发布前将这个系列完成了 这段时间与一些对WF4.0感兴趣的公司与开发人 ...

  8. LINUX学习基础篇(十二)痕迹命令

    LINUX学习基础篇(十二)痕迹命令 系统痕迹命令 w命令 who命令 last命令 lastlog命令 lastb命令 系统痕迹命令 系统中有一些重要的痕迹日志文件,如/var/log/wtmp./ ...

  9. LINUX学习基础篇(十五)软件包管理

    LINUX学习基础篇(十五)软件包管理 软件包管理 软件包分类 源码包 二进制包 选择 依赖性 rpm包安装 rpm包命名规则 rpm包安装和卸载 服务命令 rpm查询命令 验证 数字证书 rpm中文 ...

最新文章

  1. 解决packet tracer不能复制CLI内容的问题
  2. 交换与路由技术课程期末上机测试题目一
  3. 长沙.NET社区之光
  4. 只需5分钟即可启动并运行分层架构:: Spring Boot第1部分
  5. 工业交换机的几大“择机”标准,你学会了吗?
  6. [转载] java如何实现一个字符串的反转和替换
  7. linux那些事之page fault(AMD64架构)(user space)(2)
  8. maven多个子项目、父项目之间的引用问题
  9. python去重计数_用Python实现透视表的value_sum和countdistinct功能
  10. 目标检测——如何获取图片的唯一ID
  11. java的写法作文,RxJava系列文章(二) - 网络图片添加水印RxJava写法
  12. 笨方法学python 习题31
  13. C#即时通讯客户端源码【源码免费分享】
  14. Image Tampering Detection via Semantic Segmentation Network
  15. 将字体变成红色加粗字体
  16. this.name=name;中两个name都是什么意思?
  17. 有得必有失,你该把技术做多细?
  18. 配置 Windows Server 2008 R2 DNS 服务器
  19. 将Python代码制作成exe程序
  20. 趣图:六层网络协议的消息传递

热门文章

  1. AngularJS+Satellizer+Node.js+MongoDB-Instagram-01
  2. 批量创建Linux用户账号
  3. 血淋淋的教训—将Vue项目打包成app的跨域问题
  4. boost文件锁的使用
  5. CentOS RabbitMQ安装
  6. c++的输入流基础知识
  7. 【屏幕保护】GIS相关的屏幕保护【什么是GIS】
  8. java多线程创建一个简单的案例
  9. locate: command not found updatedb: command not found
  10. 接口测试之json中的key获取