答案当然是否定的,局面估值有意义,非常有意义。我们前文说过现在的计算机没有穷举很多游戏的算力,那计算机是怎么在象棋、围棋等领域打败人类的呢?其实就是靠估值。不过因为计算机的算力比人类高,所以可以采用一些不同的估值方式。
alphago用到的一个技术是蒙特卡洛树搜索。这个方法简单来说就是,我从当前局面开始随机下很多盘棋下到结束,然后看看下一步下什么的情况下我的胜率最高。这个方法就是以随机下了若干盘棋的胜率作为局面的估值。
这个方法听起来有点道理,但好像问题也挺大的。最直接的问题是随机下的棋很可能是没什么实战意义的棋,根本不能代表局面的优劣。为了弥补这个问题,我们需要不那么随机地下,比如每步在看上去比较靠谱的几步里随机。怎么选出看上去比较靠谱的几步呢?我们需要另一个估值方式,这个估值方式可以不太准确,但一定要估得快,然后再在这种估值方式认为比较好的几步棋中随机(实际上也要留一些小概率给这种估值方式认为比较差的棋,防止有些分支走不到),这样才能下很多很多盘棋给蒙特卡洛树搜索提供估值的依据。
更早的象棋软件使用的技术更直接一点,称为min-max搜索。这个方法来自于那些算力可以穷尽的游戏的启发。比如说,对于一个游戏,你算出了所有最终分支的结果,是一个分数,此时怎么判断你最终能拿到的最大分数?我们的方法是倒推。当我们处于一个状态时,我们假设这个状态往后走一步的所有状态的最终分数都是已知的,然后我们看看这个状态是轮到自己行动还是轮到对方行动,如果轮到自己行动,那这个状态的最终分数就是后面那些状态的最大值,否则这个状态的最终分数是后面那些状态的最小值(当然,我们假设这是零和博弈)。这样一步步倒推我们就能知道当前状态的最终分数。对于算力不能穷尽的游戏,我们事先限定一个最大搜索深度,把这个深度内的所有分支都搜出来,然后给达到的局面一个估值,这个估值又是一定要快,然后再用一步步倒推求最大值或最小值的方式求出当前局面的估值。当然min-max搜索也有很多改进,比如说只保留一些估值好的分支,把估值差的分支剪掉,再继续往深了搜索。
可以看到,不管是蒙特卡洛树搜索,还是min-max搜索,都是一种估值方式,也都要建立在另一种不太准确但非常快的估值方式之上,我们称为快速估值算法。