如何让电脑下围棋,让我这个民工来乱侃侃。


所有跟贴·加跟贴·新语丝读书论坛

送交者: bluesea 于 2016-03-14, 14:13:23:

围棋棋盘太大,使用深蓝的深度搜索方法根本无法应用在围棋上。
前面这里美国计算机程序大叫什么计算机记住了3千万步,太不公平云云,这就是个笑话。以围棋的变化,就是记住3亿,30亿步都是白给,根本无法应对复杂的围棋变化。棋手稍微的变化,就会让计算机摸不着头脑。

概率和统计学被应用在围棋后就解决了这个问题。嗯,让我们来想一下常用的智能垃圾邮件的判断。如果你仅仅抓关键字,那么很误判的概率是非常高的。而你如果抓多个关键字,你就想知道这些关键字各自在垃圾邮件中出现的频率,根据频率来做判断和筛选。这里面的统计学方法我就不说了。

通过垃圾邮件中关键字出现的概率做统计分析后,你就可以划分出很确定的垃圾邮件,比较确定的垃圾邮件和不太确定的垃圾邮件,认为不是垃圾邮件,如果我们在其中画跟线,那么我们可以把确定和比较确定的当作是垃圾邮件,把不确定和认为不是垃级邮件的。当然,既然是概率的统计就会出错,但是只要出错的概率的足够小,就是我们可以接受的。

对于围棋来说也是,计算机最需要知道是当他下某一步以后,对手在棋盘各个点上落子的概率,如果我们也设置一个基线的话,有大量的格子就会被裁减,剩余下来是对手在第二可能会下的那些格子。由此计算机可以继续循环出,第3步接下去自己可能下的,和自己在这些点上如果下了,对方第4步的可能性。因为每一次判断都裁剪了大量不可能的步骤,所以这样的搜索就会变得简单很多。当然如果一直做下去,还是有可能过深,所以又要对这样的搜索做深度限制。

我们假设棋手在电脑的判断可能性以外下了一部棋。这也没关系,只要电脑重新判断这意外步骤接下去的可能下法就可以了。当然这些概率都是要有经验统计的,如果对此缺乏经验则统计出的结果就会差题很远。

所以阿法狗需要一些基本数据和培养。比如之前阿法狗与职业选手下的时候明显一处处理不当。显然就是别人这样的下法对来说它正好缺乏经验。解决办法就是在这步的基础上让阿法狗自己不断和自己下,来推演后续结果,这样来修正经验。

注意这里不是增加棋谱,依然只是为了概率保证,这点很重要。因为这样保证了阿法狗不需要为这一步接下去的所有可能性都推演后才知道怎么去下。大概知道就可以了。

也正是因为这是基于概率统计的,所以所谓的输入了李世石的棋谱充分了解李世石下法这说根本经不起推敲。首先李世石一生下过的棋局都拿出来,其对样本修正的意义也不大。当然有人提出可能会有特型造成,比如我们常规统计在某些步骤上其实没注意到。李世石的下法弥补了这里的经验缺失,这是可能的,但实际上输入任何棋局都可能会有这样的效果,不是在缺乏经验的地方弥补了经验,就是在已有经验基础上让样本更加充分,统计更加精确。

当然这个做法的最大缺点是,它只能根据已知经验计算当前步骤。(因为其他地方小概率就被忽略了。)我们可以看第三局,当小李玩起了僵尸流,在围棋左下做局征吃,如果计算机仅仅有上述的应对,那就被玩死了,因为很可能在当前局面保住却让李世石在上面换得先手,进而让自己在全局上从优势变成劣势。

这时候就需要其他的模块来帮助阿法狗判断。我因为没有细看,估计是所谓的价值模块之类的,让阿法狗做出了很明智的判断,它没有急于在下方跟李世石直接碰面,没入局,反而是加固了自己在上方的优势。道理也很简单,当时的棋局就是李世石硬在下方扣出一块地也不足以扭转局势。而早早的巩固上面,让李世石不至于从下面一路打劫争吃近而翻盘才是最佳的策略。

这里面阿法狗一定通过清楚目数估算得出的结论。这就使得阿法狗不仅仅着眼当前步子的影响,进而可以从全局角度衡量自己的策略。

所以这是个非常聪明的程序,是完全符合定义的人工智能,而深蓝则不太像是人工智能,其没有可能性的估算方法,策略的判断,自我学习。用深蓝的做法甚至不下到最后一步,它都不会知道自己是输是赢(国际象棋好办只要王被吃了就结束了。)

这也是为什么阿法狗不是仅仅依靠硬件机械力下棋的缘故,如果阿法狗的程序和数据得到进一步完善,就是CPU少几倍也会很强。当然同样的程序和数据,CPU 越强越好。所以强力机械力不是必要条件。深蓝则不是。




所有跟贴:


加跟贴

笔名: 密码: 注册笔名请按这里

标题:

内容: (BBCode使用说明