先说结论,增大随机性,减少策略性。规则越复杂,策略性越高,越有利于AI。
古早的棋类AI依赖于对规则的理解,对棋子的价值(棋力、位置和对其他棋子的影响等)进行赋值,并遍历所有的可能性,从而找出最优的走法。比如打败国际象棋大师的「更深的蓝」。
深蓝是平行运算的电脑系统,建基于RS/6000 SP,另加上480颗特别制造的VLSI象棋晶片。下棋程式以C语言写成,运行AIX操作系统。 1997年版本的深蓝运算速度为每秒2亿步棋,是其1996年版本的2倍。1997年的深蓝可搜寻及估计随后的12步棋,而一名人类象棋好手大约可估计随后的10步棋。每增加1步棋的搜寻能力约等于增加下棋强度约80 ELO分。1996年2月10日,深蓝首次挑战国际象棋世界冠军卡斯巴罗夫,但以2-4落败。比赛在2月17日结束。其后研究小组把深蓝加以改良——它有一个非官方的昵称「更深的蓝」(Deeper Blue)——1997年5月再度挑战卡斯巴罗夫,比赛在5月11日结束,最终深蓝电脑以3.5–2.5击败卡斯巴罗夫,成为首个在标准比赛时限内击败国际象棋世界冠军的电脑系统。
对于这样的棋类AI,我们可以通过增大游戏规则的复杂度来增加棋子价值的不确定性,从而加大计算量,使得AI无法找出最优解。比如,当年的围棋就是这样的。
一般认为,电脑要在围棋中取胜比在国际象棋等游戏中取胜要困难得多,因为围棋的下棋点极多,分支因子远多于其他游戏,而且每次落子对情势的好坏飘忽不定, 诸如暴力搜寻法、Alpha-beta剪枝、启发式搜索的传统人工智能方法在围棋中很难奏效。围棋无法仅通过寻找最佳棋步来解决。游戏一盘平均约有150步,每一步平均约有200种可选的下法,这意味着有太多需要解决的可能性。
但是,新的棋类AI已经没必要解读这些规则了。新的AI只要经过大量的对战,就可以自主地找到最优解,像AlphoGo那样。
AlphaGo使用蒙特卡洛树搜索 (Monte Carlo tree search),借助估值网络(value network)与走棋网络(policy network)这两种深度神经网络 ,通过估值网络来评估大量选点,并通过走棋网络选择落点。AlphaGo最初通过模仿人类玩家,尝试匹配职业棋手的过往棋局,其数据库中约含3000万步棋着。后来它达到了一定的熟练程度,它开始和自己对弈大量棋局,使用强化学习 进一步改善它。因此,棋类游戏的策略如果过于复杂,很可能人类自己都无法深刻理解并完全掌握,从而出现像围棋中的「神之一手」或「迷之胜利」这样的情况。那么,AI很可能通过大量对战,先于人类掌握了最优步骤或者必胜步骤。
为了使人类在棋类游戏中保持一定的胜率,我们需要增加随机性,而减少策略性。简单来说,就是将AI拉低到和人类一样的水平,大家都靠天吃饭,胜负看脸。需要指出的是,这里所说的随机性,指的是「真随机性」,而不是现在一些电子游戏中的「假随机性」。否则,AI还是能够通过对概率的预测而完爆人类。
极致的随机性游戏就是掷骰子,不过跟AI玩掷骰子有点无聊。我们可以在棋类游戏(比如象棋)的基础上加入掷骰子环节。每一回合先掷骰子,赢的走棋;吃子之前先掷骰子,赢了才能吃,输了这步作废。这样一来,应该能将AI的胜率降下来。不过还是有点无聊啊。
以上。