五言六韵

与围棋相比,公众会认为五子棋更简单,根本原因是什么?

字号+ 作者:郝天一 来源:知乎 2022-06-18 05:15 我要评论( )

与围棋相比,公众会认为五子棋更简单,根本原因是什么?如何以专业的视角,用通俗的语言说服公众改变偏见? 从媒体的角度,如何挖掘专业五子棋相对于专业围棋的难点,能够给不了解专业五子棋的人(公众)一个简短而令人信服的解释? 补充: 强调一下这里指的

  与围棋相比,公众会认为五子棋更简单,根本原因是什么?如何以专业的视角,用通俗的语言说服公众改变偏见?
 
  从媒体的角度,如何挖掘专业五子棋相对于专业围棋的难点,能够给不了解专业五子棋的人(公众)一个简短而令人信服的解释?
 
  补充:
 
  强调一下这里指的是专业五子棋(采用在专业五子棋比赛中使用的规则,比如无禁手的swap-2规则,有禁手的山口规则,索索夫-N规则等),而不是原始规则的Gomoku/Renju。
  郝天一:个人认为,用状态空间复杂度(或博弈树复杂度)来分析与对比不同的棋类游戏,固然是机器博弈界的惯用方法,然而,它分析的仅仅是这个游戏的“复杂度”,并不是“难度”,这两个很容易被混淆的概念,有着本质上的区别。“复杂度”只是从客观上描述一个游戏可能达到的状态空间(或者博弈树规模)的大小,而“难度”是指的玩好这个游戏需要的技术水平高低。这两个概念虽然有一定的相关性,但却并不能划等号。事实上,除了像Tic-Tac-Toe这种很容易就能算清的游戏之外,大多数竞技棋类的复杂度都是人类的计算能力远远无法企及的。根据已有的研究结果,围棋的状态空间复杂度约为3^361,而五子棋约为3^225,围棋的复杂度确实远远大于五子棋[1]。然而并不能把这个和游戏的难度等价。如果你问我,这两种复杂度,哪一种更难算清?对不起,哪个我也算不出来。
 
  事实上,“复杂度”高的棋类也并非都需要技术含量和有意义。举一个极端些的例子:两人轮流在100×100的棋盘上落黑白子,直到落满整个棋盘,然后通过一个给定算法计算棋局的hash值,若这个值是奇数,则黑胜,否则白胜。这个“棋”的复杂度确实很高,然而并没有什么意义,对于计算力不足的人类来说,结果基本相当于随机,并没有什么技术含量。
 
  再说一下我对难度的定义吧,正如刚才所说的,“难度”所对应的是玩好游戏需要的技术水平。更确切地说,我认为,一个游戏的难度,是与玩家通过训练能够提升水平的幅度呈正相关的。换句话说,如果一个有经验的选手在游戏中能远远胜过一个新手,那我们说这个游戏难度较高,玩好它需要技术与经验作支持。如果新手刚刚入门就能和老手玩得差不多好,那我们说这个游戏很简单,没什么技术含量。
 
  再来说说公众为什么认为五子棋比较简单。五子棋是容易被误认为“新手刚入门就能玩得很好”的棋类。确实,对于很多人来说,五子棋只要明白了规则,就能还算像样地玩一玩,这一点是与围棋不同的。因此,“五子棋新手的水平相对较高”这个事实,在公众心目中渐渐变成了“五子棋的新手能和高手玩得差不多好”,再根据我上面的定义,它就逐渐异化成了“五子棋相对较简单”。然而,很多人所忽略的一点是,对于五子棋,即使一些新手一上来就能玩得感觉不错,他们所谓的“水平”和有着丰富经验的专业棋手,可以说是九牛一毛的。也就是说,新手稍高一些的起点,是完全不足以根本上缩小新手与高手之间的距离的。正是这一点,造成了大众对五子棋难度感觉上的偏差。
 
  下面主要讨论一下五子棋在思维的一些难点与特殊之处:
 
  在“势”的划分上,五子棋是注重局部,兼顾大局;围棋是注重大局,兼顾局部。五子棋的每一个局部都是很重要的,因为只要有一个局部可以以先手胜出,不管在其它区域对方的优势多么大,都可以立即结束整个对局。然而,如果在某一个局部存在优势(这个优势可能是一个先手,也可能棋形或者空间),但却不能胜,这时候,就需要联系其它的局部,比如从某一个局部引出一些子力到其它的局部以增大优势,有时候取胜需要联系全盘的许多局部。然而,如果某一个局部存在优势,材料却不足以取胜,而又难以与其它的局部产生联系,这时候就会导致比较尴尬的局面。而万一此时在其它区域失了势,这时候赢面就很低了,用俗话说叫“攻崩了”。单个局部的胜棋计算与多个局部的联系都是需要着重注意的方面。
 
  此外,五子棋需要极尽精确的计算,因为在特定局面下的胜棋是具有很激烈的变化的,很有可能仅仅漏算了对方的一条路线,局势就会发生天翻地覆的变化。这也是适合围棋的蒙特卡洛树搜索算法在五子棋上发挥不好的原因之一。专业棋手在对弈时需要花大量的时间算杀,有的时候一手棋可能会花掉总时间的一半以上,也正是这个原因。
 
  另外说一些和本问题联系不是很紧密的题外话。我发现,很多人一直在说复杂度,然而他们并不真正了解复杂度是什么。我经常见到一些陈述,例如“因为XX棋的复杂度如何如何,所以如何如何”。这些陈述乍看起来没什么问题,但事实上并没有因果关系。例如,在AlphaGo问世之前,经常听到的是“因为围棋的复杂度是XXX,所以在现有的条件下电脑很难击败人类”。然而,电脑能否击败人类真的是由复杂度决定的吗?举个很明显的反例:上面说的那个“Hash棋”,它的复杂度远高于围棋,然而人不可能下得过电脑。
 
  [1]Allis,L.V.(1994).Searching for solutions in games and artificial intelligence.Ponsen&Looijen.
 
  __________________________________________________________
 
 
  刚刚评论区有人提到算法实现的问题,我就再写写我对于目前五子棋AI的理解吧。围棋AI那边,我也就是读过几篇和DL或AlphaGo相关的论文而已,不比大家了解的更多,所以下面主要还是讲一讲五子棋。
 
  理论上说,应该是写一个好的围棋程序的难度更高一些。但即便是五子棋程序,也有目前已有的技术尚且没有解决的难题。
 
  围棋这方面,最著名的当然就是大家熟知的AlphaGo,当然我觉得它还有很多缺陷,这一点在知乎上也已经被大家分析得足够多了。鉴于现在顶尖棋手已经不太容易玩过它了,我们也很难再要求它什么。说一下我比较了解的五子棋吧。经过和其他几位五子棋AI爱好者的讨论,我们觉得现在AI的问题主要是这么几个。
 
  1.即便现在使用alpha-beta剪枝技术求解bestline的技术已经很成功了,现有的算杀算法还是太落后了。就算Allis的论文里提到过pn-search和db-search这样的算法,在实际应用中用的比较好的,还是限制了进攻方分支的alpha-beta剪枝算法。这个算法目前的算杀深度还是太低了,而且对于一些比较深的杀棋,它根本意识不到潜在的危险。计算方式基本是纯暴力搜索的,里面有很多计算资源浪费在根本没必要的路线(至少人类棋手是这样认为)上了。另外即使有了好的算杀算法,如何比较好地将算杀和bestline结合起来,也是一个没有解决的问题。
 
  2.战场的划分。当五子棋进入中盘的时候,其实局面是被分割成许多个不同的战场的。虽然这些战场在一定条件下,可以互相连接起来,但从局部来看,它们还是有着独立性的。人脑在思考这种局面的时候,通常是分别计算清楚每个局部战场可能的变化,然后再判断战场之间是否可以连接起来。有些局部战场,是和外部基本隔离的,而它自己空间又太狭小,没有什么杀棋的可能,这种战场就基本可以忽略了。目前已有的AI,完全实现不了这种计算模式。首先,它不知道如何正确地划分战场。其次,即使划分好了战场,也缺乏一套理论比较成熟的搜索算法可以实现我刚才所说的“先分别算清每个战场,再计算战场间可能的连接”这种思路。目前遇到这种多战场局面,大多数软件都会消耗很多时间在“战场1算一步,战场2算一步”这种路线上。这种搜索是不太合理和低效的,很影响计算深度,不过目前也没什么好办法解决。
 
  3.无关冲四问题的判断和解决。其实这一点和之前的第2点有重合。盘面上可能有很多和主战场关联不大的冲四。目前大多数软件的问题是,这种无关冲四一多起来,搜索深度就急剧降低,然后就基本废了。如何准确地识别这些无关冲四,并规避它所带来的影响,是一个需要解决的问题。

转载请注明出处。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 天弈五子棋开局是如何生成的?—弈客围棋的一百个疑问

    天弈五子棋开局是如何生成的?—弈客围棋的一百个疑问

    2021-04-20 05:37

  • 兄弟相依短兵相接

    兄弟相依短兵相接

    2014-10-20 22:14

  • 五子棋人素质低吗?

    五子棋人素质低吗?

    2014-11-26 22:09

  • 五子棋定式探索

    五子棋定式探索

    2005-08-05 19:48

网友点评