强化学习笔记(七):蒙特卡洛树搜索(MonteCarlo Tree Search)
目录
选择
扩展
模拟
反向传播
课外资料
如果说多臂赌博机问题被看做 单步强化学习任务
(只用一步决策玩哪个老虎机,然后就收到回报),那么蒙特卡洛树搜索可以看做是解决 多步强化学习任务
的工具。 树
是一种天然的用来刻画或者存储多步决策的数据结构。正如所有的动态规划问题可以被转化为图搜索,而所有的线性规划问题可以被转化为二分图一样。 至于蒙特卡洛树搜索,实际上可以分为两步[1]:
- 利用树结构来重新表达决策问题
- 利用蒙特卡洛方法来进行搜索
MCTS对游戏进行多次模拟,然后尝试基于模拟结果对最佳下一步进行预测。MCTS的四个步骤,即选择、扩展、模拟和反向传播。
MCTS的主要概念还是搜索。搜索是沿着游戏树的一组遍历的集合,单次遍历是从根节点(当前游戏状态)到一个未完全展开节点的路径。一个未完全展开的节点意味着它至少有一个未被访问的子节点。当遇到未完全展开的节点时,从该节点的子节点中选取一个未被访问过的用来进行一次模拟。模拟的结果然后反向转播是当前树的根节点,并更新节点的统计信息。当搜索结束时(受限于时间或计算能力),就可以根据收集的统计信息来决定下一步怎么走[2]。
选择
UCT(树的置信度上界)是一个让我们从已访问的节点中选择下一个节点来进行遍历的函数,也是MCTS的核心函数[2]。
第一部分是总收益/总次数=平均每次的收益,参数c是利用和探索之间的折中系数。
如何选择动作?———选择使得Q值最大的动作
扩展
通过上面两个图的对比,所有子节点都被访问了,则这个节点被全扩展了,否则,这个节点没有被全扩展。
模拟
在实际应用中,搜索的一开始,根节点的所有子节点都是未被访问的,如果选择了一个,第一次模拟就随之开始。要注意的是,模拟过程中由rollout策略函数选择的节点是不会被标记为已访问过的,只有从模拟开始的节点被标记为已访问过。模拟的最简单的形式只是一个从给定游戏状态到终端的随机移动序列。模拟总是会产生一个结果,对于游戏来说就是获胜、失败或平局,但是广义上来说模拟的合法结果可以是任意值[2]。
反向传播
反向传播是从叶节点(模拟开始)到根节点的遍历。模拟结果被传送到根节点,并更新反向传播路径上每个节点的统计信息。反向传播保证每个节点的统计信息能够反映该节点所有后代的模拟结果[2]。
课外资料
在学习的过程中,看见一个博主[1] 的一份作业,感觉有意思,粘贴在这里,并附上了原文链接,感兴趣的同学可以瞅瞅。
作业的任务是这样的:如何利用蒙特卡洛树搜索来解决一个图染色的组合优化问题。具体而言,给定一个无向图和一串红蓝相间的颜色序列,初始给一个节点按照颜色序列的顺序给其染色。接下来,我们可以给未染色并且是已染色点的相连点进行染色,并且必须按照颜色序列的顺序染色。如果颜色序列用尽或者所有的点都被染上色,那么任务结束。最终的收益为连接两个不同颜色点(已染色)的边的数量,并且越大越好。
博主[1]的代码基于Monte Carlo Search Algorithm Discovery for One Player Games这篇文章,给出了实现蒙特卡洛树搜索的通用框架。也就是基于这个框架,可以很简单的构造出任意类型的蒙特卡洛树搜索算法,所以通过该博主的代码,你可以获得蒙特卡洛树搜索的通用框架!
具体的程序代码以及文档,请见https://github.com/Greenwicher/Awsome-Project/tree/master/IE5504%20Systems%20Modeling%20and%20Advanced%20Simulation
参考资料:
[1]:http://blog.greenwicher.com/2016/12/24/drl-from_mab_to_mcts/
[2]:https://blog.csdn.net/qq_16137569/article/details/83543641 强烈推荐这个博客,这篇博文讲的很清楚!!
斯坦福cs234课件:http://web.stanford.edu/class/cs234/index.html
强化学习笔记(七):蒙特卡洛树搜索(MonteCarlo Tree Search)相关推荐
- 蒙特卡洛树搜索的主要流程有哪些_笔记:蒙特卡洛树搜索
Model-free: 类似monte carlo control, sarsa, q-learning, ac算法都是model-free算法.样本完全从经验中获得.从来不利用对于下一个状态,下一个 ...
- 强化学习笔记:AlphaGo(AlphaZero) ,蒙特卡洛树搜索(MCTS)
1 AlphaZero的状态 围棋的棋盘是 19 × 19 的网格,可以在两条线交叉的地方放置棋子,一共有 361 个可以放置棋子的位置,因此动作空间是 A = {1, · · , 361}.比如动 ...
- 蒙特卡洛树搜索算法实现_蒙特卡洛树搜索实现实时学习中的强化学习
蒙特卡洛树搜索算法实现 In the previous article, we covered the fundamental concepts of reinforcement learning a ...
- 强化学习(八):Dyna架构与蒙特卡洛树搜索MCTS
强化学习(八):Dyna架构与蒙特卡洛树搜索MCTS 在基于表格型强化学习方法中,比较常见的方法有动态规划法.蒙特卡洛法,时序差分法,多步引导法等.其中动态规划法是一种基于模型的方法(Model- ...
- 蒙特卡洛方法、蒙特卡洛树搜索(Monte Carlo Tree Search, MCTS) 学习
文章目录 1. 从多臂赌博机说起 2. UCB 3. 蒙特卡洛树搜索 4. 伪代码 提出一个问题: 假设你当前有n个币,面前有k个赌博机.每个赌博机投一个币后摇动会产生随机的产出,你会怎么摇? 1. ...
- 强化学习笔记(一)马尔可夫决策过程
强化学习笔记(一)马尔可夫决策过程 参考资料 正文 Q1: R t R_{t} Rt, G t G_{t} Gt, V ( S t ) V(S_{t}) V(St)都有奖励或收获的含义,它们有什 ...
- 蒙特卡洛树搜索的主要流程有哪些_「详细原理」蒙特卡洛树搜索入门教程
本文是对 Monte Carlo Tree Search – beginners guide 这篇文章的文章大体翻译,以及对其代码的解释. 1 引言 蒙特卡洛树搜索在2006年被Rémi Coulom ...
- 那么蒙特卡洛树搜索(Monte Calro Tree Search, MCTS)究竟是啥
同时发布于:http://www.longgaming.com/archives/214 Intro 最近阿法狗和李师师的人机大战着实火了一把,还顺带捧红了柯杰,古力等一干九段.虽然我从小学的是象棋, ...
- 【人工智能】基于蒙特卡洛树搜索和策略价值网络的AI五子棋算法设计
基于蒙特卡洛树搜索和策略价值网络的AI五子棋算法设计 摘要 蒙特卡洛树搜索算法 五子棋博弈的状态价值函数 附1:详细论文说明下载: 附2:实现代码下载(2022.10更新后代码): 摘要 随着人工智能 ...
最新文章
- 【牛客网】牛客练习赛19 F 算式子【数学--递推 、前缀、数字】
- 使用docker搭建gitlab服务器
- 插入数据到hive_Hive实现网站PV分析
- winform中UI设计分辨率问题
- idle运行python_如何从IDLE交互式shell运行python脚本?
- 创建一个守护进程来监听服务进程的异常状态_用 C# 来守护 Python 进程
- 【Android开发】jarsigner重新打包apk
- Pycharm整体缩进
- pandas安装完成后,报错:ImportError
- 安卓手机刷机liunx服务器_Android手机通用刷机教程,小白必看!
- 最简单理解高内聚低耦合
- 【算法训练营】 - ⑩ 并查集与图
- python怎么写rpg游戏_python实现的简单RPG游戏流程实例
- 回忆杀,pythonQ版泡泡堂
- nginx: [emerg] getpwnam(“nobody”) failed
- nvh个人检测下载_变速箱NVH质量检验系统.pdf
- python中%d %2d %02d %-2d% %.2d的区别
- WAS集群:记一次Node Agent不活动问题解决过程
- jQuery的animate()的scrollTop属性在iPad Safari上不起作用
- Qt实现定时自动检测串口
热门文章
- ISAP 算法的学习
- “2021年度ICT产业龙虎榜”揭晓,九州云喜提“双黄蛋”
- pythonprint空格符博客_Python day two
- Anycast 公网加速 AIA解决方案
- 台积电投注美国,结果美国却在放弃台积电,外媒:卸磨杀驴
- 西建大历年电子与通信工程复试真题_2016年北京理工大学电子与通信工程(882)复试笔试回忆题...
- 智慧社区智慧物业APP决方案
- JS含有部分相同属性的两个对象快速赋值法
- linux开启网卡fcoe功能,在Redhat上配置FCoE的方法
- java chunked编码解码_HTTP1.1中CHUNKED编码方式传输数据的解析