暴力搜索 & 剪枝
- 剪枝优化:深蓝在多算2步的基础上,还可以看情况排除一些太差的棋路,进一步降低需要搜索的范围。
- 针对棋手的优化:深蓝是专门针对卡斯帕罗夫这个棋手来设计的。它事先存储了卡斯帕罗夫历史上所有的对局,每场新对局后还会再根据情况改一改参数。求卡斯帕罗夫的心理阴影面积。
结果就是,深蓝比卡斯帕罗夫高出160个等级分,相当于世界第1和世界第20之间的差距。
AlphaGo:破除人类最后骄傲的黑天鹅围棋棋盘
做一个围棋 AI 有多难?
- 围棋的变化特别多,19*19的棋盘,每一步最多有上百种走法;
- “一子落错满盘皆输”,每一步都可能反转局势,所以比赛过程中很难估测双方的胜率。
AlphaGo 的两个神经网络
AlphaGo 使用机器学习,靠两个网络来帮助做决策。
- 策略网络:对于任意一个棋盘,能给出接下来可以落子的位置和每个位置对应的可能性,这样就快速缩小了搜索范围。就好像一个经验丰富的人类棋手,看一眼棋盘就知道哪几个位置比较常见。要得到这个网络,AlphaGo 除了分析人类现有的棋谱,还跟自己模拟对战了很多场,不断把新的结果融合进网络。
- 估值网络:一盘棋下到一半,它能给出这个时候任何一方的胜率。这个估计,越接近终盘越准确。要得到这个网络,需要在第一个网络的基础上,进一步利用机器学习来训练模型。
AlphaGo 两个有趣的优化:
- 快速走子网络:思考不深入但是速度快,搭配估值网络来更好地判断最终胜负。
- 蒙特卡洛模拟:AlphaGo 在自我模拟对战的时候,不总是选择胜率最大的走法,而是偶尔也会试一下别的走法。比如有 ABC 三条路,胜率分别是95%、90%、85%,正常情况下我们总是选择 95% 的那条路,但现在我们也有一定的几率选择另外两条,而且胜率越高的路选中的可能性也越高。偶尔不走寻常路,反而可以发掘更多的可能性,厚积薄发、出奇制胜。
胜率越高的路选中的可能性也越高
AlphaGo 相比于深蓝有了划时代的进步——它不再单纯靠堆砌硬件来暴力求解,也不再专门针对某个棋手进行作弊式优化,是真正意义上的围棋“*手”。