在5×5的棋盘下井字棋一直下到赢的规则有几种赢的摆法?

 “柯洁 VS AlphaGo” 以0:3遗憾落幕,人类智慧再一次输给了人工智能。AlphaGo到底是一个什么样的存在,能够如此所向披靡?我们是否有打败AlphaGo的可能?本文将从以下几个方面,以尽量通俗易懂的方式揭秘AlphaGo,找到战胜AlphaGo的方法:

1、如何写一个下棋的算法;
4、AlphaGo击败柯洁,是否胜之不武。

人类智慧再一次输给了人工智能。象征人类智慧最后一块“遮羞布”的围棋终于也被人工智能破解。在柯洁失利之后,媒体和大众的惊叹、惋惜不绝于耳。

“再过三十年,人类会被人工智能统治,然后会想起三十年前AlphaGo的恐怖。”

“人类很早就跑不赢汽车了,只要战胜了自己就好。”

而柯洁在失利后哽咽地说道:“很抱歉我输了。今天下棋时其实我有些失态,因为前半盘我已经知道不好了,但之后它每一步棋,我担心的棋它肯定会下,它下出我想不到的棋,我仔细想一下,然后就发现这真是一步好棋。我只能猜到它一半的棋,这就是我们的差距,太大了。”

我本来也很替柯洁惋惜,然而,柯洁的这一番感言,总让我觉得哪里不对。

这让我不禁去思考AlphaGo到底是如何运作的。在阅读有关AlphaGo算法的各类文章后,一个结论浮出水面。

AlphaGo是可以被打败的,至少,你可以不输给AlphaGo。

一、如何写一个下棋的算法

要谈AlphaGo,让我们先谈谈如何写一个下棋的算法。一个下棋的算法需要解决两个问题: 1、对手下一步会怎么下?
2、每一种棋局对应的获胜概率?
那么一个最直接的想法,就是穷举法。

一个简单例子,如果一盘棋最多5个回合结束,而每个回合我和对手各有2种走法,那么一局游戏最多就有(2*2)^5=1024种情况。穷举每一种情况后,找到通往胜利的最优下法即可。


每一个Node(节点),对应的就是一种棋局,相应地也就可以计算每一个节点的期望胜率。比如一种棋局继续下下去会有10种情况,而其中7种情况会赢,那么这个棋局对应的胜率就是70%。

下每一步棋的目标,也就变成最大化下完这一步之后的胜率。
然而,对于“井字棋”这种情况简单的游戏穷举法是可能的,每一步最多只有9种下法,最多5个回合就会结束。而围棋平均每一步大概有250种下法,平均要70回合以上才会结束。在如此复杂的问题面前,即使是世界上最好的计算机也不可能完全穷举。

即便变得更复杂,但要解决的问题仍然是那两个,如何预测对手的反应,如何计算棋局的获胜概率。

用之前的Game Tree树状图来说,一是预测每一个节点发散的路径中该选哪一条,二是如何计算每一个节点的胜率。AlphaGo中管前者叫做Policy Network(预测网络),管后者叫Value Network(评估网络)。

针对每一种棋局,用蒙特卡洛的方法模拟成千上万盘围棋比赛,直到一方获胜。在每一次模拟试验中,记录都经历了哪些棋局,各多少次,以及最终哪一方获胜。我们用“井字棋”树状图中相同的方法回看,就可以找到通往比赛胜利的最优途径。

最初模拟的时候,下棋是随机的。随着不断模拟,就会发现胜率高的节点和胜率低的节点。通过利用这些不断发现的信息去指导接下来如何下棋,下棋的落点就会越来越不随机。从数学上,随着模拟次数的增加,模拟的结果会越来越趋近下棋的最优路径(如果模拟次数不够多,则结果趋近于次优路径。)。

这也是AlphaGo为什么会不断“变强”的原因之一,从击败樊麾二段,到击败李世石九段,再到击败世界第一的柯洁——不断增加的蒙特卡洛模拟实验。

