强化学习笔记(七):蒙特卡洛树搜索(MonteCarlo Tree Search)

目录

选择

扩展

模拟

反向传播

课外资料


如果说多臂赌博机问题被看做 单步强化学习任务 (只用一步决策玩哪个老虎机,然后就收到回报),那么蒙特卡洛树搜索可以看做是解决 多步强化学习任务 的工具。  是一种天然的用来刻画或者存储多步决策的数据结构。正如所有的动态规划问题可以被转化为图搜索,而所有的线性规划问题可以被转化为二分图一样。 至于蒙特卡洛树搜索,实际上可以分为两步[1]:

  • 利用树结构来重新表达决策问题
  • 利用蒙特卡洛方法来进行搜索

MCTS对游戏进行多次模拟,然后尝试基于模拟结果对最佳下一步进行预测。MCTS的四个步骤,即选择、扩展、模拟和反向传播。

MCTS的主要概念还是搜索。搜索是沿着游戏树的一组遍历的集合,单次遍历是从根节点(当前游戏状态)到一个未完全展开节点的路径。一个未完全展开的节点意味着它至少有一个未被访问的子节点。当遇到未完全展开的节点时,从该节点的子节点中选取一个未被访问过的用来进行一次模拟。模拟的结果然后反向转播是当前树的根节点,并更新节点的统计信息。当搜索结束时(受限于时间或计算能力),就可以根据收集的统计信息来决定下一步怎么走[2]。

强化学习笔记(七):蒙特卡洛树搜索(MonteCarlo Tree Search)_第1张图片

  • 选择

UCT(树的置信度上界)是一个让我们从已访问的节点中选择下一个节点来进行遍历的函数,也是MCTS的核心函数[2]。

 ​​​​​​第一部分是总收益/总次数=平均每次的收益,参数c是利用和探索之间的折中系数。

如何选择动作?———选择使得Q值最大的动作

强化学习笔记(七):蒙特卡洛树搜索(MonteCarlo Tree Search)_第2张图片

  • 扩展

强化学习笔记(七):蒙特卡洛树搜索(MonteCarlo Tree Search)_第3张图片

 通过上面两个图的对比,所有子节点都被访问了,则这个节点被全扩展了,否则,这个节点没有被全扩展。

  • 模拟

强化学习笔记(七):蒙特卡洛树搜索(MonteCarlo Tree Search)_第4张图片

在实际应用中,搜索的一开始,根节点的所有子节点都是未被访问的,如果选择了一个,第一次模拟就随之开始。要注意的是,模拟过程中由rollout策略函数选择的节点是不会被标记为已访问过的,只有从模拟开始的节点被标记为已访问过。模拟的最简单的形式只是一个从给定游戏状态到终端的随机移动序列。模拟总是会产生一个结果,对于游戏来说就是获胜、失败或平局,但是广义上来说模拟的合法结果可以是任意值[2]。

  • 反向传播

反向传播是从叶节点(模拟开始)到根节点的遍历。模拟结果被传送到根节点,并更新反向传播路径上每个节点的统计信息。反向传播保证每个节点的统计信息能够反映该节点所有后代的模拟结果[2]。

强化学习笔记(七):蒙特卡洛树搜索(MonteCarlo Tree Search)_第5张图片

课外资料

在学习的过程中,看见一个博主[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 

你可能感兴趣的:(强化学习,python,算法,人工智能,强化学习)