杜向然
中国象棋评估函数的分析
杜向然
(天津海运职业学院,天津市 300350)
中国象棋计算机博弈是人工智能的一个重要研究领域,它研究的核心是如何使搜索算法与评估函数更有效的结合。文章介绍了中国象棋博弈系统中评估函数的常用构造方法,并对这些方法进行分析。
中国象棋;评估函数;增强学习;神经网络
中国象棋计算机博弈的研究已经开展了很多年,它的研究成果已经被应用到很多实际的领域当中。在中国象棋博弈系统的组成部分中,评估函数是最重要的部分之一,好的评估函数可以准确地判断当前棋局的形势,从而保证搜索引擎的搜索方向正确。
象棋博弈者在走棋时,他需要考虑全部有价值的走法,并且通过前瞻若干步,才能形成博弈者的当前决策。在这个过程中,如何对棋局进行评估,以及如何让棋局朝着有利的方向进行呢?为了解决这个问题人们提出了评估函数。下面将介绍几种常用的构造评估函数的方法。
(一)传统评估函数
传统评估函数也叫静态评估函数,它是通过计算博弈双方评估值的差值得到的。我们假设现在是红方走棋,那么此时的评估函数就可以表示下式
Evaluation(Current Board)=Evaluation(Red)-Evaluation(Black)
其中Evaluation(x)表示的是评估函数,Evaluation(Red)表示红方状态的评估值;Evaluation(Black)表示黑方状态的评估值。
1.评估函数的组成
评估函数通常从六个方面评价博弈双方的局势:棋子的价值、棋子位置的价值、棋子对棋盘的控制、棋子的灵活性、棋子之间的威胁和保护以及一些对棋局影响较大的特征。
棋子的价值代表的棋子的重要程度。根据中国象棋规则,每个棋子都有自己独特的走法,这样导致了每种类型棋子的作用和重要程度都不相同。
棋子位置的价值表示的是不同棋子在棋盘不同位置上会有不同的价值,这里的价值主要是指对博弈对手的威胁程度。
棋子的灵活性是指每个棋子可以“走动”的范围。一般来说,我们认为棋子能“走动”的范围越多,它对防守或进攻的贡献越大。
中国象棋讲究的是棋子之间的配合,需要让棋子之间构成一个相互联系的整体,棋子之间的威胁与保护正是这方面的体现。棋子的安全程度取决于它的保护者和威胁者的个数、类型和当前轮到哪方走等多种因素。
棋子对棋盘的控制与棋子之间的威胁和保护在处理方法上有很多相似之处,它们之间的区别是前者是对棋盘中某些位置的控制,而后者是对棋子的控制。棋子对棋盘的控制这个特征在棋局开始和中盘的时候都是很有价值的,但是当棋局进入到残局阶段,棋盘上的棋子比较少,每个棋子控制的范围自然增多,这时棋子对棋盘的控制这个特征在评估函数中的作用就下降了。
下棋时的一些战术和棋子之间配合的价值也需要在评估函数中体现。下棋时的战术主要包括:捉双、牵制和抽子等。棋子间的配合主要是指兵、车、马和炮之间的配合,比如:过河兵牵手、连环马和霸王车等。这些棋子间配合的价值往往大于配合棋子的价值之和。
2.传统评估函数的优缺点
传统评估函数的优点是充分考虑中国象棋的知识和象棋专家的经验,但同时也正是由于这些优点导致它会有如下的缺点:首先、评估函数需要花费过多的时间,从而减少了搜索算法的搜索深度。其次、过分依赖象棋专家的经验,这样构造的评估函数容易受到象棋专家水平和经验的限制。最后、评估函数是固定不变的。中国象棋中的局势千变万化,如果一直都用一成不变的评估函数对所有的棋局进行评价,这显然是不可靠的。
(二)自学习方法得到的评估函数
通过自学习方法得到评估函数主要包括增强学习与神经网络相结合构造评估函数,增强学习与数据库相结合构造评估函数以及遗传算法优化评估函数。
1.增强学习与神经网络结合构造评估函数
增强学习与神经网络结合构造评估函数是通过瞬时差分(TD)算法训练以神经网络表示的评估函数,其中TD算法是增强学习方法中的一种,这种算法的思想是通过相邻状态之间的差值引导智能体完成对未知状态的预测。神经网络(图1)是由许多神经元互连在一起所组成的复杂网络,通过不断调整网络权值达到学习的目的。
图1 神经网络
TD与神经网络结合学习评估函数的具体过程是:首先,通过神经网络形成评估函数。神经网络的输入层表示的是象棋的当前局面,输出层表示的是对当前棋局的评估值。如图1,输入层中A1,A2…A90表示的是当前棋盘中每个点的状态。输出层中C表示的是对当前棋局的评估值,C的取值范围是0到1之间,当C=1表示取胜,C=0表示失败。其次,根据棋局的最终结果,使用TD预测网络误差。最后,使用误差反传的方法不断修改节点的权值来逼近精确评估值。
2.增强学习与数据库结合构造评估函数
象棋比赛时,输棋一方常常是因为下棋过程中的某一步或某几步出现失误,最终导致失败。如果能把判断失误的局面记下来,下次再遇到同样的局面时就不会犯同样的错误了。基于这样的思想,增强学习与数据库结合构造评估函数的算法应运而生。该算法的具体过程是:首先,博弈系统进行比赛,同时记录与系统预测不同的对手招法。其次,如果这些招法导致了对手的获胜,那么就通过增强学习的方法修改这些局面的评估值。最后,将这些局面和相应的评估值放入到数据库中。这样下次再遇到同样的局面时就可以直接从数据库中取出相应的评估值,从而达到自学习的效果。
3.遗传算法优化评估函数
遗传算法是一种全局优化算法,它借用了生物遗传学的方法,通过选择,交叉、变异等机制实现了个体适应性的提高,遗传算法优化评估函数时,每组染色体串代表的是一组评估函数的参数,至于染色体串的编码方式通常采用的是二进制编码的方式,适应度函数采用的是锦标赛算法。遗传算法在进行优化时,每次让两个个体之间进行互换先后手的两场比赛,如果一方获胜,那么对该方的适应度进行奖励,输了对适应度进行惩罚,和了则不操作。当每两个个体之间都进行先后手互换的两场比赛之后,找出适应度最高的一些染色体作为下一代的父个体,通过对这些父个体进行交叉和变异的操作形成新的种群。
自学习方法构造评估函数的优点是:一方面使搜索引擎和评估函数达到一种平衡,这样既可以保证评估函数的准确性在可接受的范围内,又保证了搜索引擎达到一个理想的搜索深度。同时,评估函数也可以与博弈系统中的其他部分进行有效的合作。另一方面使博弈系统具有自学习的能力,也就是使它具有了“智能”。这样可以使博弈系统通过“自身”的经验提高棋力,从而实现在没有人(或外力)的干预下达到提高棋力的目的。这种方法的缺点是:算法的训练时间过长。评估函数进行优化时,需要博弈系统进行大量的实验,反复调试才能确定一个合适的函数,而且算法容易陷入到局部极值中。
本文详细讲述了中国象棋博弈系统中常用的构造评估函数的方法:传统的评估函数和自学习方法构造的评估函数,并着重介绍了这两类方法的实现原理以及各自的优缺点。总体来说,虽然这些技术已经在很多棋类系统中获得了成功,但要想在中国象棋计算机博弈中取得同样的效果,还需要与中国象棋的特点加以结合,并不断完善。不过,随着中国象棋博弈研究的深入和越来越多的学者投身到这项研究中,中国象棋博弈系统成功的日子已经不远了。
[1]Sheng Xing,Bo-Jun Xie,Chun-Ru Dong,Yu-lin He.Neural Net wor k Co mbined with TD Lear ning in Chinese Chess Procedure.International Conference on Machine Learning and Cybernetics.2008.
[2]Shi-Ji m Yen,Jr-Chang Chen,Tai-Ning Yang,Shun-Chin Hsu.Computer Chinese Chess.ICGA.2004,(03).
[3]付强,陈焕文.中国象棋人机对弈的自学习方法研究[J].计算机技术与发展.2007,(12).
[4]王骄,王涛,罗艳红等.中国象棋计算机博弈系统评估函数的自适应遗传算法实现[J].东北大学学报.2005,(10).
Analysis of Chinese Chess Evaluation Function
DU Xiang-ran
(Tianjin Mariti me Vocational College,Tianjin 300350 China)
Computer-game of Chinese chess is an i mportant research field of artificial intelligence,whose core is to effectively combine the search algorith m and the evaluation f unction.This paper introduces and analyzes the common constructor for evaluation f unction in computer-game of Chinese chess
Chinese chess;evaluation f unction;lear ning reinforcement;neural net work
O39
A
1673-582X(2012)02-0087-03
2011-09-02
杜向然(1982-),男,天津人,天津海运职业学院信息工程系助教,硕士研究生,主要研究方向是人工智能与机器博弈。