Modification of UCT with Patterns in Monte-Carlo Go(论文阅读)

摘要:用于解决多臂赌博机UCB1算法已经被扩展成了解决极大极小树搜索的UCT算法。我们开发了一套Monte-Carlo围棋程序,MoGo,这是第一个使用UCT算法实现的计算机围棋程序。我们解释了为了围棋应用而对UCT的修改,同时还介绍了有效提高MoGo性能的模式智能随机模拟。在本文还讨论了UCT结合剪枝技术对于大型围棋棋盘的应用以及UCT的并行化。如今MoGo已经是在$9\times9$和$13\times13$围棋棋盘上的顶级围棋程序。
关键词:计算机围棋,Exploration-exploitation,UCT, Monte-Carlo, Patterns
1 引言
围棋的历史可以追溯到大约4000年前,并且这项游戏现在仍在世界范围内广受欢迎。虽然它的规则很简单(在http://www.gobase.org中有详细介绍),但是自从七十年代末开始,它的复杂性使得试图构建一个优秀的计算机围棋选手变得十分困难。现在围棋代替了国际象棋成为了AI中最困难的挑战之一。
围棋和国际象棋相比有很多不同。首先树的规模和分支因子要比国际象棋大得多。一般来说围棋的棋盘范围从$9\times9$到$19\times19$之间(相比而言国际象棋的棋盘只有$8\times8$;围棋每一步都有几百种可能,而国际象棋只有数十种。第二,目前还没有计算最适合落子的有效评价函数可用。因此,对于计算机国际象棋选手采用的alpha-beat搜索算法并不能提供很好的围棋策略。
最近Monte-Carlo方法在评估围棋落子上已经有一些进展了(在第二部分有更详细的描述)。然而,这种评价过程只是有限的精确;以每一步最高的分来评价并不会在最后就赢得胜利。而是每一步都会限制在一些相关的候选步中。还有,由于离散搜索空间的规模太大使得很难使用标准的增强学习方法来处理,也很难增强一个好的围棋选手所必须的exploration versus exploitation (EvE) 搜索策略。
本文也考虑到了另一个起源于博弈论中的EvE设定,即多臂赌博机问题。多臂赌博机问题模拟了一个赌徒依赖于过去的选择和奖励为了最大化奖励而选择下一台要赌博的机器的问题。由Auer等人提出在多臂赌博机框架下的UCB1算法最近被Kocsis等人(UCT算法)用于树结构的搜索空间。
我们提出的选手(MoGo)最主要的贡献是:
(i)为了围棋修改了UCT算法,
(ii)在Monte-Carlo评价函数中使用sequence-like模拟。
同时也解决了其他几个算法的问题,比如动态树结构,并行化和启发式(简单的剪枝启发)。MoGo已经达到了一个相当不错的围棋水平:自从2006年8月,MoGo在Computer Go Server中的$9\times9$棋盘中的142个计算机围棋中排名第一;并且它在2006年10月和11月的国际Kiseido围棋服务器中赢得了所有的比赛($9\times9$和$13\times13$)。
本文的组织结构如下。
第二部分简要的介绍了一下相关的工作,我们假设读者了解基本的围棋知识。
第三部分描述了MoGo,主要集中于我们的贡献:在大规模搜索空间中UCT的实现,and the use of prior, pattern-based, knowledge to bias the Monte-Carlo evaluation。
第四部分报告和讨论了实验结果。
本文以讨论如何从知识以及计算机密集的角度来提高MoGo。
2 前期的相关工作
我们的方法是基于Monte-Carlo围棋以及多臂赌博机问题,它们分别在2.1部分和2.2部分描述
多臂赌博机 multi-armed bandit problem
UCB1算法
UCT算法 Upper bound Confidence for Tree
Go
Exploration-exploitation exploration versus exploitation
Bandit Algorithms for Website Optimization
Monte-Carlo
Patterns
增强学习 Reinforcement Learning approach
sequence-like simulations
Modification of UCT with Patterns in Monte-Carlo Go(论文阅读)的更多相关文章
- Introduction to Monte Carlo Tree Search (蒙特卡罗搜索树简介)
Introduction to Monte Carlo Tree Search (蒙特卡罗搜索树简介) 部分翻译自“Monte Carlo Tree Search and Its Applicati ...
- Monte Carlo tree search 学习
https://en.wikipedia.org/wiki/Monte_Carlo_tree_search 蒙特卡洛树搜索(MCTS)基础 http://mcts.ai/about/index.htm ...
- 基于Monte Carlo方法的2048 A.I.
2048 A.I. 在 stackoverflow 上有个讨论:http://stackoverflow.com/questions/22342854/what-is-the-optimal-algo ...
- Monte Carlo方法简介(转载)
Monte Carlo方法简介(转载) 今天向大家介绍一下我现在主要做的这个东东. Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代 ...
- 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)
1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...
- PRML读书会第十一章 Sampling Methods(MCMC, Markov Chain Monte Carlo,细致平稳条件,Metropolis-Hastings,Gibbs Sampling,Slice Sampling,Hamiltonian MCMC)
主讲人 网络上的尼采 (新浪微博: @Nietzsche_复杂网络机器学习) 网络上的尼采(813394698) 9:05:00 今天的主要内容:Markov Chain Monte Carlo,M ...
- Monte Carlo Approximations
准备总结几篇关于 Markov Chain Monte Carlo 的笔记. 本系列笔记主要译自A Gentle Introduction to Markov Chain Monte Carlo (M ...
- (转)Markov Chain Monte Carlo
Nice R Code Punning code better since 2013 RSS Blog Archives Guides Modules About Markov Chain Monte ...
- [其他] 蒙特卡洛(Monte Carlo)模拟手把手教基于EXCEL与Crystal Ball的蒙特卡洛成本模拟过程实例:
http://www.cqt8.com/soft/html/723.html下载,官网下载 (转帖)1.定义: 蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数 ...
随机推荐
- (转)unity web 缓存解决方案
unity web 缓存解决方案 官方发布 web版限制五十M缓存,根据自己的经验绕了过去,解决了缓存的问题.带工程,带源代码.由于本人的水平也有限,是用JS来解决的,如果你还是没有头绪,可以购买来试 ...
- 导出pem证书给服务端Push Notification使用
1. 钥匙串创建Push证书的证书签名请求文件(CSR文件). 如下图所示: 2.创建App ID,创建Provisioning Profile,下载安装到XCode. 苹果开发者后台页面,创建Pus ...
- OC语言基础之NSString
1.字符串的创建 1: NSString *s1 = @"jack"; 2: 3: //NSString *s2 = [[NSString alloc] initWithStrin ...
- USB High Speed Inter-Chip (HSIC) IP: What is it? And why should I use it?
来源: https://www.synopsys.com/dw/dwtb.php?a=hsic_usb2_device What is HSIC? HSIC (High-Speed Inter-Chi ...
- oracle数据库维护常用操作
查看用户相关信息 查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system select * from dba_users; 查看你能管理的所有用户! select * from ...
- [Java基础] 使用JMAP dump及分析dump文件
转载:http://blog.csdn.net/kevin_luan/article/details/8447896 http://liulinxia02.blog.163.com/blog/stat ...
- “DllRegisterServer的调用失败”问题解决办法(转)
在日常的工作中,用regsvr32 命令注册dll组件是,会碰到模块"xxx.dll"已加载,但DllRegisterServer的调用失败.特别是再在xp的系统上能正确注册,但是 ...
- solr6.6 高级搜索Facet
1.介绍 facet分面查询是solr中以导航为目的的查询,在用户查询的结果上根据分类增加了count信息,然后用户根据count信息做进一步实现渐进式精确搜索. 什么字段适合用facet呢? fa ...
- 【DP】UVA 624 CD 记录路径
开一个数组p 若dp[i-1][j]<dp[i-1][j-a[i]]+a[i]时就记录下p[j]=a[i];表示此时放进一个轨道 递归输出p #include <stdio.h> # ...
- 【FAQ】Ubuntu环境下ant编译android代码问题
在Ubuntu14.04环境下,编译android程序时候,运行ant debug的时候出现如下异常: