alphago是通过什么手段以及运算方式来下棋的呢?相信这两天人机大战的现场大家都或多或少的围观或者了解的差不多的,但是对于阿尔法围棋怎么下的相信不少亲还不清楚,下面亲们就来和小编一起了解一下吧!
AlphaGo是通过两个不同神经网络“大脑”合作来改进下棋。这些大脑是多层神经网络跟那些Google图片搜索引擎识别图片在结构上是相似的。它们从多层启发式二维过滤器开始,去处理围棋棋盘的定位,就像图片分类器网络处理图片一样。经过过滤,13 个完全连接的神经网络层产生对它们看到的局面判断。这些层能够做分类和逻辑推理。
这些网络通过反复训练来检查结果,再去校对调整参数,去让下次执行更好。这个处理器有大量的随机性元素,所以我们是不可能精确知道网络是如何“思考”的,但更多的训练后能让它进化到更好。
第一大脑: 落子选择器 (Move Picker)
AlphaGo的第一个神经网络大脑是“监督学习的策略网络(Policy Network)” ,观察棋盘布局企图找到最佳的下一步。事实上,它预测每一个合法下一步的最佳概率,那么最前面猜测的就是那个概率最高的。你可以理解成“落子选择器”。
(落子选择器是怎么看到棋盘的?数字表示最强人类选手会下在哪些地方的可能。)
团队通过在KGS(网络围棋对战平台)上最强人类对手,百万级的对弈落子去训练大脑。这就是AlphaGo最像人的地方,目标是去学习那些顶尖高手的妙手。这个不是为了去下赢,而是去找一个跟人类高手同样的下一步落子。AlphaGo落子选择器能正确符合57%的人类高手。(不符合的不是意味着错误,有可能人类自己犯的失误)
更强的落子选择器
AlphaGo系统事实上需要两个额外落子选择器的大脑。一个是“强化学习的策略网络(Policy Network)”,通过百万级额外的模拟局来完成。你可以称之为更强的。比起基本的训练,只是教网络去模仿单一人类的落子,高级的训练会与每一个模拟棋局下到底,教网络最可能赢的下一手。Sliver团队通过更强的落子选择器总结了百万级训练棋局,比他们之前版本又迭代了不少。
单单用这种落子选择器就已经是强大的对手了,可以到业余棋手的水平,或者说跟之前最强的围棋AI媲美。这里重点是这种落子选择器不会去“读”。它就是简单审视从单一棋盘位置,再提出从那个位置分析出来的落子。它不会去模拟任何未来的走法。这展示了简单的深度神经网络学习的力量。
更快的落子选择器
AlphaGo当然团队没有在这里止步。下面我会阐述是如何将阅读能力赋予AI的。为了做到这一点,他们需要更快版本的落子选择器大脑。越强的版本在耗时上越久-为了产生一个不错的落子也足够快了,但“阅读结构”需要去检查几千种落子可能性才能做决定。
Silver团队建立简单的落子选择器去做出“快速阅读”的版本,他们称之为“滚动网络”。简单版本是不会看整个19*19的棋盘,但会在对手之前下的和新下的棋子中考虑,观察一个更小的窗口。去掉部分落子选择器大脑会损失一些实力,但轻量级版本能够比之前快1000倍,这让“阅读结构”成了可能。
第二大脑:棋局评估器 (Position Evaluator)
AlphaGo的第二个大脑相对于落子选择器是回答另一个问题。不是去猜测具体下一步,它预测每一个棋手赢棋的可能,在给定棋子位置情况下。这“局面评估器”就是论文中提到的“价值网络(Value Network)”,通过整体局面判断来辅助落子选择器。这个判断仅仅是大概的,但对于阅读速度提高很有帮助。通过分类潜在的未来局面的“好”与“坏”,AlphaGo能够决定是否通过特殊变种去深入阅读。如果局面评估器说这个特殊变种不行,那么AI就跳过阅读在这一条线上的任何更多落子。
(局面评估器是怎么看这个棋盘的。深蓝色表示下一步有利于赢棋的位置。)
局面评估器也通过百万级别的棋局做训练。Silver团队通过 复制两个AlphaGo的最强落子选择器,精心挑选随机样本创造了这些局面。这里AI 落子选择器在高效创建大规模数据集去训练局面评估器是非常有价值的。这种落子选择器让大家去模拟继续往下走的很多可能,从任意给定棋盘局面去猜测大致的双方赢棋概率。而人类的棋局还不够多恐怕难以完成这种训练。
增加阅读
这里做了三个版本的落子选择大脑,加上局面评估大脑,AlphaGo可以有效去阅读未来走法和步骤了。阅读跟大多数围棋AI一样,通过蒙特卡洛树搜索(MCTS)算法来完成。但AlphaGo 比其他AI都要聪明,能够更加智能的猜测哪个变种去探测,需要多深去探测。
(蒙特卡洛树搜索算法)
如果拥有无限的计算能力,MCTS可以理论上去计算最佳落子通过探索每一局的可能步骤。但未来走法的搜索空间对于围棋来说太大了(大到比我们认知宇宙里的粒子还多),实际上AI没有办法探索每一个可能的变种。MCTS做法比其他AI有多好的原因是在识别有利的变种,这样可以跳过一些不利的。
Silver团队让AlphaGo装上MCTS系统的模块,这种框架让设计者去嵌入不同的功能去评估变种。最后马力全开的AlphaGo系统按如下方式使用了所有这些大脑。
1. 从当前的棋盘布局,选择哪些下一步的可能性。他们用基础的落子选择器大脑(他们尝试使用更强的版本,但事实上让AlphaGo更弱,因为这没有让MCTS提供更广阔的选择空间)。它集中在“明显最好”的落子而不是阅读很多,而不是再去选择也许对后来有利的下法。
2. 对于每一个可能的落子,评估质量有两种方式:要么用棋盘上局面评估器在落子后,要么运行更深入蒙特卡罗模拟器(滚动)去思考未来的落子,使用快速阅读的落子选择器去提高搜索速度。AlphaGo使用简单参数,“混合相关系数”,将每一个猜测取权重。最大马力的AlphaGo使用 50/50的混合比,使用局面评估器和模拟化滚动去做平衡判断。
这篇论文包含一个随着他们使用插件的不同,AlphaGo的能力变化和上述步骤的模拟。仅使用独立大脑,AlphaGo跟最好的计算机围棋AI差不多强,但当使用这些综合手段,就可能到达职业人类选手水平。
(AlphaGo的能力变化与MCTS的插件是否使用有关。)
这篇论文还详细讲了一些工程优化:分布式计算,网络计算机去提升MCTS速度,但这些都没有改变基础算法。这些算法部中分精确,部分近似。在特别情况下,AlphaGo通过更强的计算能力变的更强,但计算单元的提升率随着性能变强而减缓。
优势和劣势
我认为AlphaGo在小规模战术上会非常厉害。它知道通过很多位置和类型找到人类最好的下法,所以不会在给定小范围的战术条件下犯明显错误。
但是,AlphaGo有个弱点在全局判断上。它看到棋盘式通过5*5金字塔似的过滤,这样对于集成战术小块变成战略整体上带来麻烦,同样道理,图片分类神经网络往往对包含一个东西和另一个的搞不清。比如说围棋在角落上一个定式造成一个墙或者引征,这会剧烈改变另一个角上的位置估值。
就像其他的基于MCTS的AI, AlphaGo对于需要很深入阅读才能解决的大势判断上,还是麻烦重重的,比如说大龙生死劫。AlphaGo 对一些故意看起来正常的局也会失去判断,天元开盘或者少见的定式,因为很多训练是基于人类的棋局库。
AlphaGo棋力如何
在围棋人工智能程序方面,除了开源程序Pachi和Fuego,还有日本的Zen、韩国的DolBaram和法国的CrazyStone。按照以往的战绩来看,AlphaGo和Crazy Stone、Zen的战绩为495战,494胜,而且在让四子的情况下(让对方先下四个子),与Crazy Stone、Zen的胜利为77%和86%。虽然还没有AlphaGo与韩国DolBaram交手的具体战绩,但这并不妨碍AlphaGo成为现阶段顶尖水平围棋人工智能程序。
职业棋手的段位是根据比赛成绩来确定的——根据胜、负、和的成绩计算积分,按照积分高低将棋手分为初段—九段,而且段位会根据棋手在一定时间内的比赛成绩而上升或下降。根据2014年12月31日公布的中国围棋职业棋手等级分排名,在让4子和5子的情况下战胜DolBaram的中国棋手连笑(七段)排名为第12位,而作为棋坛宿将的李世石(九段)的棋力则更胜一筹。
被AlphaGo击败的中国职业二段棋手樊麾,在棋力上与即将和AlphaGo交手的李世石,以及战胜DolBaram的连笑有着非常大的差距,但毕竟具备职业棋手的基本素质和水平。就现今的战绩来看,AlphaGo基本具备不低于职业初段棋手的棋力。
如果AlphaGo的棋力与韩国DolBaram的水平相当,或仅仅是略优于DolBaram,那显然是无法战胜李世石的。若是AlphaGo具备能在让6子的情况下战胜DolBaram的棋力,那么和李世石的比赛就有可能存在一定悬念了。笔者在此斗胆做一个推测,即便在和樊麾对决后的5个月后(和樊麾对决在2015年10月),AlphaGo的棋力又有所增长,但技术的进步有一个过程,就如 国际象棋程序在80年代末就有战胜国际象棋大师的战绩,但真正打败卡斯帕罗夫要到1997年。 也许在将来AlphaGo能与李世石一较高下,但就现阶段而言,AlphaGo战胜李世石的可能性并不高。
就现阶段而言,AlphaGo战胜李世石的可能性并不高。
为了更直观地说明AlphaGo的棋力,笔者将职业棋手看完对局后的评价列举如下,感谢知乎网友@专吃刘小羊 的汇总整理。
时越九段(世界冠军,中国棋院等级分第二位):
说实话,我昨天看到这个消息的时候是不信的,虽然我现在还是不能理解电脑是怎么去学习的,但是事实摆在眼前,这5盘棋电脑下的让我惊叹,我认为水平已经迈入了职业的门槛。虽然和顶尖棋手还差的很远,但按照这个进步速度,3月份的对局,我想李世石也不会赢的太轻松。
樊麾二段(法国国家队总教练,AlphaGo的对手):
第一盘输了之后,我这个心态就发生了很大变化,因为第一盘毕竟觉得可能比较轻松,然后发现他的官子、各方面的掌控能力很强之后,我第二盘就有点(心态)失衡。第二盘打了一个大勺之后,整个进程就不对了。围棋毕竟不能用单纯的技术来说,一是一、二是二、三是三,因为毕竟有发挥的问题。不过我确实下的也不是很好,当然了,下的时候心态也是一个最主要的原因。不管怎么样,AlphaGo的棋力确实已经很强了。这几盘棋呢,可以说我自己发挥不佳,但不能说不是我的真实水平,下得不好。主要是在某些方面觉得被他彻底克制住了,尤其心理负担很重,总感觉下到最后一读秒就会打勺子,这就导致我的棋下的很急。
柯洁九段(世界冠军,中国棋院等级分第一位,当前的世界第一人):
果壳网: 假如是不知情地去看AlphaGo和樊麾的这五盘棋,你会猜到AlphaGo不是人类吗?
柯洁: 完全看不出来。这五盘棋我也仔细地看了一眼,但我没看名字,不知道谁执黑谁执白,完全看不出谁是AI。感觉就像是一个真正的人类下的棋一样。该弃的地方也会弃,该退出的地方也会退出,非常均衡的一个棋风,真是看不出来出自程序之手。因为之前的ZEN那样的程序,经常会莫名其妙的抽风,突然跑到一个无关紧要的地方下棋。它这个不会。它知道哪个地方重要,会在重要的地方下棋,不会突然短路。这一点是非常厉害的。
果壳网: 就电脑的表现来看,你对它布局、中盘、官子三个阶段的评价,分别是什么水平?
柯洁: 按照我的评价,它的水平大概就是冲职业段之前的水平,虽然职业还到不了,但是无限接近于职业了。关于这几个阶段,我的感觉是都差不多,非常均衡,也看不出哪个地方是机器,这个很恐怖(笑)。当然这只是看了五盘棋,也看不出它的短板来,可能是因为对手发挥得太糟糕了(笑),我也看不出来具体的哪里好哪里不好。
芈昱廷九段(世界冠军,中国棋院等级分第四位):
问: 今早的大新闻是谷歌围棋AlphaGo5比0赢了樊麾二段,是否已看过棋谱?
芈昱廷: 知道后感觉很刺激,看棋谱觉得实力相当于冲段少年。
李喆七段(全国冠军):
Google的围棋AI已经具有职业水准,从棋谱初步判断是顶尖棋手让先-让先倒贴目的水平,离战胜人类还有一小段距离。但这是三个月前的棋谱……以Google机器学习堆数据的速速,今年三月对决李世石相当值得期待。
刘星七段(全国冠军):
第一是棋形很正,第二是失误相当的少。如果把它看作一名业余顶尖的棋手,做到这两点,就已经具备了相当的实力。(赵守洵:星爷还没有把它看作职业高手) (刘星:这个很难说)
在国际象棋上,因为王、后、车、相、马、兵的重要性不一样,程序员可以对不同的子设定不同的分值,比如王10分,后8分……让计算机以判定分值的高低来指导计算机计算和落子。但围棋的棋子没有大小之分,使得计算机很难做出取舍,只能以穷举法的方式进行计算。而围棋的另一个特点是非常复杂——下棋时可能会遭遇3^361 种变化,在过去计算机性能相对有限的情况下,又没有一个良好的算法进行辅助, 使用穷举法计算自然导致人工智能虽然在国际象棋上战胜了卡斯帕罗夫,但在围棋领域一直处于业余棋手的棋力水平。
计算机眼中的国际象棋落子思路
计算机眼中的围棋落子思路
AlphaGo战胜樊麾的秘诀在于神经网络系统、蒙特卡洛算法和深度学习。
以上,就是关于阿尔法围棋的相关内容,亲们可以简单的了解一下,希望对大家了解这种算法有所帮助!