围棋的每一步有多少种可能的下法?
围棋可能是变化最多最复杂的棋类。 但是,对围棋的误解甚多,最出名的就是围棋有多少种变化?一种简单的算法是:
“根据围棋的行棋规则,其变化是黑白两子交替选择的结果,19路标准棋盘一共有361交叉点,第一步有361个点可以选择,即有361种变化,第二步有360个点……以此类推,其变化应该是361×360×359×……2×1,即361!,约1.43*10的768次方。”
这是一个广泛流传的天文数字,但这个算法其实没有任何实际意义。 在真实下棋的时候,有意义的是围棋的每一步有多少可能的下法? 这才是棋手,包括AL棋手才需要考虑的问题。
在关于棋类的AI专业文章里面,有同样的误解, 比如:
These possible steps increase exponentially as the game goes forward.
Monte Carlo Tree Search MCTS For Every Data Science Enthusiast
https://towardsdatascience.com/monte-carlo-tree-search-158a917a8baa
其实,随着对局的深入, 可选择点是越来越少的。 有人提出可选择的有效值的概念,https://zhuanlan.zhihu.com/p/95699910 跟我的提法是一样的。
他提出第一手棋有55种变化,这个数字差不多。 如果我们从实际对局来看。 第一手棋甚至没有这么多。 审阅任意的100局专业棋手对局,你会发现99局第一手的下法不会超出20个选择。 所以在20里面选一就好。如果有棋手选了20以外的下法,你甚至不用理会,自己下自己的。 比如说他第一手下在天元或者附近,你根本就不用管,继续下在角边,或者下在星位。 开局其实都是定式。 没有那么复杂。专业棋手和业余段位棋手甚至没有太多区别。
到了中盘,业余段位棋手往往被专业棋手一击则溃。这是计算的问题。 业余棋手的计算一般不超过10步,而且常常错算。 而专业棋手,顶尖的如李昌镐,他自己说要算100步。 差了一个数量级,所以一击则溃。 而计算机算到极致,也只不过是一秒钟的问题。 所以计算机是不怕算的。
如果我们一直审阅到终局,我们发现可选择的有效下法一直在几十个这样的数量级,而不会是几百或几千,到后来,棋盘上根本就没有多少地方可以落子了。
所以,AI只是在几十个选择里面选一个就可以了,不是很难。 但这几十个选择如何确定? 就按我上一篇文章的意见就可以。 见,
浅论如何在AI围棋中引入数学物理原理。 |
用专业的语言来说。 At a high-level, all algorithms, both Value-based and Policy-based, have four basic operations that they perform. They start with arbitrary estimates of the quantity they want to find, and then incrementally improve those estimates by getting data from the environment.
Reinforcement Learning Explained Visually (Part 3): Model-free solutions, step-by-step
不同之处在于,我们实际上是在Model-free 方法里面混合了, Model-based (aka Planning) 方法,利用一定的数学物理方法作为我们的 strategy 来选择最佳落子的第一步,再做计算。
很奇怪的是,千千万万的围棋书,包括AI的围棋书,没有一本谈到数学。其实围棋就是数学,第一手为什么下在三路,因为围出一个眼,至少要三路。 但从来没有人谈到过这点。
Refrences:
Reinforcement Learning Made Simple (Part 1): Intro to Basic Concepts and TerminologyA Gentle Guide to applying Markov Decision Processes, in Plain English
https://towardsdatascience.com/reinforcement-learning-made-simple-part-1-intro-to-basic-concepts-and-terminology-1d2a87aa060