1、2019/2/19,1,现代计算机围棋的主要智能技术,北京邮电大学 北邮-九鼎计算机围棋研究所 刘知青,2019/2/19,2,简介,现代计算机围棋博弈使用了大量的智能科学技术 本次报告介绍现代计算机围棋博弈中所使用智能科学技术基本概念和基本理论 本次报告假设观众具有以下背景和基础 高等数学和概率论 数据结构和算法分析 操作系统 简单的围棋规则与知识,2019/2/19,3,本次报告的主要智能技术,多臂匪徒问题与UCB算法(20分钟) 马尔科夫决策优化与UCT算法(20分钟) 假设检验与模式识别(20分钟) 模式的哈希表示与匹配(20分钟) 围棋Monte-Carlo形势评估(20分钟) 共享
2、内存的多核并行计算(20分钟),2019/2/19,4,主要智能技术之间的关系,每次围棋对弈中的落子计算是使用UCT算法在围棋博弈树上进行马尔科夫决策优化的一个过程 围棋博弈树的每个内部节点对应于一个多臂匪徒问题,UCT算法使用UCB算法进行优化搜索选点 围棋博弈树的每个叶子节点上, UCT算法使用Monte-Carlo方法进行形势评估 Monte-Carlo形势评估大量使用通过假设检验所识别的模式以提高评估准确率 使用哈希编码表示模式以提高其匹配效率 使用共享内存的多核并行计算以提高总的效率,2019/2/19,5,专业词汇,Markov Decision Process:马尔科夫决策过程
3、Multi-Armed Bandit Problem:多臂匪徒问题 Upper Confidence Bound:UCB算法 UCB Applied to Tree:UCT算法 Hypothesis Testing:假设检验 Pattern Recognition:模式识别 Hashing Function:哈希函数 Zobrist Hashing:Zobrist哈希 Monte-Carlo Method:蒙特卡洛方法 Shared Memory:共享内存 Multi-Thread Concurrent Computing:多线程并发计算 Multi-Core Parallel Computi
4、ng:多核并行计算,2019/2/19,6,1.多臂匪徒问题与UCB算法,探索与利用之间的权衡 多臂匪徒问题模型 UCB算法 基于UCB算法的优化选择算法,2019/2/19,7,探索与利用之间的权衡,机器学习中的探索 机器学习中的利用 探索与利用之间的矛盾与权衡,2019/2/19,8,多臂匪徒问题模型,多臂匪徒问题是权衡机器学习中探索与利用的一个典型模型,在统计学中有过仔细的研究 多臂匪徒问题模型: 一个多臂匪徒可以被看作一个赌场里的多臂角子机 每个臂由一个序列的随机变量所定义 这些随机变量的值代表了连续拉动该臂(以下称为“访问该机器”)所获得的回报 这些回报是相互独立的和恒等分布的,并符
5、合某种未知的回报率,2019/2/19,9,多臂匪徒问题的策略与遗憾,多臂匪徒问题的策略指的是一个算法,该算法根据过去所访问机器及其回报的序列来决定下一次要拉动的臂 理论上的最优策略总是访问回报最高的机器,但理论上的最优策略需要预先的知识,不可能是机器学习的结果 由于一个策略不一定总是访问回报最高的机器,因此它的总体回报要比最优策略的总体回报要小,其差别的期望就被定义为该策略的遗憾 很明显,遗憾较小的策略较好;其中理论上的最优策略的遗憾是零,2019/2/19,10,多臂匪徒问题的最优机器学习策略,基于机器学习的多臂匪徒问题的最优策略具有以下特点: 其遗憾不超过访问次数的对数函数 最优机器访问
6、次数是次优机器访问次数的指数倍 在每只机器上定义上限信心索引,作为该机器回报期望的估计 每次访问上限信心索引最大的机器,2019/2/19,11,最优机器学习策略之一:UCB1算法,如果回报的范围是0,1,UCB1算法就是多臂匪徒问题的一个最优机器学习策略 UCB1算法如下: 访问每个机器各一次 循环: 访问当前上限信心索引最大的机器,2019/2/19,12,UCB1算法中的上限信心索引,在UCB1算法中上限信心索引通过二项的和来计算,第一项为当前的平均回报,第二项为平均回报信心范围一侧的尺寸,2019/2/19,13,基于UCB1算法的优化选择算法,优化选择算法,用于选择最优机器 基于UC
7、B1算法的优化选择算法 while (having_time) loop 使用UCB1算法访问某个机器 end loop return 访问次数最多的机器,2019/2/19,14,存在类似的其它形式的UCB算法,UCB2算法 UCB tuned算法 UCB1 normal算法 -贪婪算法,2019/2/19,15,多臂匪徒问题与UCB算法参考文献,H. Robbins. (1952). Some Aspects of the Sequential Design of Experiments. Bulletin of the American Mathematical Society, (58
8、):527535. Berry, D., and Fristedt, B. (1985). Bandit problems. London: Chapman and Hall. Lai, T. and Robbins, H. (1985). Asymptotically efficient adaptive allocation rules. Advances in Applied Mathematics, (6)422. Agrawal, R. (1995). Sample mean based index policies with O(log n) regret for the mult
9、i-armed bandit problem. Advances in Applied Probability, (27)10541078. Auer, P., Cesa-Bianchi, N. and Fischer, P. (2002). Finite-time analysis of the multiarmed bandit problem. Machine Learning Journal, 47(2-3):235256.,2019/2/19,16,2.马尔科夫决策优化与UCT算法,马尔科夫决策过程 Monte-Carlo规划 UCT算法,2019/2/19,17,马尔科夫决策过程,
10、马尔科夫决策过程是个数学框架,用于特定状况下的决策,该状况下的结果有部分随机性,也部分取决于决策者的控制 马尔科夫决策是个离散时间上随即控制过程。在每一步时间上,进程的状态为s,决策者选择行为a,进程在下一步时间上会随机地变到s,同时决策者得到回报R(s,s). 马尔科夫决策过程适用于一大类优化问题的研究,这些问题的解决方法通常包含动态规划和增强型学习,2019/2/19,18,Monte-Carlo规划与马尔科夫决策过程,Monte-Carlo规划是解决大型状态空间上的马尔科夫决策过程的不多的有效方法之一: 采用以采样为基础向前搜索 在搜索过程中会建立一棵状态树或状态-行为树 采样的回报会相
11、应地反映在树上,2019/2/19,19,Monte-Carlo规划的伪代码,function MonteCarloPlanning(state)Repeatsearch(state, 0)until Timeoutreturn bestAction(state,0)function search(state, depth)if Terminal(state) then return 0if Leaf(state; d) then return Evaluate(state)action := selectAction(state, depth)(nextstate; reward) := s
12、imulateAction(state, action)q := reward + search(nextstate, depth + 1)UpdateValue(state; action; q; depth)return q,2019/2/19,20,Monte-Carlo规划与UCT算法,UCT算法是把UCB算法应用于树 UCT算法可以提高Monte-Carlo规划算法的效率,并具有以下二大特点: 如果算法提前结束,其错误概率较小 如果运行的时间足够长,算法的结果会收敛到最优解 UCT算法也应用于博弈树的搜索,2019/2/19,21,UCT算法,UCT算法是Monte-Carlo规划算
13、法的改进 其核心改进在selectAction函数中: 每个树的内部节点是一个独立的多臂匪徒问题,其中每一个臂对应于一个行为及其回报,其中回报是以该节点为起点所模拟路径段回报的集成 使用UCB1算法在树的内部节点上选择模拟中的下一个行为,2019/2/19,22,UCT算法参考文献,Kearns, M., Mansour, Y. and Ng, A.Y. (1999). A sparse sampling algorithm for near-optimal planning in large Markovian decision processes. In Proceedings of IJ
14、-CAI99, 1324-1331. Kocsis, L. and Szepesvari, C. (2006). Bandit based monte-carlo planning. In ECML-06.,2019/2/19,23,3.假设检验与模式识别,频率方法 假设检验 模式识别,2019/2/19,24,频率方法,最简单的方法计算语料库中搭配出现的次数,如果二个事物一起出现的次数很多,其关联度可能就不一般 频率方法在一定程度上是有效的,但其有效性有缺陷: 高频率可能是偶然性的:如果二个字的出现频率都很高,它们一起出现的频率也会搞,但并不表明它们之间有较强的关联度而成为一个词,例如,“人
15、的”,2019/2/19,25,假设检验,关联度实质上表示二个字之间的关联不是偶然的,这是统计学的一个经典问题,叫做假设检验。 我们做个空假设H0:二个字之间没有偶然机会之外的联系,然后计算在H0为真的情况下二个字一期出现的条件概率p,如果p足够小(例如p 0.05, 0.01, 0.005, 或0.001),我们就可以否定H0,从而证明二个字之间存在偶然机会之外的联系,2019/2/19,26,2检验,本检验的本质是比较观察到的频率与相互独立时所期望频率之间的差别。如果差别很大就可以否定相互独立的空假设,2019/2/19,27,可能性比率检验,类似于2检验,但更适合于稀疏数据 对于w1w2
16、,考虑假设H1和H2,H1代表相互独立,H2代表相互不独立 计算假设H1和H2的可能性L(H1)和L(H2),及其比率-2log(L(H1)/ L(H2),2019/2/19,28,可能性比率的计算,2019/2/19,29,假设检验与模式识别,能够通过检验(可能性比率)从而否定空假设的数据都被识别为模式 本模式识别过程可以通过对语料库的处理而快速的获得,2019/2/19,30,假设检验与模式识别参考文献,Manning, C.D. and Schtze. H. (1999). Foundations of Statistical Natural Language Processing, T
17、he MIT Press, Cambridge, Massachusetts. Liu, Z., Dou, Q., Li, W. and Lu, B. (2008). Automatic Acquisition of Pattern Collocations in GO, Journal of China University of Posts and Telecommunications, 15(1):61-67.,2019/2/19,31,4.模式的哈希表示与匹配,模式匹配中的效率问题 Zobrist哈希模式编码 使用Zobrist哈希编码进行模式匹配,2019/2/19,32,模式匹配中
18、的效率问题,模式匹配中的效率要求: 大量的模式:百万数量级 几何模式:二维,形状不固定 匹配要求高:是否存在匹配以及匹配的位置 大规模的匹配:每秒钟百万数量级的匹配要求 简单的模式表示无法满足以上要求,2019/2/19,33,模式的哈希表示,哈希函数H把二维不定长的几何模式p映射到一维整数(例如,32位整数)空间上,并具有以下特点: 如果二个模式p1=p2,那么H(p1)=H(p2) 如果二个模式p1p2,那么H(p1)H(p2)成立的概率非常大(H(p1)=H(p2)的概率是2-32) H(p1)和H(p2)之间的比较效率远远大于p1和p2之间的比较效率,2019/2/19,34,Zobr
19、ist哈希,棋盘上的每一特征元素都用一个随机数来表示(围棋上共有361个点,每个点有三种颜色可能,所以共有1023个特征元素) 把模式分解为一系列特征元素的集合 模式的Zobrist哈希值是其特征元素所对应随机数的与或,2019/2/19,35,模式匹配,每个模式以其Zobrist哈希值的方式存在物理内存中的哈希表中 模式匹配也就简化成在哈希表查找整数,其复杂度为单位时间,与哈希表中模式的数量无关,2019/2/19,36,模式的哈希表示与使用参考文献,Zobrist, A.L. (1969). A Hashing Method with Applications for Game Playi
20、ng, Tech. Rep. 88, Computer Sciences Department, University of Wisconsin, Madison, Wisconsin,2019/2/19,37,5.围棋Monte-Carlo形势评估,Monte-Carlo对局伪代码:while (not终盘) loop计算所有落子可下点从中随机选一点落子end loopreturn 终盘胜负结果 形势评估,2019/2/19,38,落子可下点的计算与终盘的识别,落子可下点的计算取决于围棋规则和常识: 规则禁止的点均不是落子可下点,例如自杀、劫 常识中坏点均不是落子可下点,例如自己的眼、使自己
21、成为一口气 当对局双方都没有可下点时即为终盘,2019/2/19,39,终盘胜负结果的判断,在终局时死子已被提光 使用中国围棋规则进行简单胜负判断: 黑点归黑 白点归白 所有相连的空点成为一体,如果周围均为黑点则全部归黑,如果周围均为白点则全部归白,否则不归任一方,2019/2/19,40,形势评估,期望结果模型 博弈树结点的形势评估值是从该节点进行Monte-Carlo对弈结果的期望值 博弈树结点的形势评估值=该节点的胜利次数/该节点的访问次数,2019/2/19,41,围棋Monte-Carlo形势评估参考文献,Abramson, B. (1990). Expected-outcome :
22、 a general model of static evaluation. IEEE transactions on PAMI, (12)182193. Bouzy, B. and Helmstetter, B. (2003). Monte-Carlo Go Developments, ACG. Volume 263 of IFIP, 159174. Gelly, S., Wang, Y., Munos, R., and Teytaud, O. (2006). Modication of UCT with patterns in Monte-Carlo Go. Technical Repor
23、t 6062, INRIA, France.,2019/2/19,42,6.共享内存的多核并行计算,多核微处理器 多线程操作系统与运算模型 多线程运算模型与共享内存 共享内存的多核并行计算,2019/2/19,43,多核微处理器是发展方向,微处理器的发展方向: 在单个芯片上提高微处理器的处理速度比较困难 在单个芯片上集成多个处理单元比较容易 2006年9月,Intel公布一个80核的微处理器,并承诺5年内投放市场,2019/2/19,44,多线程操作系统与运算模型,操作系统 现代操作系统都通过线程支持在多核微处理器上进行对称多处理 多线程运算模型 竞争问题 同步机制 应用程序 没有跟上微处理器
24、的发展 很多程序员仍没有掌握多线程运算模型,2019/2/19,45,多线程运算模型与共享内存,共享内存是多线程运算模型的基础 共享内存也是多线程运算模型中复杂性的原因,2019/2/19,46,共享内存的多核并行计算,共享内存的多线程并发计算 共享内存的多核并行计算 每个线程有其独立的核进行运算,2019/2/19,47,总结,现代计算机围棋博弈中所使用主要智能科学技术基本概念和基本理论: 每次围棋对弈中的落子计算是使用UCT算法在围棋博弈树上进行马尔科夫决策优化的一个过程 围棋博弈树的每个内部节点对应于一个多臂匪徒问题,UCT算法使用UCB算法进行优化搜索选点 围棋博弈树的每个叶子节点上, UCT算法使用Monte-Carlo方法进行形势评估 Monte-Carlo形势评估大量使用通过假设检验所识别的模式以提高评估准确率 使用哈希编码表示模式以提高其匹配效率 使用共享内存的多核并行计算以提高总的效率,2019/2/19,48,谢谢,