黑白棋模板估值简介

    关于黑白棋的估值,有三个很重要的概念,行动力,潜在行动力和稳定子,还有一个概念是奇偶性,在终局时有些作用,而开局时没什么用处。对此不了解的朋友可以到网上搜索,有很多介绍。本文主要介绍一下模板估值的原理。
    行动力,潜在行动力和稳定子,这些参数的计算都是比较复杂的,为了加速估值,提出了模板估值法。模板估值的思想是将全局的行动力,潜在行动力和稳定子化为局部的行动力,潜在行动力和稳定子,再将这些局部的参数组合来表示全局参数。每个局部包含的棋子个数不多,可以预先计算好,这样在最终估值时就可以用查表代替计算,如此来加快速度。
    模板是棋盘上的某一块区域,比如棋盘上的一行,一个角落上边长为3的方块等。注意,棋盘上的第一行和第八行以及第一列、第八列都是等效的,属于同一模板,因为他们可以通过旋转来得到,同理,四个角落的方块也是同一模板。模板中每个棋位有3种状态——黑、白、空,因此一个包含N个棋子的模板总共有3^N种状态,也叫模板配置。根据每种模板配置所能代表的局部行动力、潜在行动力、稳定子,可以为每种模板配置打分,而对一个局面估值时则把棋局拆分为各个模板,根据每个模板的配置来查找每个局部的得分,最后加起来得到整个局面的得分。
    模板的选择,我不清楚是否有什么理论指导,但大多数强力的程序都做出了类似的选择,以Zebra为例,他选择了11种模板,分别是——第2、3、4行,长度4、5、6、7、8的斜线,第一行加上两个X格(X格就是B2这种位置),角落上的边长为3的方块,角落上2X5的长方形块。其中长度为8的斜线通过旋转有两种实例,而2X5的长方形块除了旋转还有镜像,总共存在8种实例,其他的都是4种实例。因此,总共将一个局面分为了46种模板的实例,最后把这46种模板实例的得分相加得到局面总分。
    模板系数的计算,模板系数就是每种模板配置的得分。模板配置的总量巨大,如上所述的11种模板大概总共有十多万种配置,而且对于不同阶段的局面又有很大的区别,因此还要将整个对局过程分为多个阶段,要给他们打分就不可能靠手工了,必须用一种算法来自动打分。好在对于黑白棋,这不难。网上可以下载到很多的棋局,每个棋局包含了从开局到结束每一步走法的记录,由此可以计算出这棋局的最终结果。对大量的棋局(这些棋局称我为训练棋局)分析,得到每个棋局对应的46种模板配置,然后去逼近最终结果,从而计算出训练棋局中遇到过的模板配置的得分,当然,一定还有很多的模板配置在训练棋局中从未遇到,这些模板配置将赋予中立的0分。具体的计算方法请参考 http://www.cs.ualberta.ca/~mburo/ps/improve.pdf ,这里由于输入数学符号不便,不写了。模板系数的计算需注意一点,就是模板配置的对称问题,上述11种模板中,除了2x5这种模板外,其他模板都有对称配置问题。举例来说,“BBWW”这种配置和“WWBB”实际是等效的,而从训练棋局计算得到的结果中,这两种对称配置可能得分不同,我的处理方法是两种对称配置的得分取加权平均值,让它们相等,但这个方法是否合理我不清楚。
    模板估值的效果,模板系数是对已有棋局的统计而得到的,其效果和选择的训练棋局有很大的关系,训练棋局应尽可能的覆盖各种可能的棋局,而且通常认为应选择有高手参与的棋局,注意并不要求双方都是高手,那样反而造成覆盖面不广。这样模板系数的计算结果会更真实的体现实际情况。模板估值在越接近终局越准确,而开局时误差非常大,这是模板估值的一个弱点。还有,那些在训练棋局中从未遇到的模板配置,由于其系数是0,如果在实际对局中遇到了,也会带来误差。
    我选择的训练棋局由于选择了双方都是高手的棋局,因此效果可能反而不好。在实际对局中,在相同的搜索深度下反而不敌直接用行动力,潜在行动力和稳定子估值的程序。对于那些在训练棋局中从未遇到的模板配置,我想可以对已经训练好的模板进行再训练,具体方法我正在考虑,待续……
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页