那么Value Network评估网络要如何给每一个节点赋值?或者说如何评估每一种棋局的获胜概率?

什么是强化学习?教狗狗上厕所就是一个简单例子。你发现狗狗便便在地板上,就打一顿;便便在厕所里,就奖励一根骨头。狗狗一开始被打得莫名其妙,但慢慢发现只要便便在厕所里就能得到骨头;而相应的你也发现,狗狗在马桶里便便的次数也越来越多,直到再也不会在地板上便便。

放在围棋上,把赢定义为奖励,把输定义为惩罚。在不断地蒙特卡洛试验中,机器就会慢慢发现哪种下棋策略能够得到“甜头”。通过计算各种策略的回报平均值,就能比较策略A是否优于策略B。

至此,我们既有Policy network预测网络,也有Value network评价网络了,也就可以做出一个能寻找最优策略的下棋算法了。

事实上,只要经过足够大量的蒙特卡洛实验,这样的算法已经可以击败很多业余下棋选手。

Convolutional Neural Network卷积神经网络在图像识别上有广泛应用,比如判断一张图片是不是猫、观察两个人的照片判断两人是否是亲属,特斯拉自动驾驶中识别红绿灯和车辆行人也是用的这个技术。

Convolutional Neural Network卷积神经网络的输入变量是大量的图片,而输出变量可以是数量,比如0或者1,也可以是一种策略,比如下棋下在哪,开车怎么开。其原理,第一步是采样,比如在一张人脸照片上设置100个点,采集每一个点的位置和颜色。第二步是Feature engineering (特征工程), 对采集的信息进行数量变换,比如计算两根眉毛之间的距离,面颊的肤色白皙程度。第三步是neural network神经网络,如果将第二步数量变换后的结果定义为神经网络的第一层的话,第二层神经网络就是对第一层变换后的结果再进行变换,比如把x变成二次方x^2,;第三层神经网络又会对第二层神经网络变换后的结果进行变换,一直到最后的第n层。最后,我们用第n层变换的结果对output(输出变量)回归。

据称,AlphaGo一共用到了13层神经网络,相比人脸识别的算法,并不多。


对于AlphaGo,就是通过运用Convolutional Neural Network卷积神经网络,首先输入上万个棋局的照片以及其对应的胜率。然后通过回归得到两个模型。Value network评估网络预测每一个棋局的胜率是多少,输入信息是棋局的图像,输出信息是一个数字;policy network预测网络判断当前棋局下,怎么下棋能够最大化获胜概率,输入信息是棋局的图像,输出信息则是另一个棋局的图像。


3、AlphaGo为什么这么厉害?

AlphaGo之所以比当前其他下棋算法还要强大,就是在于它开创性地把两种计算获胜概率的模型结合在了一起——Reinforcement Learning(强化学习)和Convolutional Neural Network(卷积神经网络)两个模型预测结果的加权平均值。

获胜概率=模拟实验结果+图像回归结果

与之对应,一个顶尖的棋手是怎样的?

成功的棋手=经验+直觉

蒙特卡洛实验强化学习的结果就如同棋手的经验,通过下成千上万盘棋,找到下棋的“套路”。哪些棋局是“必胜棋局”,对手的落子要如何反制,通过不断测试各种可能性,来找到最优策略。通常,这对应的是一场围棋比赛的中后段,当局势已经逐渐明朗时。
神经网络图像回归的结果就像是棋手的直觉,为什么这一步要这么下,没有棋谱是这么说的,但是着眼于围棋的气与势,直觉感觉应该这么下。图像回归也一样,为什么这种棋局的获胜概率就是70%,而另外一种就是65%?说不清,但这就是神经网络回归的结果。这对应的,也就是围棋比赛的前半段,局势尚看不清时。
AlphaGo的强大之处,就在于采用了人类下棋的思考方式,用人工智能的算法模拟了棋手的经验+直觉。

三、打败AlphaGo是有可能的!
围棋是一个封闭的有限的数学问题。围棋盘就那么大,每一个落子就只有两三百个,能够出现的棋局所有情况虽然很多,但是是有限的。终有一天,科技的发展使得计算机可以计算全部的可能性,彻底的统治围棋这个游戏。

AlphaGo战胜世界第一的何洁这件事,掩盖不了其本身的一个算法设计上的逻辑漏洞。
(以下推测基于AlphaGo 2016年战胜李世石后披露的算法,即适用于V18版本,也许并不适用当前新版本)
任何一个下棋算法,目标函数都是提高期望的获胜概率。如果将当前棋局定义为Xt,下一回合的棋局定义为Xt+1;而每一个棋局的获胜概率是f(x),那么算法的目的,就是在下了这一步棋之后,使得:

定义获胜时目标函数f(x)=1,那么算法的目标就是随着回合数n的增加,胜率f(x)从一开始平局的0.5逐渐趋近于1;如若不能,则这一盘棋理论上永远不会结束。换言之,算法的目标是最大化期望胜率。

那么问题来了,如果让它考虑下面这种情况:
当前获胜概率是70%,该我方下棋,有两种策略:

策略A — 对手有10种反应情况,每种情况我方的获胜概率都是75%。
策略B — 对手有10种反应情况,其中9种情况下我方的获胜概率是80%,另外1种的获胜概率是60%。

AlphaGo使用的是蒙特卡洛实验,其结果也就是计算期望的平均胜率。那么就会选择策略B,期望胜率是78%,大于第一种的75%。

那么如果AlphaGo选择了策略B,我们能不能获胜?能,如果双方信息对称的话。如果AlphaGo能考虑到的那种使他胜率下降到60%的算法,我们同样清楚的话,利用这一招反制,并不断重复这个过程,AlphaGo就会一次次“心甘情愿”跳入这个陷阱,胜率不断下降。

这个例子把问题简单化了,真正背后的数学上的核心矛盾,在于算法进行最优化的目标函数,要如何在mean平均值和min最小值之间取舍。

那如果AlphaGo最优化的是胜率的最小值呢,换言之,最差情况下的胜率?
第一,当前算力不可能。如果不穷举总有可能漏掉最不利这一特殊情况,当前算力无法穷举前文已然论述过。
第二,就算能够计算最不利情况下的胜率,这种算法在计算机应用中叫做Minimax极小化极大算法(找出失败的最大可能性中的最小值的算法)。然而这一种算法将不能保证随着N增大,f(Xn)无限趋近于1。像围棋这种对于双方公平的游戏,在中前期局势不明朗时,无论你使用哪一种策略,对方如果能找到其最优策略(极小化极大算法的假设),你的下一回合的胜率在这一最坏情况下,肯定要低于这一回合。既然目标函数f(x)数学上难以趋近于1,也就是无法获胜,那么在做前文提到的蒙特卡洛实验时就有很大可能陷入死循环,算法无法拟合出结果。

退一万步讲,极小化极大算法唯一能够应用的情况,就是局势明朗胜局已定后,就连对手的最优策略都不能阻止AlphaGo的胜率随回合数提高时。
当然基于AlphaGoV18版本,其运用的神经网络回归,和基于蒙特卡洛实验的强化学习,本质都是将条件平均值作为预测结果和最优化的目标函数,而不是胜率的最小值。
所以,用浅显易懂的话来说,击败AlphaGo的策略,就是针对它的目的,制造“陷阱”——一种诡谲的“绝处逢生”的陷阱。而最好时机,是在尚不明朗的比赛中前段。

比如当前AlphaGo的获胜概率是50%,只要它这么下,我有100种对应下法,其中99种情况AlphaGo的胜率都将变成60%,可有那么一种会让它的胜率变成40%。AlphaGo会根据蒙特卡洛实验结果“开心”地选择跳进这个“陷阱”。当然,真正下棋并没有这么简单,可能没有哪一步棋会产生让胜率从60%到40%这么大影响。但是逻辑是一样的,那就是基于prior 让我们回想2016年AlphaGo在唯一输给李世石的第四场比赛,在李世石下出第78手之后,AlphaGo仿佛突然“精神失常”,从83手一直到103手,表现突转直下,特别是黑97的“主动送死”,令人大跌眼镜。连Google的Deep Mind团队代表都表示无法理解算法的突然失常,要回去研究数据、分析情况。

