最强围棋软件Zen的开发历程
更新时间:2013-2-4、浏览次数:
4.1.2陈志行教授的Handtalk程序
目前公认最强的计算机围棋程序应该是陈志行教授的计算机程序HandTalk,陈教授本来是广东中山大学的教授,本身的围棋棋力约有业余五段,几年前为了专心发展计算机围棋程序,申请退休并成立研发小组,专心研究计算机围棋[黄 1996]。
关于HandTalk程序的内容,由于相关的程序内容及研究方法发表的并不多,现今外界对此程序的了解仅限于在比赛时与陈教授讨论所得。以下是我们在几次比赛中与陈教授讨论所得的心得。
HandTalk程序是由汇编语言所撰写,所以它的执行速度很快,而程序本身也不大。由于程序并不大,可以推测出其所运用到的棋型数据也并不多,而且很可能是采用rule-based的方法。HandTalk在大多数的情况下都不会失误,陈教授本人曾提到他是用到一种类似人在下围棋时常用到的方法“手割“,来帮助判断的。另HandTalk的定石资料也很少,这是根据我们实际测试所得到的结果。
HandTalk与其它的程序明显不同的地方是它的攻杀能力特别强,在大多数的比赛中,都可以吃掉对方几块棋而获胜。这应该是由于程序的棋块安危判断能力,形势判断系统,眼位判断能力和棋型比对系统都很强的关系。有关这些系统的好坏,跟设计者的棋力非常有关,陈教授本身近职业水平的棋力,显然对HandTalk程序的撰写很有帮助。
4.1.3 陈克训教授的Go Intellect程序
Go Intellent也是近年来全世界数一数二的程序,有关Go Intellect的内容,陈克训教授有相当多的著作发表[Chen, 1989][Chen, 1990],Go Intellect由于经过多年的发展,在对局时很少出错,可说是发展的相当良好的程序。最近Go Intellect改进较多的地方约有下列三点:
(a) 精良的数据库及棋步产生系统。
(b) 更快的局部攻杀系统。
(c)根据全局搜寻系统所建立的棋步选择系统。
4.1.4 Michael Reiss的Go4++程序
Michael Reiss在1983年开始发展计算机围棋程序,而在最近开始有很好的表现,一度被HandTalk视为最强劲的对手。Go4++ 程序的棋力与它的设计者Michael Reiss并没有很大差距,这是较为特别的地方[Burmeister and Wiles]。
Michael Reiss的主要观念是使用一些简单的算法去计算大量的信息,而不像一般计算机围棋程序大都是用一些复杂的算法去计算少量的信息。举例来说,Go4++程序在产生一个棋步之前,会先用十五个基本的棋型比对出大约五十个候选棋步,再用会用全局搜寻的方式去考虑产生一个棋步,但所用的评估函数却很简单:主要是考虑地域问题。这种方式跟一般制作其它棋类的方式较为接近,此方法的好处是对于模样的感觉很有帮助,而且不需要很复杂的评估函数。坏处则是需要很大的计算量,程序运作需要一台很快速的计算机。
Go4++ 目前的最大优点是它对有关地域的好点不容易失误,这是因为它考虑的候选棋步较多,且有进行全局搜寻的关系。而它的弱点则是处理棋块攻杀的方式较弱,常会发生因为判断错误而放弃一重要的棋块,此缺点使得Go4++ 在最近的棋赛吃亏不少[Burmeister and Wiles]。
4.1.5 David Fotland的The Many Faces of Go程序
The Many Faces of Go (MFG)是最早商业化的软件之一,在国际网络围棋(IGS)上亦可看到它的踪影,发展至今也有十多年的历史,程序本身是用C语言撰写,程序大小约四万行[Burmeister and Wiles]。
MFG的特色之一是它有一个很好的棋型发展系统,目前为止它的棋型数据库约包括1200个8×8的棋型和6900个5×5的棋型,要妥善运用这么多棋型,并不是一件容易的事。首先是棋型的来源,MFG有一个棋型编辑系统,可以用手动的方式来剪贴下所需的棋型。Fotland本来的构想是让高段棋士与MFG对奕,再从对奕的棋谱中剪贴下所需的棋型,但后来Fotland却发现最好的棋型撷取地方是IGS上的高段棋士对奕的棋谱。再来是当这么多棋型要运用在程序中时,所需的计算量是很大的,例如要在一个19×19的棋盘比对1000个棋型,用普通的方式可能要三百万个运算,MFG将棋型编译成为用位数组表示,如此便可用平行位比对的方式进行计算,可将计算量降到350,000[Fotland 1996]。
4.1.6 高国元的Stone程序
高国元本来也是台大信息许舜钦教授的学生,后来到北卡大成为陈克训教授的博士班研究生,所以他的程序可说是综合两者之所长。高国元目前所作的研究中部份是有关计算机围棋的官子,这个研究的主要的方法是将组合对局理论 (combinatorial game theory) 应用在计算机围棋的官子上,目前相关的一些结论是组合对局理论应用在收小官时,可以得到非常好的效果。
5. 结论及未来展望
我们将计算机围棋发展至今的一些代表性程序的棋力统计于图六,这些程序为陈志行教授的HandTalk、陈克训教授的Go Intellect、Mark Boon的Goliath和许舜钦教授的学生们所制作的程序(包括王若曦、曹国明、高国元、刘东岳、严礽麒和颜士净)。从图六我们可以看出在计算机围棋发展初期的八十年代,围棋程序以大约每年两级的速度在进步,而到了九十年代计算机围棋已发展到某一程度,但仍以大约每年一级的速度在稳定进步中,由此看来,计算机围棋目前仍在稳定发展之中,另一方面,在前述文章中,由各围棋程序各有特色看来,计算机围棋还有相当大的发展空间。综合上述两点,再根据我们本身对计算机围棋的了解,我们推测计算机围棋的棋力大约在公元两千年前后,可以到达日本棋院的初段棋力(约台湾的五级左右)。
图六 计算机围棋棋力进步情形(棋力/年份)
参考文献
[许 1989] 许舜钦,计算机围棋在台湾的回顾与前瞻,中国工程师学会,日本分会,1989年学术研讨会论文集,1989。
[围棋基金会 1995] 应昌期围棋教育基金会,计点制围棋规则,1995年版。
[黄 1996] 黄天源,比朝阳更绚烂的黄昏,羊城晚报,港澳海外版,1996/11/15。
[Allis et al., 1991] L.V. Allis, Van Den Herik, and H.J. Herschberg. Heuristic Programming in Artificial Intelligence 2, Ellis Horwood 1991.
[Berliner, 1974] H.J. Berliner. Chess as Problem Solving: the Development of a Tactics Analyzer. Ph.D. Dissertation, Carnegie-Mellon University, Pittsburgh, 1974.
[Burmeister and Wiles 96] Jay Burmeister and Janet Wiles. An Introduction to the Computer Go Field and Associated Internet Resources. World-Wide-Web page, http: //www.psy.uq.edu.au/~jay/, 1996.
[Brown and Dowsey 81] D.J. H. Brown and Dowsey, S. The challenge of Go. New Scientist, 1981, pages 303--305.
[Chen, 1989] Ken Chen. Group identification in Computer Go. Heuristic Programming in Artificial Intelligence, Levy & Beal ( Eds.), Ellis Horwood 1989, pages 195--210.
[Chen, 1990] Ken Chen. The move decision process of Go intellect. Computer Go, No.14, pages 9--17, 1990.
[Fotland 1996] David Fotland. World Computer Go Championships, World-Wide-Web page, http://www.mth.kcl.ac.uk/~mreiss/bill/comp/.
[Hsu et al., 1994] S.C. Hsu, J.C. Yan, and H. Chang. Design and implementation of a computer Go program Archimage 1.1. Journal of Information Science and Engineering10, pages 239--258, 1994.
[Hsu and Liu, 1991] S.C. Hsu and D.Y. Liu. The design and construction of the computer Go program dragon 2. Computer Go, No. 16, pages 3--14, 1991.
[Hwang and Hsu, 1994] Y.J. Hwang and S.C. Hsu. Design and implementation of a position judgment system for computer Go programs. Bulletin of the College of Engineering, N.T.U., No. 62, pages 21--33, Oct. 1994.
[Kojima et.al., 1996] Takuya Kojima, Kazuhiro Ueda, and Saburo Nagano. A case study on acquisition of pattern knowledge in Go using ecological analogy. Game programming workshop in Japan, pages 133--139, 1996.
[Lorentz, 1995] Richard J. Lorentz. Pattern matching in a Go Playing Program. Game programming workshop in Japan, pages 167--174, 1995.
[Mü ller, 1995] Martin Mü ller. Computer Go as a Sum of Local Games: An Application of Combinatorial Game Theory. Ph.D. Dissertation, Swiss Federal Institute of Technology Zurich, 1995.
[Newell et al., 1958] A. Newell A., J.C. Shaw, and H.A. Simon. Chess playing programs and the problem of complexity. IBM Journal of Research and Development, Vol. 4, No. 2. Pages 320--335, 1958.
[Reitman and Wilcox, 1978] Walter Reitman and Bruce Wilcox. Pattern recognition and pattern-directed inference in a program for playing Go. Pattern-Directed Inference Systems, pages 503--523, 1978.
[Samuel, 1959] A.L. Samuel. Some studies of machine learning using the game of checkers. IBM Journal of Research and Development, Vol. 3, No. 3, pages 210--229, 1959.
[Zobrist, 1970] Zobrist, A. L. Feature Extraction and Representation for Pattern Recognition and the Game of Go, Ph.D. Dissertation, University of Wisconsin, 1970.