摘要:用于解决多臂赌博机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(论文阅读)的更多相关文章

  1. Introduction to Monte Carlo Tree Search (蒙特卡罗搜索树简介)

    Introduction to Monte Carlo Tree Search (蒙特卡罗搜索树简介)  部分翻译自“Monte Carlo Tree Search and Its Applicati ...

  2. Monte Carlo tree search 学习

    https://en.wikipedia.org/wiki/Monte_Carlo_tree_search 蒙特卡洛树搜索(MCTS)基础 http://mcts.ai/about/index.htm ...

  3. 基于Monte Carlo方法的2048 A.I.

    2048 A.I. 在 stackoverflow 上有个讨论:http://stackoverflow.com/questions/22342854/what-is-the-optimal-algo ...

  4. Monte Carlo方法简介(转载)

    Monte Carlo方法简介(转载)       今天向大家介绍一下我现在主要做的这个东东. Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代 ...

  5. 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)

    1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...

  6. 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 ...

  7. Monte Carlo Approximations

    准备总结几篇关于 Markov Chain Monte Carlo 的笔记. 本系列笔记主要译自A Gentle Introduction to Markov Chain Monte Carlo (M ...

  8. (转)Markov Chain Monte Carlo

    Nice R Code Punning code better since 2013 RSS Blog Archives Guides Modules About Markov Chain Monte ...

  9. [其他] 蒙特卡洛(Monte Carlo)模拟手把手教基于EXCEL与Crystal Ball的蒙特卡洛成本模拟过程实例:

    http://www.cqt8.com/soft/html/723.html下载,官网下载 (转帖)1.定义: 蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数 ...

随机推荐

  1. [转]iOS ARC机制 weak strong

    写在开头 虽然距离WWDC2011和iOS 5已经快一年时间,但是很多开发者并没有利用新方法来提高自己的水平,这点在ARC的使用上非常明显(特别是国内,基本很少见到同行转向ARC).我曾经询问过一些同 ...

  2. python中的else子句

    在一般的语言中else子句一般是紧跟在if 子句后面,但是python语言中else子句可以不跟在if子句后面,请看下面代码: >>> for n in range(2, 10): ...

  3. hdu2829 四边形优化dp

    Lawrence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  4. ODATA4 及实现

    ODATA4 的JAVASCRIPT 实现:     http://jaydata.org/ ODATA4 的JAVA 项目  Apache Olingo:http://olingo.incubato ...

  5. 【Todo】Nodejs学习计划

    /Users/baidu/Documents/Data/Interview/Web-Server开发/深入浅出Node.js-f46c.pdf /Users/baidu/Documents/Data/ ...

  6. Yii2-核心框架代码规范

    1.概述 简单说,我们使用PSR-2兼容规范,所以应用于PSR-2的一切对我们的代码也同样适用. 文件必须使用 <?php 或 <?= 标签. 文件未尾应该有一个新行. PHP代码文件必须 ...

  7. 【云计算】mesos+marathon 服务发现、负载均衡、监控告警方案

    Mesos-dns 和 Marathon-lb 是mesosphere 官网提供的两种服务发现和负载均衡工具.官方的文档主要针对DCOS,针对其它系统的相关中文文档不多,下面是我在Centos7上的安 ...

  8. centos7,py2和py3共存

    1.查看是否已经安装Python CentOS 7.2 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5. 使用 python -V 命令查看一下是否安 ...

  9. SoC嵌入式软件架构设计之六:API设计方法

    在嵌入式系统中,驱动都是以API的方式提供给应用进行调用.这里介绍嵌入式系统的API设计和管理方法. 驱动在系统中会按模块进行分类,比如按键驱动.LCD驱动.文件系统.card驱动.I2C驱动等等:每 ...

  10. win10下iis绑定局域网ip无效的解决方案

    win7不会出现此问题 win10会 win8未测试 问题描述 <binding protocol="http" bindingInformation="*:808 ...