为何如此?两个可能性,第一个可能性是这个棋局是算法从未模拟过,但这不可能。上文提过,根据AlphaGo的蒙特卡洛实验的设计,如果是“意料之外从未见过”的棋局,AlphaGo会随机下在某个位置,而这些落子显然不是随机的。那我们就可以做出一个大胆但合理的假设,李世石的“神来一手”恰好暴露了上文分析的AlphaGo目标函数的一个逻辑矛盾。尽管白78手在人类看来是一步秒棋,但在AlphaGo看来却不是,它反而认为自己的胜率提高了,殊不知却自己把自己推到了最危险的边缘。

击败AlphaGo的可能性之一,就在其选择最优化的目标函数上。

四、AlphaGo击败柯洁,是否胜之不武

之前我说,有一件细思恐极的事情。
柯洁说:“它每一步棋,我担心的棋它肯定会下。”

棋盘有那么多格子,每一个棋局都会有各种各样获胜方法,为什么AlphaGo下的偏偏是柯洁担心的那一步?
这个比赛,到底是不是像表面那样“公平”?
世界第二的李世石对柯洁和AlphaGo的比赛如此评价:“是否应该给棋手充分了解阿尔法的机会呢?比如赛前提供程序,约一周时间让棋手了解程序,摸一摸特点和棋风等等。不然人类棋手基本就没机会。”

李世石表示,如果在去年的人机大战之前自己能够有机会去测试AlphaGo的话,很有可能会有赢下比赛的机会。而且,在他看来,新版本的AlphaGo并没有开创什么新的下法,但的确更加稳定、强大了。
而柯洁对AlphaGo几乎一无所知
AlphaGo和李世石下过棋,和世界上其他高手也下过棋。Google可以收集整理世界上所有围棋比赛的录像,还可以收集网上围棋平台所有玩家的下棋记录,把这些数据扔到神经网络、强化学习模型中,必然能在某种程度上预测棋手如何下棋。
特别是,在我们之前讲的policy network预测网络中,可以专门“针对”柯洁,在样本中加大柯洁过去比赛下棋数据的权重,将算法调整为“专门”预测柯洁如何下棋、“专门”战胜柯洁的算法。

如果AlphaGo和几乎不懂围棋的我下棋,对比与世界第一的柯洁下棋,会走同样的路数吗?如果不同,那么模型的设定就是会根据对弈者情况而调整。

作为大数据翘楚Google旗下AlphaGo的模型,大抵会最大化利用全部可以利用的信息,比如对手是谁,什么段位,过去下棋的记录。

柯洁或许一上来就处于劣势。

试想,虽然柯洁是世界第一,李世石是世界第二。如果我联系柯洁希望与其比赛,结果请李世石戴着面具替我比赛,柯洁还会取胜吗?两人实力相近,对于对手策略没有针对性准备的柯洁,大意失荆州也并不令人意外。

三场比赛,柯洁第一场只有四分之一子的差距,第二场一步之差落入劣势。这是否其实只是信息不对称的劣势使然?
我不是谷歌员工,也不是围棋高手,这些当然都是不负责任、无法验证的猜测。

我只知道这场世纪瞩目的人机大战,柯洁是赤膊上阵光明磊落,AlphaGo蒙着面纱遮遮掩掩。

AlphaGo还没能穷尽棋盘上的每一种可能性。

现在的人工智能,一种是模仿人类学习的过程,一种是在人类制定的规则下对各种可能性试错来学习。

大可不必恐惧人工智能,担忧有一天人工智能取代人类,惶惶不可终日。





我要回帖

更多关于 拔河跳棋怎么下 的文章

 

随机推荐