
关于 AlphaGo 整体框架,可以看我前段时间写的一篇推送:要不我也说说 AlphaGo?
可以看出,在 AlphaGo 的框架中,蒙特卡洛树搜索 (Monte Carlo Tree Search) 是用来快速评估棋面位置价值的。它的核心思想用 Sutton 的 RL 书 [1] 中一句话就可以概括:
下棋其实就是一个马尔科夫决策过程(MDP),根据当前棋面状态,确定下一步动作。
那么,该下哪步才能保证后续赢棋的概率比较大呢?
最容易想到的就是枚举之后的每一种下法,然后计算每步赢棋的概率,选择概率最高的就好了:
但是,对于围棋而言,状态空间实在是太大了,没办法枚举啊:
这种时候就是靠蒙特卡洛树搜索了。它的方法也非常简单,那就是「没病走两步」:
换个通俗点的说法,就是用频率估计概率。只要采样的样本数越多,频率越接近概率。
具体的算法原理和理论推导,建议直接去看 Sutton 的书 [1]。
[1] Sutton, Richard S., and Andrew G. Barto. Reinforcement learning: An introduction. Vol. 1. No. 1. Cambridge: MIT press, 1998.
