如何搭建围棋算法间围棋网络对战平台台

4960被浏览197895分享邀请回答61 条评论分享收藏感谢收起人类下围棋靠的是战略思维,人工智能却只有算法,到底哪个更胜一筹?
人类下围棋靠的是战略思维,人工智能却只有算法,到底哪个更胜一筹?
世界的魔兽
2016年3月谷歌人工智能AlphaGo与韩国著名棋手李世石的人机大战,李世石以1:4大比分败北,引起了一场关于人类与人工智能的争论,不久前的AlphaGo的升级版Master在网络对战平台上以快棋挑战人类顶尖棋手,人类棋手全部战败。围棋界一直在盼望当今世界围棋第一人柯洁能够与AlphaGo正式大战一场,现在这场比赛正式敲定了。人机大战第二季比赛正式定在今年4月份,地点设在乌镇,按照安排,此次“人机大战”第二季柯洁与AlphaGo的对弈为慢棋,而且用时比第一季还要长。若柯洁三番棋之后最终落败,AlphaGo还将接受人类棋手车轮大战的挑战,即中日韩各组一队来挑战,赛制为类似“广州世界团体锦标赛”的“相谈棋”形式,即各队在集体研讨之后落子。不过,组队比赛还未全部落实,中国组队没问题,日韩是否接受邀请还未可知。据悉,组队赛可能采用两日制用时,即,一盘棋对弈一方用时累积可达9小时,通俗地理解,就是说一盘棋要下两天。据分析,之所以这次人机大战采用这样的安排,一方面是在快棋对战上,人类已经完败,而采用慢棋对人类而言相对更有优势,二来是有些背水一战的意味,设置两道保险,如果柯洁单人对战失败,那就人类用集体智慧再来挑战AlphaGo。不过,AlphaGo的研发团队DeepMind已经表示,第二季结束后,不管结果如何,他们将在人工智能领域终止围棋的开发,比赛之后也可能开源部分程序。研发团队的负责人曾表示,他们在人工智能领域开发围棋项目,一是希望在全世界范围唤起大众对围棋的关注,二是他们开发AlphaGo的目的不是为了跟人类下围棋,而是希望把开发的成果运用在其他地方。比如,气象、市场预测,军事等领域。据称本次比赛将由中国企业赞助,总奖金高于“人机大战”第一季的总奖金(100万美元)
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
世界的魔兽
百家号 最近更新:
简介: 埃隆马斯克说,人工智能就是瓶子里的魔鬼
作者最新文章DeepMind 研发的围棋 AI AlphaGo 是如何下棋的? - CSDN博客
DeepMind 研发的围棋 AI AlphaGo 是如何下棋的?
看到了正在进行的圆桌,想邀请嘉宾来讲讲它的工作原理如何?其中应用了哪些技术?
相关问题:
人类有什么破解的方法?
左右互搏,青出于蓝而胜于蓝?
—阿尔法狗原理解析
这些天都在没日没夜地关注一个话题,谷歌人工智能程序AlphaGo(国内网友亲切地称为“阿尔法狗”)以5:0击败欧洲职业围棋冠军樊麾二段,并在和世界冠军的比赛中2:0领先。
19年前计算机击败国际象棋冠军卡斯帕罗夫的情景还历历在目,现在计算机又要来攻克围棋了吗!?
虚竹在天龙八部里自填一子,无意中以“自杀”破解“珍笼”棋局,逍遥子方才亲传掌门之位。难道以后“阿尔法狗”要出任逍遥派掌门了?
1933年,东渡日本19岁的吴清源迎战当时的日本棋坛霸主、已经60岁的本因坊秀哉,开局三招即是日本人从未见过的三三、星、天元布阵,快速进击逼得对方连连暂停“打卦”和弟子商量应对之策。随后以“新布局”开创棋坛新纪元。难道阿尔法狗会再造一个“新新布局”?
作为一个关心人工智能和人类命运的理科生,近些天刷了好些报道,记者们说“阿尔法狗是个‘价值神经网络’和‘策略神经网’络综合蒙特卡洛搜索树的程序”,但我觉得光知道这些概念是不够的。我想看看“阿尔法狗”的庐山真面目。
准备好棋盘和脑容量,一起来探索吧?
围棋棋盘是19x19路,所以一共是361个交叉点,每个交叉点有三种状态,可以用1表示黑子,-1表示白字,0表示无子,考虑到每个位置还可能有落子的时间、这个位置的气等其他信息,我们可以用一个361 * n维的向量来表示一个棋盘的状态。我们把一个棋盘状态向量记为s。
当状态s下,我们暂时不考虑无法落子的地方,可供下一步落子的空间也是361个。我们把下一步的落子的行动也用361维的向量来表示,记为a。
这样,设计一个围棋人工智能的程序,就转换成为了,任意给定一个s状态,寻找最好的应对策略a,让你的程序按照这个策略走,最后获得棋盘上最大的地盘。
如果你想要设计一个特别牛逼惊世骇俗的围棋程序,你会从哪里开始呢?对于在谷歌DeepMind工作的黄士杰和他的小伙伴而言,第一招是:
“深度卷积神经网络”
深度卷积神经网络早在98年就攻克了手写数字识别,近些年在人脸识别、图像分类、天气预报等领域无往而不利,接连达到或超过人类的水平,是深度学习火遍大江南北的急先锋。我们现在看到的Picasa照片自动分类,Facebook照片识别好友,以及彩云小译同声传译(软广出现,不要打我)都是此技术的应用。这等天赐宝物,如果可以用来下围棋,岂不是狂拽酷炫吊炸天?
所以2015年黄士杰发表在ICLR的论文[3]一上来就使出了“深度神经网络”的杀招,从网上的围棋对战平台KGS(外国的qq游戏大厅)可以获得人类选手的围棋对弈的棋局。观察这些棋局,每一个状态s,都会有一个人类做出的落子a,这不是天然的训练样本&s,a&吗?如此可以得到3000万个样本。我们再把s看做一个19x19的二维图像(具体是19x19 x n,n是表示一些其他feature),输入一个卷积神经网络进行分类,分类的目标就是落子向量a’,不断训练网络,尽可能让计算机得到的a’接近人类高手的落子结果a,不就得到了一个模拟人类棋手下围棋的神经网络了吗?
于是我们得到了一个可以模拟人类棋手的策略函数P_human,给定某个棋局状态s,它可以计算出人类选手可能在棋盘上落子的概率分布a = P_human(s),如下图:
红圈就是P_human觉得最好的落子方案。每一步都选择概率最高的落子,对方对子后再重新计算一遍,如此往复就可以得到一个棋风类似人类的围棋程序。
这个基于“狂拽酷炫”深度学习的方案棋力如何呢?
不咋地。黄士杰说P_human已经可以和业余6段左右的人类选手过招,互有胜负,但还未能超过当时最强的电脑程序CrazyStone[1,5],距离人类顶尖玩家就差得更远了。
所以,为求更进一步,黄士杰打算把P_human和CrazyStone的算法结合一下,师夷长技以制夷,先击败所有的其他围棋AI再说。
等等,CrazyStone的算法是什么?
哦,那个算法是黄士杰的老师Remi Coulum在2006年对围棋AI做出的另一个重大突破:
“MCTS,蒙特卡洛搜索树”
蒙特卡洛搜索树(Monte-Carlo Tree Search)是一种“大智若愚”的方法。面对一个空白棋盘S0,黄士杰的老师Coulum最初对围棋一无所知,便假设所有落子方法分值都相等,设为1。然后扔了一个骰子,从361种落子方法中随机选择一个走法a0。Coulum想象自己落子之后,棋盘状态变成S1,然后继续假设对手也和自己一样二逼,对方也扔了一个筛子,随便瞎走了一步,这时棋盘状态变成S2,于是这两个二逼青年一直扔骰子下棋,一路走到Sn,最后肯定也能分出一个胜负r,赢了就r记为1,输了则为0,假设这第一次r=1。这样Coulum便算是在心中模拟了完整的一盘围棋。
Coulum心想,这样随机扔骰子也能赢?运气不错啊,那把刚才那个落子方法(S0,a0)记下来,分值提高一些:
我刚才从(S0, a0)开始模拟赢了一次,r=1,那么新分数=2,除了第一步,后面几步运气也不错,那我把这些随机出的局面所对应落子方法(Si,ai)的分数都设为2吧。然后Coulum开始做第二次模拟,这次扔骰子的时候Coulum对围棋已经不是一无所知了,但也知道的不是太多,所以这次除(S0, a0)的分值是2之外,其他落子方法的分数还是1。再次选择a0的概率要比其他方法高一点点。
那位假想中的二逼对手也用同样的方法更新了自己的新分数,他会选择一个a1作为应对。如法炮制,Coulum又和想象中的对手又下了一盘稍微不那么二逼的棋,结果他又赢了,Coulum于是继续调整他的模拟路径上相应的分数,把它们都+1。随着想象中的棋局下得越来越多,那些看起来不错的落子方案的分数就会越来越高,而这些落子方案越是有前途,就会被更多的选中进行推演,于是最有“前途”的落子方法就会“涌现”出来。
最后,Coulum在想象中下完10万盘棋之后,选择他推演过次数最多的那个方案落子,而这时,Coulum才真正下了第一步棋。
蒙特卡洛搜索树华丽转身为相当深刻的方法,可以看到它有两个很有意思的特点:
1)没有任何人工的feature,完全依靠规则本身,通过不断想象自对弈来提高能力。这和深蓝战胜卡斯帕罗夫完全不同,深蓝包含了很多人工设计的规则。MCTS靠的是一种类似遗传算法的自我进化,让靠谱的方法自我涌现出来。让我想起了卡尔文在《大脑如何思维》中说的思维的达尔文主义[6]。
2)MCTS可以连续运行,在对手思考对策的同时自己也可以思考对策。Coulum下完第一步之后,完全不必要停下,可以继续进行想象中的对弈,直到对手落子。Coulum随后从对手落子之后的状态开始计算,但是之前的想象中的对弈完全可以保留,因为对手的落子完全可能出现在之前想象中的对弈中,所以之前的计算是有用的。这就像人在进行对弈的时候,可以不断思考,不会因为等待对手行动而中断。这一点Coulum的程序非常像人,酷毙了。
但黄士杰很快意识到他老师的程序仍然有局限:初始策略太简单。我们需要更高效地扔骰子。
如何更高效的扔骰子呢?
用P_human()来扔。
黄士杰改进了MCTS,一上来不再是二逼青年随机掷骰子,而是先根据P_human的计算结果来得到a可能的概率分布,以这个概率来挑选下一步的动作。一次棋局下完之后,新分数按照如下方式更新:
如果某一步被随机到很多次,就应该主要依据模拟得到的概率而非P_human。
所以P_human的初始分会被打个折扣:
这样就既可以用P_human快速定位比较好的落子方案,又给了其他位置一定的概率。看起来很美,然后实际操作中却发现:“然并卵”。因为,P_human()计算太慢了。
一次P_human()计算需要3ms,相对于原来随机扔骰子不到1us,慢了3000倍。如果不能快速模拟对局,就找不到妙招,棋力就不能提高。所以,黄士杰训练了一个简化版的P_human_fast(),把神经网络层数、输入特征都减少,耗时下降到了2us,基本满足了要求。先以P_human()来开局,走前面大概20多步,后面再使用P_human_fast()快速走到最后。兼顾了准确度和效率。
这样便综合了深度神经网络和MCTS两种方案,此时黄士杰的围棋程序已经可以战胜所有其他电脑,虽然距离人类职业选手仍有不小的差距,但他在2015年那篇论文的最后部分信心满满的表示:“我们围棋软件所使用的神经网络和蒙特卡洛方法都可以随着训练集的增长和计算力的加强(比如增加CPU数)而同步增强,我们正前进在正确的道路上。”
看样子,下一步的突破很快就将到来。同年2月,黄士杰在Deepmind的同事在顶级学术期刊nature上发表了“用神经网络打游戏”的文章[2]。这篇神作,为进一步提高MCTS的棋力,指明了前进的新方向:
“左右互搏,自我进化”
红白机很多人小时候都玩过,你能都打通吗?黄士杰的同事通过“强化学习”方法训练的程序在类似红白机的游戏机上打通了200多个游戏,大多数得分都比人类还好。
“强化学习”是一类机器学习方法,Agent通过和环境s的交互,选择下一步的动作a,这个动作会影响环境s,给Agent一个reward,Agent然后继续和环境交互。游戏结束的时候,Agent得到一个最后总分r。这时我们把之前的环境状态s、动作a匹配起来就得到了一系列&s,a&,设定目标为最后的总得分r,我们可以训练一个神经网络去拟合在状态s下,做动作a的总得分。下一次玩游戏的时候,我们就可以根据当前状态s,去选择最后总得分最大的动作a。通过不断玩游戏,我们对&s,a&下总得分的估计就会越来越准确,游戏也玩儿得越来越好。
打砖块游戏有一个秘诀:把球打到墙的后面去,球就会自己反弹得分。强化学习的程序在玩了600盘以后,学到这个秘诀:球快要把墙打穿的时候评价函数v的分值就会急剧上升。
黄士杰考虑给围棋也设计一个评价函数v(s),在P_human()想象自己开局走了20多步之后,不需要搜索到底,如果有一个v(s)可以直接判断是否能赢,得到最后的结果r,这样肯定能进一步增加MCTS的威力。
黄士杰已经有了国外的qq游戏大厅KGS上的对局,但是很遗憾这些对局数量不够,不足以得到局面评价函数v。但是没关系,我们还可以左右互搏自对弈创造新的对局。
机器学习的开山鼻祖Samuel早在1967年就用自对弈的方法来学习国际跳棋[7],而之前的蒙特卡洛搜索树也是一个自对弈的过程。但是现在黄士杰不仅有一个从人类对弈中学习出的P_human这样一个高起点,而且有一个神经网络可以从对弈样本中学习,有理由相信这次会有更好的结果。
先用P_human和P_human对弈,比如1万局,就得到了一万个新棋谱,加入到训练集当中,训练出P_human_1。然后再让P_human_1和P_human_1对局,得到另外一万个新棋谱,这样可以训练出P_human_2,如此往复,可以得到P_human_n。P_human_n得到了最多的训练,棋力理应比原来更强。我们给最后这个策略起一个新名字:P_human_plus。这时,再让P_human_plus和P_human对局,在不用任何搜索的情况下胜率可达80%,不加任何搜索策略的P_human_plus和开源的MCTS相比也有85%的胜率。自对弈方法奏效了。
既然P_human_plus这么强,我们先代入到MCTS中试试,用P_human_plus来开局,剩下的用P_human_fast。可惜,这样的方法棋力反而不如用P_human。黄士杰认为是因为P_human_plus走棋的路数太集中,而MCTS需要发散出更多的选择才好。看来,P_human_plus练功还是太死板,还没有进入无招胜有招的境界。
没关系,黄士杰还有局面评价函数v(s)这一招,有了v(s),如果我可以一眼就看到“黑棋大势已去”,我就不用MCTS在想象中自我对弈了。但考虑到P_human_plus的招法太过集中,黄士杰在训练v( )的时候,开局还是先用P_human走L步,这样有利于生成更多局面。黄士杰觉得局面还不够多样化,为了进一步扩大搜索空间,在L+1步的时候,干脆完全随机掷一次骰子,记下这个状态SL+1,然后后面再用P_human_plus来对弈,直到结束获得结果r。如此不断对弈,由于L也是一个随机数,我们就得到了开局、中盘、官子不同阶段的很多局面s,和这些局面对应的结果r。有了这些训练样本&s,r&,还是使用神经网络,把最后一层的目标改成回归而非分类,黄士杰就可以得到一个v(
)函数,输出赢棋的概率。
v( )可以给出下一步落子在棋盘上任意位置之后,如果双方都使用P_human_plus来走棋,我方赢棋的概率。如果训练v()的时候全部都使用P_human不用P_human_plus呢?实验表明基于P_human_plus训练的v,比基于P_human训练的v’,棋力更强。强化学习确实有效。
万事俱备,只欠东风。准备好P_human(),MCTS,以及评价函数v(),黄士杰和小伙伴们继续进击,向着可以和人类专业选手过招的围棋AI前进:
“阿尔法狗”
黄士杰准备在MCTS框架之上融合局面评估函数v()。这次还是用P_human作为初始分开局,每局选择分数最高的方案落子,下到第L步之后,改用P_human_fast把剩下的棋局走完,同时调用v(SL),评估局面的获胜概率。然后按照如下规则更新整个树的分数:
前两项和原来一样,如果待更新的节点就是叶子节点,那局面评估分就是v(SL)。如果是待更新的节点是上级节点,局面评估分是该节点所有叶子节点v()的平均值。
如果v()表示大局观,“P_human_fast模拟对局”表示快速验算,那么上面的方法就是大局观和快速模拟验算并重。如果你不服,非要做一个0.5: 0.5之外的权重,黄士杰团队已经实验了目前的程序对阵其他权重有95%的胜率。
以上,便是阿尔法狗的庐山真面目。
上图演示了阿尔法狗和樊麾对弈时的计算过程,阿尔法狗执黑,红圈是阿尔法狗实际落子的地方。1、2、3和后面的数字表示他想象中的之后双方下一步落子的地方。白色方框是樊麾的实际落子。在复盘时,樊麾觉得位置1的走法更好。
深度学习、蒙特卡洛搜索树,自我进化三招齐出,所有其他围棋ai都毫无还手之力。99%的胜率不说,“阿尔法狗”还可以在让四子的情况下以77%的胜率击败crazystone。“阿尔法狗”利用超过170个GPU,粗略估算超过800万核并行计算,不仅有前期训练过程中模仿人类,自我对弈不断进化,还有实战时的模拟对局可以实时进化,已经把现有方法发挥到了极限,是目前人工智能领域绝对的巅峰之作。
围棋是NP-hard问题,如果用一个原子来存储围棋可能的状态,把全宇宙的原子加起来都不够储存所有的状态。于是我们把这样的问题转换为寻找一个函数P,当状态为S时,计算最优的落子方案a = P(s)。我们看到,无论是“狂拽酷炫”的深度学习,还是“大智若愚”的MCTS,都是对P(s)的越来越精确的估计,但即使引入了“左右互搏”来强化学习,黄士杰和团队仍然做了大量的细节工作。所以只有一步一个脚印,面对挑战不断拆解,用耐心与细心,还有辛勤的汗水,才能取得一点又一点的进步,而这些进步积累在一起,终于让计算机达到并超过了人类职业选手的水平。
因为一盘棋走一步需要3ms(P_human_plus遍历整个棋盘的时间),谷歌用大规模集群进行并行化计算,自我对弈3000万盘棋生成训练集只需要一天左右的时间[4],所以如果对弈更多棋局可以提高棋力的话,黄士杰他们早就做了。目前的方案可能已经达到了CNN网络能力的极限。完整的阿尔法狗不仅需要生成训练集,还要用训练集来生成局面评估函数v(),而这还使用了两周时间,一局比赛需要花掉4个小时,自我对局速度不够快,这也许是阿尔法狗并没有能够完全使用强化学习,而仅仅是在整个过程的一小部分使用左右互搏的原因。左右互博用的还不够多,这是一个遗憾。
如果存在一个“围棋之神”,一个已经穷尽了所有的围棋步法的“上帝”,那他每一步都是最优应对。一些顶尖棋手在接受采访时表示[8],“围棋之神”对战人类选手可能还有让4子的空间,也就是说,就算下赢了人类,计算机也还有很大进步的空间。
面对一个如此高难度的问题,计算机和人类都无法在有限时间内找到完全的规律(柯洁和李世乭比赛是一人有3小时时间思考,阿尔法狗今年3月和李世乭进行的比赛则是每人2小时)。计算机和人都是在对问题做抽象,然后搜索最佳策略。要下好围棋所需要的能力已经接近人类智力的极限:要有大局观、要懂得取舍、还要会精打细算,治理一个国家也不过如此。计算机可以学会围棋,就能学会很多一样难度的技能。在未来,也许围棋、自动驾驶、同声传译(「彩云小译」已经开始公测,)都会被一一攻克。甚至在数论、量子场论等领域,深度学习和搜索相结合,可能也会带给我们更多惊喜,比如攻克“哥德巴赫猜想”。
那么,人工智能是否真的会很快登顶呢?
虽然在智力方面AI有希望登峰造极,但高智商只是人类众多能力的一个方面。吴清源先生在方寸之间纵横无敌,但仍然漂泊一生,被命运推着前进。早年他做段祺瑞的门客,棋盘上把段祺瑞打的落花流水,弄得下人都没有早饭吃;后来东渡日本,三易国籍,留下许多遗憾。如果把“强人工智能”比作一个天才少年,虽然智商爆表,但其他方面还需要我们悉心加以引导。创造出“德才兼备,匡扶济世”的人工智能,才是我辈真正应该努力实现的目标。
一起加油吧,科学少年们!
To the infinity and beyond !
参考文献:
1, EfficientSelectivity and Backup Operators in Monte-Carlo Tree Search
2, Human-level control through deep reinforcementlearning
3, Move Evaluation In GO Using Deep Convolutional Neural Networks
4. Masteringthe Game of Go with Deep Neural Networks and Tree Search
5. A Survey ofMonte Carlo Tree Search Methods
6. 大脑如何思维—智力演化的今昔
7. Some Studies in Machine LearningUsing the Game of Checkers.II-Recent Progress
-------------------------------------
以上这篇文章是我在1月28日nature论文基础上对alpha go的理解,现在又过了5个月,并且alpha go已经击败了李世石,我猜测其工作原理会有较大改进,如果有时间,我会贴出我觉得它可能的改进方向。
欢迎转载,请保留作者信息。
最后的最后,允许插播我司的广告一则:
———————————————————-
彩云天气正在招聘中(前端、后端、运营),我们在毗邻皇家园林的两层别墅式公寓办公,有钢琴和温水泳池。需要你的帮助,我们才能每天稳定快速的计算出上亿次天气预报,用人工智能帮到更多普通大众。
&&o&&o&&o&
反对,不会显示你的姓名
我来贡献一点干货和八卦~&
AlphaGo的第一作者David Silver还在MIT做post-doc的时候(也有可能是visit?),曾经和我们组师兄合作利用机器学习和蒙特卡罗树搜索玩《文明2》。当时也有不小的轰动:
有兴趣的同学可以参考项目主页和论文&。可以翻墙youtube的同学还可以看到一段游戏视频。
作为其他答案的补充,下面浅显地针对性地介绍一下蒙特卡罗树搜索(MCTS)。
(***本文图片来源DeepMind和师兄论文)
一、为什么要用搜索?
由于状态数有限和不存在随机性,象棋和五子棋这类游戏理论上可以由终局自底向上的推算出每一个局面的胜负情况,从而得到最优策略。例如五子棋就被验证为先手必胜&&。
遗憾的是,由于大部分博弈游戏状态空间巨大(围棋约为),严格计算评估函数是办不到的。于是人们设计了&(启发式的)
搜索算法,一句话概括如下:
由当前局面开始,尝试看起来可靠的行动,达到终局或一定步数后停止,根据后续局面的优劣反馈,选择最优行动。通俗的说就是“手下一着子,心想三步棋”、“三思而后行”的意思。
二、哪些是“看起来可靠”的行动?怎么评价局面的优劣?
这里就要引入游戏论和强化学习里面的概念了。在数学上,“最优策略”和“局面判断”可以被量化成为函数,。这里表示局面状态,表示下一步(走子)行动。在强化学习里,两者被称为
策略函数(policy function) 和 局面函数(value function),前者衡量在局面下执行能带来的价值,后者衡量某一局面的价值,越大的值表示对当前行动的选手越有利。
Q和V函数是对我们所谓的“棋感”和“大局观”的量化。有了这两个估值函数,在搜索的时候我们尽量选择估值更大的行动,达到缩小思考范围(减少搜索分支)的目的。同时即使在未达到终局的情况下,我们也可以依靠局面函数对当前局势优劣做判断。
那么如何得到精确的估值函数就很重要了。由于不能通过枚举状态空间来精确计算Q和V,传统的做法是人为的设计估值。例如五子棋的局面可以依靠计算“三连”、“四连”等特征的数量乘以相应的分值来估算。这里就涉及到识别特征和衡量特征分值两个问题。对于更加复杂的游戏(例如文明、围棋等),现代的做法是利用机器学习和大量数据,自动的找到特征,同时拟合出估值函数。AlphaGo利用深度学习达到了该目的。
三、蒙特卡洛树搜索(MCTS)
蒙特卡洛树搜索是集以上技术于一身的搜索框架,通过反复模拟和采样对局过程(称为Rollout)来探索状态空间。可以看出它的特点是非常容易并行、可任何时候停止(时间和收益上的平衡)、引入了随机性采样而减小估值错误带来的负面影响,并且可以在随机探索的过程中,结合强化学习(Reinforcement Learning),“自学”式的调整估值函数,让算法越来越聪明。直观一点的图示如下:
(a) 从当前状态(带有随机性)的模拟对局,该过程可以并行:
(b) 通过采样和估值结果,选择最优行动,并重复执行这个过程:
(c) 如果选择强化学习,则根据结果更新估值函数的参数
有兴趣的同学可以阅读AlphaGo或其他相关论文。
AlphaGo结合了3大块技术:先进的搜索算法、机器学习算法(即强化学习),以及深度神经网络。这三者的关系大致可以理解为:
这些都不是AlphaGo或者DeepMind团队首创的技术。但是强大的团队将这些结合在一起,配合Google公司强大的计算资源,成就了历史性的飞跃。
一些个人见解:MCTS 、RL 和 DNN这三者,前两者让具有自学能力、并行的博弈算法成为可能,后者让“量化评估围棋局面”成为了可能(这个大神的里已经解释了)。
对于AlphaGo来说,这每一个模块都是必要的,DeepMind论文中已经展示了各个模块对于棋力的影响:
五、RL / MCTS 的其他应用
除了最开始提到的《文明2》游戏和围棋,MCTS和RL还可以应用到各种博弈、游戏场景下。因为评论里有不少讨论,这里增加几个有意思的干货:
其他小八卦
&&o&&o&&o&
反对,不会显示你的姓名
谷歌DeepMind宣布他们研发的神经网络围棋AI,AlphaGo,在2015年10月首次5:0战胜了人类职业选手欧洲围棋冠军Fan Hui二段。这篇论文由David Silver等完成。里面的技术是出于意料的简单却又强大。为了方便不熟悉技术的小白理解,这里是我对系统工作原理的解读。下面主要编译与:&,原作者是SpinPunch CTO DAN MAAS。本文首发微信公众号“董老师在硅谷”(donglaoshi-123)
“深度学习”是指多层的人工神经网络和训练它的方法。一层神经网络把大量矩阵数据作为输入,通过非线性激活方法取权重,再产生另一个数据集合作为输出。这就像生物神经大脑的工作机理一样,通过合适的矩阵数量,多层组织链接一起,形成神经网络“大脑”进行精准复杂的处理,就像人们识别物体标注图片一样。
虽然神经网络在几十年前就有了,直到最近才形势明朗。这是因为他们需要大量的“训练”去发现矩阵中的数字价值。对早期研究者来说,想要获得不错效果的最小量训练都远远超过计算能力和能提供的数据的大小。但最近几年,一些能获取海量资源的团队重现挖掘神经网络,就是通过“大数据”技术来高效训练。
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和李世石9段的对决!我预测是:如果李使用定式,就像跟其他职业棋手的对决,他可能会输,但如果他让AlphaGo陷入到不熟悉情形下,他可能就赢。
参考资料:
&&o&&o&&o&
反对,不会显示你的姓名
AlphaGo赢了,担心找不到工作,吓得赶紧去读了nature的论文。
Background:
首先一切机器学习都是存在y=f(x),给了大量的x和y,来学习这个f的过程,就叫做训练。输出y是自己规定的,可以取一个值或者一个矩阵。AlphaGo也是这个过程。
其他答主提到的policy network和value network实际上都是卷积神经网络,根据这里功能不同起了不同的名字。那么什么是卷积神经网络呢?
上面是最早的卷积神经网络LeNet5,多用来处理图片等,用一层一层的滤波器处理最后得到输出,这里也是把围棋棋盘当作图片来处理的。
------------------------------------------
根据文章里所说,阿法狗的训练分为3步:
1)使用监督学习的方法训练一个policy network,记为,同时做一个简化版,记为
2)使用强化学习(RL)继续训练policy network,记为
3)训练一个value network
那么这三步是什么意思呢?
1、训练policy network
上面我们卷积神经网络是机器学习的一种手段,用来寻找x和y之间的关系。第一步的policy
network的输入数据来自KGS的三千万个棋局,输出是人类是怎么下子的。把输出设置为矩阵,得到的就是一个概率分布,即在当前状况(state)s下采取行动(action)
a的情况下人类落子的概率分布。就是输入一个棋局,得出人可能怎么下。简化输入特征参量训练,得到网络。
2 使用强化学习(RL)
强化学习的意思是当我们执行某个操作,并不能立即得到结果,需要不停摸索和反馈。这里RL采取和policy network完全相同的结构,初始参数设置为policy network的参数,然后自己和自己下棋(心好累),根据最终的胜负反馈调节网络参数,得到网络
3训练一个value network
前面得到policy网络的输出是个概率矩阵,这里value
network的结构和policy大致相同,但是输出的是单个值,即当前这个位置的值(奖励?价值?大致这个意思)。输入采用第二部RL的输入,输出也采用RL最后胜负的积分,来训练这个网络。
到此为止训练阶段已经完成,下面在战斗的时候(事实上在训练过程应该也用到)蒙特卡洛树搜索(MCTS)
MCTS有四个步骤:
挑选一个叶子节点;往下扩展一个节点;仿真沿这个节点运行下去的结果;反馈。
实际上上面的卷积网络与MCTS的结合就在挑选节点上。(懒得输公式我要贴图了!)
公式如下(不想看公式的直接跳到下面结论):
也就是决策函数,等于取得最大的action
value和概率(也就是policy
network的值)/(仿真节点访问次数+1).
那么action value是啥
等于采取行动a所得的Value()的均值,那么是啥呢
等于value network的值和这次仿真到结尾的结果zL
最后的落子的选择是多次仿真后policy network和value network的加权值。实际上中间训练的其他神经网络也有用到,并不止policy和value两个network。
结论:AlphaGo的工作原理就是利用卷积神经网络的学习能力,通过输出分布的policy network和输出单个值的value network来分析每一步的收益,并以此来简化蒙特卡洛树的搜索空间,达到落子合理性和时间消耗的平衡。
所以我感觉整个过程中从技术来讲,并没有什么新的突破。担心AI统治人类大可不必。这是人类计算能力发展到一定阶段量变引起质变的一个结果。
但我依然认为这是一个里程碑式的成就~
AI训练起来好累。感觉还是能找到工作的。
参考文献:
&&o&&o&&o&
反对,不会显示你的姓名
看了一晚上alphaGo的paper。还是相当复杂的。
首先用19*19*48的feature作为input,用专家棋谱做训练得到一个neural network用来预测给定棋局下一手位置的概率。
以此neural network的结构及参数为基础然后通过自己和自己之前的模型下棋(数千局)的方式更新参数以达到赢棋最大概率。至此alphaGo构建了一个给定棋面下一步下哪里的分布(policy network)。在自己和自己下棋的同时,alphaGo以此中每一棋面为训练集,用上述相同的feature,训练得到一个预测当前棋面会输还是会赢的模型(value network)。
以上述训练所得两个模型为基础,alphaGo来进行策略选择。大致思路如下。下一步的选择由两个模型共同决定,棋局越开始越贴近policy network,越后来越贴近value network。值得注意的是这里的value network是由之前训练所得的value network和一个快速Monte Carlo预测结果的线性加和。
这个思路相当机智,一开始棋面简单可供学习的专家棋谱多,因此下棋就以学人下为主,后期搜索空间变少了,则已暴力穷举为主。
&&o&&o&&o&
反对,不会显示你的姓名
为什么AlphaGo会遇强则强
某些人猜测AlphaGo会遇强则强,认为AlphaGo会模仿对手的棋风下棋,如果遇到樊麾二段,就会下出樊那样的水平较低的棋,而如果遇到好战的李世乭九段,则会变成一头嗜血的怪兽。
事实上,AlphaGo的确会遇强则强,遇到李世乭可能赢二目半,遇到业余6段可能也就赢二目半。但这并非是因其会模仿对手的棋风。因为AlphaGo是通过海量人类对局数据库来训练对棋型的感觉,再从模仿人类选点中筛选胜率最高的一招棋的,因此它不会去专门去模仿特定对手的所谓棋风。但由于AlphaGo筛选选点的唯一考虑因素是胜率最大,而非最凶狠走法和局部最佳应手,也就是能赢就行,不求大胜,比如说选点A有99%的概率赢半目,选点B有98%的概率赢20目半,那AlphaGo就会选择A,而淘汰B,而且为计算获胜概率,它要假定你是最强对手,假定你会算到它能算到的各种变化,所以面对弱手,AlphaGo也会淘汰掉会因强手才能下出的强烈反击从而招致自己胜率下降的棋。这导致AlphaGo遇到弱敌也会走出看似很缓的棋,似乎它遇弱则弱。
在与樊麾的第2局棋中,执黑的AlphaGo第135手没有选择扳杀白右上角的走法,而是选择跳,放活白角,这一手被中国职业棋手广为诟病,认为AlphaGo计算力太差,连这么简单的死活都没算出来,其实这是没有理解AlphaGo的选点标准,它肯定是算出杀棋的胜率不如放活的胜率高,所以选择了稳赢的放活。
因此,在局面领先的情况下,AlphaGo常会走出人类棋手所认为的缓手,从而缩小了领先优势,其实这正是AlphaGo的强大之处,它通过选择胜率更高的退让走法,虽然损目但提高了胜率,从而将其优势转化为不可动摇的胜势。而很多人类棋手反而会在优势局面下贪吃争胜,从而走出过分的招法导致逆转。
必须指出的是,AlphaGo并非一味退让,只有当损目的走法胜率更高时它才会选择退让,否则它永远会走在最大的地方。3月9日对李世乭九段完胜的第一局,就非常完美地体现出了AlphaGo的这个特点。
AlphaGo的棋让人想起了李昌镐九段全盛时期的招法,经常走一些看似缓手的自补,其实这正是李昌镐和AlphaGo的英雄所见略同啊,已走下神坛的李昌镐,看到AlphaGo想必会别有一番滋味在心头。
&&o&&o&&o&
反对,不会显示你的姓名
AlphaGO拥有两个深度神经网络:基于谷歌云计算巨量数据的策略网络(Policy Network)和估值网络(Value Network),再结合传统人工智能方法蒙特卡洛树搜索(MCTS),构成了人工智能的三大武器。
1.&策略网络Policy Network,其实是一个落子选择机制,它着眼于每一步弈棋的下法。
它又细分为三个部分:
突破策略网络(RolloutPolicy Network),通过对盘面的初步判断,得出一个准确率较低的落子选择。
模仿策略网络(SLPolicy Network),通过调用谷歌云存储中上百万的人类对弈棋谱,模仿人类的下棋走法,预测人类的下一步落子位置。
学习策略网络(RLPolicy Network),通过两个AI之间互相自对弈,不断地学习和提高棋力。在学习期间,AlphaGO每天可以自对弈一百万盘之多,而人类一辈子也下不到一万盘棋。
2.&估值网络Value Network,则是一个局面评估机制,它注重于对全局形势的判断。
估值网络通过对全局位置的判断,分析出局面形势,并进行一个价值评估,准确率可达80%以上。
虽然AlphaGo评估的位置只有深蓝的几千分之一,但这正是由于它使用了策略网络,可以更智能地选择位置;再加上估值网络,可以实现更精准的局面评估。
这才是更接近人脑下棋的方式,而不是简单粗暴的穷举法。
3.&蒙特卡洛树搜索 Monte-Carlo Tree Search,则是实现围棋这样超高复杂博弈机制的一种随机算法。
蒙特卡洛算法,是由乌拉姆最早提出,再经数学天才冯·诺伊曼发展和完善,以赌城蒙特卡洛命名的一种算法。
在过于复杂的局面中,人工智能由于硬件缺陷,无法实现穷举级别的采样,而蒙特卡洛算法正是在采样不足的情况下,通过尽可能多次的随机采样,一步一步接近最优解。
举个简单例子你就可以理解。比如有一堆钻石,每次随机选一枚,选中更大的就留下。那么经过越来越多次随机选择,最终留下的那枚钻石,就必然越来越接近这堆钻石中最大的。但是由于随机的缘故,在不遍历每一枚钻石的情况下,只能接近最大,而不能确认最大。
与之对应的是另一个以赌城之名命名的算法——拉斯维加斯算法,则是为了一步一步确认最优解。
它的例子是,比如有一堆钥匙,只有一个能打开锁。每次随机选一把,打不开则再选。那么经过越来越多次随机选择,找到正确钥匙的几率也就越来越大。但是由于随机的缘故,在不遍历每一把钥匙的情况下,并不能确定一定可以找到。
在围棋这样的博弈游戏中,并不存在绝对正确的下法,所以自然应当运用前者。并且,正是由于蒙特卡洛算法的运用,围棋的人工智能才得到了突飞猛进。
AlphaGO是怎样下棋的?
身为集结多种尖端技术于一身的人工智能,AlphaGO的下棋思路可以简化为以下四个步骤:
Step 1:通过突破策略网络和模仿策略网络,找出下一步棋的数个备选走法。
Step 2:利用蒙特卡洛树搜索,从数个备选走法中找出接近最优的走法。
Step3:利用估值网络对这一走法产生的局面进行评估,将评估结果作为当前棋局下的下一步走法的估值。
Step 4 :结合下一步走法的估值和模仿策略网络进行反复的模拟,根据选择次数最多的下法,确定最终的走法。
AlphaGO的下棋思路和步骤
在和樊麾的对弈中,AlphaGO表现得并不仅仅纠结于局部的得失,而更注重通盘大局的考虑。这也恰恰是人类围棋智慧的体现。说AlphaGO真的像人类一样下棋,并不为过。
原文链接:
著作权归作者所有
&&o&&o&&o&
反对,不会显示你的姓名
说人话!5分钟带你看懂阿法狗。
写在前面的话:
昨天天的结果也出来了,李世石试图用比较攻击性的打法,结果还是完败。
作为一个算是勉强会下围棋的IT从业者,心情有点复杂。一方面我知道计算机战胜人是迟早的事情,另一方面却没有想到李世石会败得这么彻底。
或许大时代的潮流终会将一切碾压而过,却总会留下一些落寞的身影。
平心而论,李世石下的不太好,但是首次面对机器人,其实压力之大,是不可想象的,李世石勇敢的做了第一个吃螃蟹的人,值得我们尊敬。
计算机下棋的历史:
其实AI下围棋已经有了快20年了。之前我们没有太关注,是因为还不够强,印象中最好的AI有业余5段的水平。
1997年,IBM公司的“深蓝”计算机战胜了国际象棋世界冠军卡斯帕罗夫,然后大概是2006年,人类最后一次战胜过计算机。因为国际象棋的规则简单,下法也比较固定(兵不能后退,象只能斜着走什么的),IBM凭借单纯的硬件堆叠,用最粗暴的方式。计算所有下一步,之后的可能性,就直接解决了问题。
为什么围棋那么复杂?
国际象棋所有的可能性性是10^47,1后面跟着47个“0”。
但是围棋不一样,19*19 的交叉点中蕴含了2*10^170种可能,就是2后面跟着170个“0”。这个数字大到什么概念呢?
全宇宙的原子数量是10^80,也就是全宇宙每个原子代表一张棋谱,都还差得远。
大家不要小看那几个“0”,给大家用面积表示下。
请看看上面的图,围棋可是整整比国际象棋多了127个“0”,每一个0都会呈现几何级的增大,大家想想一下相差127个“0”面积差多少吧,反正我的电脑是画不出来了。
所以这这种情况下,阿法狗被研究出来开始了。下面正式开始介绍
从前,有一只学习狗。这只狗很喜欢看人来下棋,并且能记住看过的每一盘棋。我们管他叫学习狗。在初期,他学习的是西方国家的人在QQ游戏中下围棋的棋谱。
然后他记住,哦,当出现这个局面的时候,下在天元会输,下小目会赢。他只会做输赢判断,其他一概不知。
请大家记住他的技能,学习狗过目不忘。
但是下着下着,他发现自己总是输,因为之前说过了,围棋可能性太多,他学过的棋谱根本数量不够。人类思考一下就能打败他。
于是,他的邻居--乱走猫出现了。这只猫的特别是动作特别快,但是她懒得思考,从来不看棋谱。就是瞎走。然后她会记住,哦,这样瞎走最后会赢,那样瞎走最后会输。
记住,瞎走猫,是乱走的,但是她能记住,怎么乱走赢的可能性更大。
但是很快问题出现了,由于乱走猫总是乱走。没人愿意和她下棋了(废话,谁这么无聊啊)。于是乱走猫用了分身术,自己和自己下,并且记住怎么会赢。
反正是自己和自己下,不想学习狗只是自己背棋谱,那当然可以用很多分身了。与是乱走猫每天能下好多盘。
题外话:当然,分身数量是有限的,不能无限分身,原因嘛,是因为给的经费是有限的,只能有那么多机器。
什么,你问如果要强行无限分身会怎么样?你拿你家电脑开一万个网页你就知道了。:)
但是当乱走猫和人类下棋的时候,还是输。因为可能性太多,2*10^170种可能种呢。怎么能下的完。
他们的主人--科学家想了想说,这样,学习狗和乱走猫,你们一起来下。
如果出现的情况谁碰见过,并且知道该怎么下就听谁的。
他们合体后,当然就很厉害了,打遍电脑届无敌手。但是和人类比赛有时候还是会输。于是科学家再想办法,这样,你们分身出来自己和自己下,然后。
注意,这个自己和自己下和当初的乱走猫完全不同,由于学习狗记住了棋谱。遇到有些情况,知道该怎么下,乱走猫终于不会再乱走一气了,但是学习狗的棋谱里,没有的乱走猫就依据乱走的经验来,他们的水平提高非常快。
学习狗与乱走猫的真身
其实学习狗就是IT界的“深度学习”,目前用于人脸识别,语音识别。由于需要大量的数据(比如很多棋谱棋谱),所以和大数据结合紧密。
大家最常用的应该就是---汽车驾驶导航。
乱走猫呢,就是大名鼎鼎的“蒙特卡洛搜索树”他最大的特别是可以并行,可以理解成同时下很多种可能,把每种可能都分身成一盘新棋来下。
用处嘛,可以理解凡是排序都能用,比如你要某电商网站搜索北京最便宜的拖鞋。就有无数拖鞋相互比较价格,最终经过预赛、初赛、半决赛、决赛,得出冠军。
但是遇到简单的排序就排他的小弟就行了,不用他亲自出马
但是新的问题又出现了,一猫一狗配合出现了问题,他们先各思考,再合计,一合计就容易闹矛盾。所以,他们特别慢!
科学家一看,好啦,大家不要吵了。
其实不就是对局面的看法不一致嘛,我给你们个专门看局面的家伙--“指点鹰”。
这家伙不用计算该怎么下,专门看如果这样下,胜率是多少。这样速度就快多了。
为了防止,猫、狗、鹰。互相打起来。科学家定了个规矩。你们分别给出几个候选,给了候选后就没有学习狗的事情了。
剩下的决策者,乱走猫和指点鹰的意见各占一半。
偶像天团组合
然后整个组合的成员就都找齐了。学习狗、乱走猫、指点鹰成为给了一个天团组合,名字就叫SHE! 啊不!叫阿法狗。
为什么叫这个名字
其实人家不是狗。。。Alpha是希腊字母的第一个。GO是围棋的英文说法,翻译过来应该是:围棋一号。
不过我认为起名的时候,科学家想的是:奔跑吧,阿尔法!
然后科学家进行了一些人为的调整,让阿法狗养成了这样的习惯。
1、开始阶段,先主要由学习狗来下。因为布局越经典,越不容易有错误。这阶段不求有功,但求无过。
2、中盘后,逐渐由乱走猫接手,因为之后的可能性越来越小,很可能乱走猫已经走过一模一样的局面。
3、指点鹰随时辅助。
4、局部争夺的时候,也由乱走猫接手。乱走猫把棋盘假设成只有5*5大小,然后集中精力来计算,这5*5里面有多少种可能。
----------------------------------------------------分割线----------------------------------------------------
好了,阿法狗,基本上就是这样一个东西,下面说一点私人的看法。
当然,目前阿法狗还在不断和自己下棋,不断进化,之后变成究极态,就几乎没有人能战胜了。但是只要他还没有下到2*10^170种情况,人胜利的可能就一直存在。
于怎么战胜他嘛,很简单。
那就是李世石抡起棋盘砸向电脑!---这是门外汉的说法,人家的主机不在韩国啦,这么多服务器,得多大啊。得专门有自己的发电站、水冷系统、专门的保安和电工好吗!
或者拔网线?黑客入侵?都行~~
好啦,换回严肃脸,估计下一个对手就是柯洁了。
我认为,只是我认为。唯一的胜算在开局阶段,需要不断的下一子换一个地方,跳出5*5的范畴。
也许,只是也许,能战胜他,因为如果中盘后,还是势均力敌的话。人类战胜乱走猫的几率几乎为0
当然,李世石第一局也是这么想的,当然结局大家看到了。阿法狗的科学家黄世杰,就是代替阿法狗落子那位,人家好歹业余五段啊!
好啦,先写到这里,之后想到什么再补充,欢迎大家留言讨论。
然后也欢迎大家搜索h4cj250,或者扫描我的头像二维码关注。
我喜欢写一些,关于历史体育,游戏的东西。。。
&&o&&o&&o&
反对,不会显示你的姓名
谷歌AlphaGo大胜人类冠军李世石,交大文科软妹纸程序员和创业者鼓励师访谈谷歌工程师,解密背后的算法。欢迎广大工科技术男关注程序员和创业者鼓励师(微信公众号),欢迎拍砖。
谷歌工程师给文科妹纸聊AlphaGo
许丞:谷歌中国第三位工程师,之前在谷歌参与谷歌中国地图,谷歌地图以及谷歌光纤网络等项目, 现创业担任心橙互联信息技术有限公司的CEO。
5.7 北京大学计算机
0.4 谷歌中国
5.5 美国谷歌
最近,AlphaGo和李世石的围棋大战刷爆了朋友圈,之前的比赛AlphaGo首次击败人类围棋冠军,朋友圈都在转发人工智能的前景有多么乐观,其在未来发生的应用场景会非常多,机器代替人类的一天将在不久会出现。随着日李世石第一次取胜AlphaGo,朋友圈又引起了一片哗然,都是对人类充满了希望,感慨人类未来会越来越好,未来的世界还是人类主宰。AlphaGo的出现,无疑反应了谷歌的技术实力,研究水平之深。今天,我们采访曾经的谷歌中国第三位工程师,许丞,李开复的50大弟子之一,试图从一个谷歌人的角度谈谈AlphaGo与李世石的这场激战。
Q1: 您之前在谷歌有从事过人工智能相关的工作吗?
A1: 老实说,其实没有。。。我在谷歌参与的项目主要有谷歌地图搜索,谷歌生活搜索以及谷歌光纤网络。我参与过使用机器学习的项目,比如条件随机场进行命名实体识别和Logistic Regression做点击概率预测,但是没有直接做跟Deep Learning等相关的项目。
有两个项目可能跟目前热得发紫的深度学习相关的吧: 在谷歌我们有一个去学习深度学习的codelab,工程师都可以去学习如何使用像DistBelief(第一代谷歌大脑项目)来进行实验研究。我研究过如何用DistBelief去完成MINST手写数字识别,我写的程序还进了后来的tutorial。之前的研究者如果要去做手写数字识别,需要自己先定义好各个features, 然后再训练模型。谷歌大脑系统完全不用写features,直接把原始手写数字标注好,直接让机器去寻找最好的features并生成模型。这个过程简直太奇妙了。
第二个项目是在参与谷歌光纤网络项目的时候,我们需要去用计算机视觉的方式去解决一个物体识别的问题。简单来说的话,就是从街景车的全景图里面,用谷歌大脑去识别是不是有电线杆子,听起来这个电线杆子没什么用。。。。嗯。。。在做光纤布线的时候还是有用的。街景图里面去识别物体已经用在了抹去车牌或者说隐私保护的很多场景下,经过对比测试之后,目前我知道的数字是谷歌大脑识别这些数字或者名字的能力已经超过了人眼。
Q2:AlphaGo为什么可以下围棋?之前深蓝击败卡斯帕罗夫的时候是用了什么原理?呃。。。计算机是怎么可以下棋的?
A2: 计算机下棋的一个基本原理就是在状态空间上进行搜索。。。。嗯,太专业了是吧?好吧,那我们用一个简单的方式来描述一下这个过程。
我们把围棋简化一下,简化成一个叫做九宫棋的棋类游戏。
这个棋就是个简化版的五子棋,规则就是谁能把3个棋子连一片,就算赢(这也太简单了吧?围棋比这个可复杂多了。。。嗯,所有的抽象模型都是由简单开始的)。
我们把每个棋的一个形态当做一个状态,把所有的可能性都作为它的子状态。那么久可以形成一个如下类似的一颗树,这颗树就叫做博弈树。
这样的一棵树基本上把自己接下来可能的步数,以及对手可能走的步数都模拟了一遍,这就是大家下棋的时候所说的能够往后看几步了。看得步数越多,显然赢的可能性就越大,因此就越厉害。
对于九宫棋(三子棋),所有的状态空间是一定的,所以其实是能够知道必胜的走法的。但是对于围棋或者象棋来说,每一次可能的步数都很多,这样每多看一步,就产生很多倍的新的状态空间,对于机器来说,可能就会内存不够或者时间不够了。
因此大家会定义一个用来评估当前局面的函数,叫做评估函数。比如拿九宫棋来说,可以有很多,比如那可以是目前已经连成2个子的个数,或者任然空着的行列对角线的个数等等。评估这个局面可以告诉计算机,目前我这一步的情况如何,是不是很好。
对于某些特别不好的局面,那么评估之后就会被剪掉,这叫做剪枝法。因为博弈树是一个下完一个,另外一个跟着下,因此剪枝的方法一般用的是α–β剪枝法(Alpha–beta pruning)
通过这颗搜索树,那么机器就知道如何下子跟走棋了。
Q3: 这样就明白了。那么《自然》论文的AlphaGo的原理是什么样的呢?跟刚刚讲的一样吗?
A3:其实所有的计算机下棋的程序抽象来看都是上面那个的过程。只是因为难度不一样,所以具体的算法复杂性也会有巨大的区别。
AlphaGo最厉害的地方是用人工神经网络来建模了“棋感”这一个完全无法用计算机语言来描述的概念。通过上面的学习我们可以知道,评估一个棋局的局面实际上可以用简单的函数来描述,也可以通过往后看几步来分析。这个评估函数建模了棋局的胜负概率,因此至关重要。人类经过训练之后,能够比较快速的去数目并判断棋盘的局势,但是机器显然很难(对于计算来说,数数显然是很快的,但是围棋的目数和局势显然不是单纯数一下数目)。
AlphaGo的几个核心部分是
1. Policy Network: 用来预测如果是人类最好的选手,他会选择哪一个走法。这个模型是用深层神经网络实现的,其实是建立了最好棋手棋感的一部分。
2. Fast rollout: 快速走子,跟1的功能一样,但是用了不同的模型,这个模型跟预测点击率的Logistic Regression模型没有区别。
3. Value Network: 评估当前的棋局形势。
4. Monte Carlo Tree Search: 蒙特卡洛树搜索。用来进行状态空间的快速搜索的概率模型。
拿着刚刚学习的东西来对比:
Policy/Value Network是对比与上文说的评估函数。在上面的搜索树里面用了一个简单的数数的方式,而在AlphaGo中,用的是棋感和预测走子的方式来进行构建状态空间。
而蒙特卡洛树搜索是一个概率搜索算法,跟上面的博弈树搜索是一个套路的东西,只是用的是概率模型来进行更有效的搜索。
Q3: 太复杂了没看懂,那么你直接告诉我。。。他的贡献是什么吧?
A3:建立了棋感是很重要的贡献。人和机器根本的不一致在于: 如果你给他看一个图片;
对于机器而言,他看到的都是0/1这样的二进制数字,除了最基础的可以去数里面有多少不同颜色什么信息以外,啥都不知道。而人可以从全局的角度看这个图片,这样就能知道这个图片大概是什么东西,是什么内容。
棋感也是一样 - 人工神经网络应用在计算机视觉上的重要突破,就是人不再让计算机用0/1来去识别图像内容了,而是让计算机自动的去抽取图像的语义特征--当然很可能只是一个一个小图块tiles这种组合方式的语义特征。这样计算机就可以开始慢慢的能够开始感知到这个物体可能是什么特征通过线性组合出来的。慢慢的也就形成了概念。而棋感就是类比于这样的概念!
其二是增强学习。也就是说计算机可以开始通过自己和自己进行比赛的方式来提高自己的模型的精度。在此之前,所有的机器学习大部分都可以说是监督学习,人类在扮演着一个家长的角色,不停的告诉自己的计算机模型说这个是对的,这个需要修正。而现在在AlphaGo中,他们实现的无监督学习已经可以让人不用再去当家长,他们左右互搏也能学习到非常强的知识。这个结果非常可怕。
Q4:目前不管是AlphaGo战胜李世石还是李世石战胜了AlphaGo ,这场人机大战对未来会有什么影响呢?
A4:我认为这个影响将会是巨大的。在此之前,虽然人工智能,机器学习也算是人尽皆知的词汇,但是此次新闻的传播影响之大,从来没有过让普通人去这么去关心人工智能的进展。这次人机大战可以说是影响力全面超越了卡斯帕罗夫深蓝大战那次。可以预言人工智能在接下来的几年之内一定是最热的热点话题,可以想象会有更多大学生投入到其中的学习和研究之中,也可能会让投资更多的聚焦于这个领域,更多的应用和场景,进而会产生让人不可思议的结果。
AlphaGo中的技术和算法显然不会只用于下棋,有意思的是历史上的每一次人机棋类大战都会带来更多新技术的进步。1989年我的老师李开复博士带着他的实习生在奥赛罗比赛中,利用统计学习打败了当时的世界冠军。也许当时对大部分的人来说,其实也仅仅是一次人机大战而已。然而那次之后,统计学习在非特定人语音识别系统开始发挥无与伦比的作用,传统的基于规则的语音识别系统被打得找不着北。现在我们能用到的siri, 自动电话应答机都是从此变为现实。更重要的是,从此之后,统计学习理论基本上统治了整个机器学习这个学科的所有研究方向,延续了差不多20多年。今天,风水轮流转,曾经被认为没前途的神经网络技术卷土重来,通过深度学习的方式再次让人类在视觉识别,棋类竞技等项目上败给机器,重新占据了学术研究的焦点。这是一场计算机智能革命,这些比人机大战结果的更有现实意义。我相信,随着这些算法应用到计算机视觉,自动驾驶,自然语言理解等领域,AlphaGo及其带来的人工智能革命必将改善我们所有人的生活。
&&o&&o&&o&
反对,不会显示你的姓名
大神说的都很精彩,我来随便说点我自己在看论文时候记下的理解和想法(噪音引入~),欢迎指正错误,随意讨论~
嗯。。。然后说说我对于AG的看法。&
最后推荐两篇我觉得写的最好的评述:&
&&o&&o&&o&
反对,不会显示你的姓名
最近在读一本书,巧的是里面有一章讲到了关于“IBM 的深蓝(Deep Blue)可以打败国际象棋世界冠军卡斯帕罗夫”所运用的系统原理。非常有意思,在此和大家分享。
这本书是讲星球大战里的科学的,开篇涉及了一些关于星战的科学知识来做引证。我也找了一些相关资料,一并做一个解释。如下:
《星球大战》中,R2-D2 展示出了这项技能。当时莱娅公主给了他一个秘密任务:将他自己和莱娅公主的消息带给欧比-旺·克诺比。
剧情梗概 | R2进入了一个逃生舱,将他自己和3PO安全地送到了塔图因星球。一到那里,他就找到了人员混杂的地方;被卢克的伯伯买了以后,他也很快获得了需要的信息。R2欺骗卢克,宣称欧比-旺是他的主人,还发现了这名绝地武士的位置。之后,他在发现卢克对莱娅公主的信息感兴趣后,说有抑制螺栓阻止他播放完整信息,这样卢克就可以拿走螺栓了。没有螺栓,R2就可以自由执行任务了。他离开了卢克的家,穿越沙漠向本的家走去。
完成这一系列动作需要以下步骤:
高等的智慧——对人类本性的了解——思辨的能力——灵活的计划——做出决断的能力
这一系列的动作需要高等的智慧、对人类本性的了解、思辨的能力、灵活的计划和做出决断的能力。这些特质都是人工智能,即一台电脑展现人类智慧的关键要素。科学家几十年来一直在努力创造人工智能,虽然他们还没有实现目标,但是已经有了实质性的进展,有了许多不同的方案。
第一种方案是:以规则为基础的方案致力于让电脑成为某个特定、专门学科领域的专家。
如果选择了一个有限的专长,电脑科学家就可以将大量与此学科相关的知识编程进电脑里。
例如:IBM 的深蓝(Deep Blue)可以打败国际象棋世界冠军卡斯帕罗夫,它就是这样的一个系统。电脑里包含了关于象棋的所有规则,它有能力权衡各种可能的棋着和这些棋着可能带来的后果,然后选择最佳的棋着。
但是这样的问题是:当这样的电脑面对其他专业领域的问题时就束手无策了。它不能基于灌输给它的知识进行推测或者类比,它只能顺从规则。
(如同星战中R2 和3PO 都有各自可以称得上专家的特定领域,比如翻译或驾驶X 翼,但是他们也展示出了在各种条件下都可以灵活适应的能力。所以他们并不是单纯以规则为基础的系统。)
此时,科学家会采取的第二种方案:以案例为基础进行推理的人工智能。
这种电脑会解决上述的问题,不是盲目地遵从规则,它们会进行类比,将面临的情况和其他已知的情况做出比较,选出最相似的案例并调取信息。
比如,R2 可能知道奥德朗和许多其他行星上的人类殖民地在哪里。为了找到塔图因星球上的人类殖民地,他将其他星球殖民地的地理特征和他在逃生舱里观察到的地理特征进行对比,定位出最有可能有人类殖民地的地方。实际上,他看起来就是这么做的,这显示出他有以案例为基础进行推理的能力。如果对比很直接,这种系统可以成功完成任务,但是以案例为基础的系统很难抉择出哪一种类比是适合的,哪一种不是。
为了做到这一点,电脑必须有一些关于世界的基本知识,这些知识被我们称为常识。我们的常识来源于一生中学到的东西,虽然我们对这些东西早已经习以为常,但是这些东西却很难传授给电脑。
比如:在对弈过程中处理的方法及对围棋中的基本知识的运用等等。
成功案例:在星战中,R2 和3PO 展示出了他们了解许多常识。比如,他们知道如果卢克被困在垃圾处理器那里,他就不会突然出现在“千年隼号”旁边;如果垃圾处理器里的两面墙合在一起,就会将卢克挤扁杀死;人类都趋生避死,所以如果他们关掉垃圾处理器,卢克就会很高兴。所有这些对我们来说都是显而易见的,但是对电脑来说并不是这样,除非这些信息被输入了进去。
又例如:道格拉斯·里南(Douglas Lenat)博士将常识编程到了一台电脑中,这台电脑叫作CYC,是百科全书(encyclopedia)的简称。他的目标是给予CYC 一亿条常识。这些知识将帮助它进行合理的比较,高效地做出决定,删除不实际或者不符合需求的方案。因此到目前为止,CYC 搜索信息的能力比一般网络搜索引擎都要高。比如,我们要求它向我们展示“一个强壮的、有冒险精神的人”的照片,CYC 就会给出一张照片,上面配有文字“一个攀登石壁的人”,CYC 认为,攀岩是具有冒险精神且需要力量的活动。
第三种制造出人工智能的方案,是制造出可以从经验中学习的系统。
如果我们可以给予计算机感知周围的事件并从这些事件中学习的能力,那么计算机就有可能发展出智力,就像婴儿一样。为了创造出这样的学习系统,科学家建起了神经系统网络,系统的设计大致模仿了人脑的结构。
一般的电脑都受一个复杂的中央处理器控制,但是人脑并没有中央处理系统。人类大脑大约有一千亿个神经细胞,或称“神经元”,每个神经元和其他1 万个神经元连接在一起。为了模仿大脑,神经网络包含了多个简单的处理器,以取代单个中央控制系统。这些简单的处理器相互联系,和大脑中神经元相互联系的方式相似。科学家认为神经元之间大规模的连接给予了大脑同时处理一千万亿条信息的能力。这种大规模的内部关联也被称为“平行结构”,它可以使许多不同的信号同时从一个地方到达另外一个地方。
斯蒂夫·格兰特(Steve Grand)是网络生活科技公司的首席技术官,这个机构致力于有高等智慧的人工生命形式的开发。格兰特相信,平行结构是人工智能发展的关键。“大脑实际上是一台机器,许多事情同时在里面发生。只有这样大规模的平行系统才能产生智能。”到目前为止,神经网络还远远没有大脑复杂和广阔,它们还只有蟑螂脑力的十五分之一而已,但是从根本上来说,它们确实复制了大脑的分散控制结构。
神经网络工作方法如下:
电脑科学家在输入端输入一个具体的刺激,刺激信号通过网络在相连的其他处理器之间进行传递,在输出端就会输出一个信号。通过“训练”网络,科学家可以让网络输出适合需要的结果。
但是我们怎样训练神经网络系统呢?
连接对神经系统网络来说的重要性,超过了一个个处理器。这些连接可以被加强也可以被削弱,加强或者削弱的过程从根本上复制了大脑的学习过程。大脑神经元可以记住它们之前传过的信号,以及这些信号是从哪个神经元传过来的。借助过去信号传输留下的印象,神经元就会下更大的力气处理传自特定神经元的信号,这种连接就被增强了,而同时其他的连接就弱化了。这种过程一直在进行,比如在你学习弹钢琴或者加减法的时候。在大脑中,传输路径已经确定下来了,之后就是熟能生巧的过程。科学家通过调整连接的强度来训练网络,构建出能够产出符合需要的结果的适当路径。这些调整模仿了基本的学习方法,但是网络还没有任何逻辑可言。
虽然神经网络还不是那么成熟,但是它们却有能力学会十分难以编写的程序。比如,它们可以识别出复杂的模式,这是一项被称为模式匹配的技能。神经网络系统现在被用于识别股票市场的模式,并预测其走向。科学家也测试过系统在电子眼中的应用,未来,它们也许可以帮助电脑识别人脸。现在电脑只能识别没有表情的脸,而且还必须是全脸、正脸。强大的模式匹配能力可以使神经网络在各种各样的光线条件下识别出莱娅的脸,不管是从哪个角度、不管成像是否清晰、不管莱娅是微笑还是皱眉,甚至是在她发型奇特的情况下都可以。
R2 和3PO 一定有这个能力。斯蒂夫·格兰特认为,在神经网络系统中使用到的连接机制在制造人工智能的领域最有前景。“以规则为基础的系统和以案例为基础的系统曾经有50 年的时间证明自己可行,但是都失败了。”格兰特认为R2 使用了神经网络,他说,“R2-D2 身上展示出来的智慧简直是新奇的现象。”这意味着智能是一个群体共同运作的结果,而不属于群体中的任何一员。格兰特举了一例:“你是人类中独特而又普通的一员,是几十亿个构成你身体的细胞共同作用的结果,你不是任何一个细胞的产物。”相似地,智慧一定是构成神经网络系统的平行结构上连接的各个处理器相互作用的结果。智慧不存在于任何一个处理器上,我们需要让它们像大脑神经元一样相互作用。格兰特解释说:“最大的障碍就是我们几乎不知道大脑是怎样工作的!”
R2 和3PO 都有模式匹配的能力,我们可以假设神经网络至少组成了他们系统的一部分。另外,《星球大战百科全书》中说R2 和3PO 没有强加在其他机器人身上的内存清理功能1,这让他们可以从经验中学习。这样的学习能力又一次证明了他们有神经网络。
我们最有可能创造出真正的人工智能的方式可能就是将这三种方式结合起来,机器人也将拥有上述的能力。
不过,如果不能感知周围的情况、收集信息、学习和交流,拥有再高超智慧的机器人也不算是好的机器人。R2 和3PO 有视觉、听觉,甚至还有触觉。我们距离制造出这样的机器人还有多远呢?
(内文摘自北京联合出版社图书《&星球大战&里的科学》,若不小心涉及版权雷区请与我联系。如有需求或转载请与相关负责编辑联系)
&&o&&o&&o&
反对,不会显示你的姓名
我觉得EV可能是容易被人忽视的一点,他和神经网络无关,但是至关重要。
有人说是机器一直在选择获胜概率最高的下法,其实严格来说是选择EV最高的下法,只不过最终结果只有一个,胜利或者失败,是一个常量,所以被认为是概率。EV也可以用来打扑克,德州扑克的顶尖高手基本上都是EV打法。
人类目前的围棋理论似乎主要是以V来判断形势,而不是EV,即便是计算全局的目数,也是用EV估算更为精确。事实上之前的CrazyStone,Zen已经在用EV来下棋,只不过他们水平还不够,人们没有足够重视。
用V来评估形势有个问题,就是当价值相同的时候,可能有一点是90%的概率,另一点是10%的概率,这时候明显应该选择90%的那个点,但现有的围棋理论不能帮助人们做出最正确的选择,人类也不大可能算得清一步棋的概率是多少,这导致人类棋手的很难选出最优解,尤其是情况变得复杂以后。
我觉得人类棋手今后可能很难赢电脑了,因为如果要算EV的话,真的还是用电脑算比较精确和快速,这就类似于一个复杂的算术题,人类连计算器都干不过,更别说高配置的电脑。人类之所以没有去算EV,可能也是因为这个东西人类很难算清,而“感觉”对EV这种东西也无能为力。
对了,德州扑克如果保持+EV的话,整体上就不会输钱了。围棋的话,我想如果能够每一步都选择最大的EV,基本上很难输了吧?
&&o&&o&&o&
反对,不会显示你的姓名
全程视频直播观看。
AlphaGo策略分析
逆向一下AlphaGo可能的策略:前半场,以定式和防守为主,每一步用时非常均匀,后半场,发起进攻(据说用了决策网络算法),用时大大增加。
AlphaGo时间管理算法分析
开发团队对AI的认知定位非常清晰:计算能力,从而很好的控制时间。所以就时间分配上说,在“计算能力在30秒内穷可以尽所有盘面”之时(即将AI算法降级为传统算法的边界值,也是算法稳赢边界),将2小时用掉是最好的策略。而如何分配这不确定的2小时,AlphaGo将时间分成了2段,防守和进攻。
对于布局阶段,AlphaGo使用了相对中庸的防守策略,主要是因为布局阶段计算量巨大,所以将优先的计算能力投入到保守策略中,尽量不出会被人类利用的落子上,不留弱点。
在中盘偏后阶段,AlphaGo明显改变了计算策略,开始主动出击,甚至积极打入制造机会。在AlphaGo在右侧李的中腹打入的时候,主播甚至说,“我看到了李世石在笑”,因为那一步的确很激进无理(如下图)。
最终这种尝试取得了回报:不但先手将右侧大龙补活,而且在右下角的打入也成功做活。当然,这跟李的失误也不无关系。
AlphaGo有“逻辑”吗?
从盘面上看,一家之言,应该可以断定是没有的,每一步是独立的,并没有人类对于局部棋盘判断的“历史包袱”。
AlphaGo的“失误”
之前战胜欧洲选手的棋谱上,很多人都说AlphaGo有一些失误,包括今天的对局,当时也觉得有些落子下的有些奇怪,不合常理。后来转头一想,也许团队在设计AlphaGo时,会有考虑场上情况,下出一些“即使失败损失也可控”的非常规落子(新下法),从最终结果上看,这些“失误”是成功的。全局一盘棋,所有的落子都对结果有影响和贡献。从这一点上,我倒是希望AlphaGo保留这种下棋的方式,它增加了AI替人类探索未知的可能性。
李的失误,对于第一次对局来说,可以接受。从李布局阶段的下法来看,也有针对AI的落子,比如下了新定式,而且赢得有利的开局。
作为人类选手,在了解了AlphaGo的策略(而不是复盘)后,应该针对性的制定自己的策略。从现在所知的信息看来,开局部分人类应该努力扩大自己的优势,并在进入中盘的时候巩固优势。
另外也要充分了解自己的弱点,避免孤注一掷。AlphaGo在最后连给李世石打劫的机会都不给,可以看到和人类不同,在计算到获胜后,AI并不会迷恋战斗,而人类却很难控制。
对于未来几盘想看到的对局
1、第一局的战争基本是从局部带入全盘,希望后面可以看到几处同时开火的情况,看看AI是否会有短板;
2、下次李执黑时下模仿棋,让AI和AI战斗,人类坐收渔利,也是一种玩法,当然李不屑;
3、希望Google在KGS上开放AlphaGo,然后人类组团战AI,尤其想看老聂杀AI反被虐。
附棋谱:sgf
(;GM[1]SZ[19]
PB[Lee Sedol]
PW[AlphaGo]
RE[W+R]
KM[7.5]DT[]TM[7200]RU[Chinese]
;B[qd];W[dd];B[pq];W[dp];B[fc];W[cf];B[ql];W[od];B[ld];W[qc]
;B[rc];W[pc];B[re];W[of];B[pg];W[og];B[ph];W[id];B[lf];W[oh]
;B[pi];W[lh];B[kh];W[ke];B[le];W[lg];B[kg];W[kf];B[ne];W[oe]
;B[jc];W[ic];B[jd];W[ie];B[je];W[jf];B[if];W[jg];B[li];W[mi]
;B[hf];W[ih];B[mb];W[gd];B[ki];W[mj];B[kk];W[ib];B[ob];W[ml]
;B[lm];W[nc];B[nb];W[kb];B[lc];W[mm];B[ln];W[kl];B[ll];W[lk]
;B[jj];W[jl];B[hj];W[hi];B[gj];W[gf];B[ii];W[jh];B[ij];W[mn]
;B[lo];W[mo];B[lp];W[mp];B[lq];W[mq];B[im];W[qo];B[fq];W[gg]
;B[cn];W[dn];B[dm];W[fp];B[gp];W[gq];B[fr];W[co];B[en];W[do]
;B[ep];W[cm];B[dl];W[lr];B[kr];W[rb];B[jb];W[ja];B[mf];W[mh]
;B[nd];W[qj];B[pj];W[qk];B[pl];W[pk];B[ok];W[rh];B[rl];W[qf]
;B[ri];W[rf];B[pf];W[qe];B[qh];W[cc];B[bn];W[bm];B[bl];W[bo]
;B[rg];W[mr];B[po];W[jr];B[kq];W[pn];B[oo];W[qp];B[on];W[pp]
;B[op];W[qq];B[or];W[pr];B[oq];W[pd];B[qr];W[rr];B[ps];W[rs]
;B[rn];W[ro];B[qn];W[so];B[cl];W[an];B[ks];W[om];B[ol];W[ci]
;B[hh];W[hg];B[dr];W[dj];B[bq];W[cq];B[cr];W[bp];B[dq];W[br]
;B[cp];W[ap];B[ek];W[fi];B[bj];W[bi];B[pb];W[qb];B[sf];W[rd]
;B[ai];W[ah];B[aj];W[bh];B[gi];W[fj];B[fk];W[oc];B[mc];W[cj]
;B[al];W[nm];B[pm];W[aq];B[gh];W[fh])
&&o&&o&&o&
反对,不会显示你的姓名
好多答案还是太专业了。现在尝试用最通俗的语言回答这个问题。
大家都知道计算机的强项就是穷举,可是这一招在围棋上面吃不开,因为每一步都好几百种选择的下法,一局棋要下一两百步,实在穷举不完。
AlphaGo高明的地方就在于它部分模拟了人类的思维。人下棋的时候不会把每个落子点都考虑一遍,比如,开局第一步你不会下在棋盘正中心,也不会下在顶点上。
AlphaGo不再试图穷举任何一种下法,而是单挑那些看起来比较有前途的下法再往下计算。怎么样知道哪一步下法比较有前途呢?它利用了两点,第一点是学习人类高手怎么走,和人类高手走的比较像的下法AlphaGo会优先给予深度考虑。第二点是学习像人类一样评估盘面局势,落子之后局势较优的走法也会优先给予深度考虑。怎么样?这个决定怎么下的方式是不是和人类有些接近了?有了这两点之后,妈妈再也不用担心狗狗计算不过来了。
至于AlphaGo怎么知道哪些下法和人类比较像,又有哪些下法会让局势较优呢?这就靠人们说到这条围棋狗时常提到的深度学习。这种学习方式通俗的说就是模拟人类大脑神经元的运作方式,当然是极度简化的模拟神经元。简化到什么程度呢?它认为神经元就是一个简单函数,输入一个x,就按函数计算输出一个y(要是神经元真的有这么简单那脑科学估计要容易多了)。AlphaGo把成百上千个神经元联在一块,要是神经元输出结果和人类下的比较像,那就很好,下次接着这么干,要是下的不像,那就调调参数,以便下次下的像一点。这样不停的调参数调啊调,终于得到了两套系统,一套可以模仿人类去落子,第二套可以评估下一步每个落子点的优劣。
就是这两套系统把AlphaGo从穷举的囚笼里面解脱了出来,这也是它的棋力强于其他人工智能的诀窍。至于为什么参数调啊调就可以造出这两个系统,这一点你就不必知道了,因为我也不知道啊,并且我印象中学界知道工程上这么做,但科学道理上也没见谁讲的太明白。
AlphaGo的表现很神奇,但人们说它在机器学习算法上并没有什么太大突破,而是已有算法在应用上的突破,这一点也确实如此。不过这也是科学伟大的地方,因为你总是可以找到背后看起来很平凡原因,而不用像神迹一样去膜拜她。
&&o&&o&&o&
反对,不会显示你的姓名
我来作为正在选修人工智能这门课的学生来给大家抛砖引玉,从最简单的原理给大家讲一下人工智能与人的思维差异。
围棋是一种双人对决的零和博弈,所以从原理上讲,一方要在可选的选项中选择将其优势最大化的选择,另一方则选择令对手优势最小化的方法。我赢即你输,。
那么怎么保证自己的选择使自己优势最大呢? 容易想到,为了在任何情况下都能胜利,必须假定自己无论选择那一点落子,对手都会选择让你优势最小的。遵循这样的原则,根据对手可能的选择中找到让自己优势最大的策略,这就叫最小最大搜索算法。
如下图,MAX层为先手,MIN层为后手,第0层做决策,必须考虑对手第1层的可能决策。注意这里图上的分数是对先手MAX的分数,后手MIN 的分数直接取负即可,开始评估时AI并不知道分数。显然第0层的获胜分是选择第1层中最大的那一个。那怎么求第1层获胜分呢?我们假定对手也是贪婪而明智的,那么他会选择使我们获胜分最小的一步,也就是说第1层会选择第2层最小的那个。不断递归,直到结束(最底层),我们就可以评估获胜分数了。
这个树每一层代表棋手做出了一个可能的选择,随着棋子不断的填充棋盘,状态树的规模就会指数增大,直到结束(棋盘填满)。如果我们把结束后对这个状态进行评分,就知道树最底层节点的评分,再通过最小最大原则,可以把整个树评分,从而选择最优选项。
如果计算机能够把所有的可能算完,那显然人是赢不了的,但考虑到状态总数比宇宙中的粒子还多,显然计算机是算不完的,怎么办呢?
1. 一个简单的想法就是算到规定步数,规定时间就不算了,那最底层的评分怎么办?我们可以估值一个。谷歌这里可能运用了神经网络来学习这个估值函数,(这里是AlphaGo核心优势,当然也跟这几年硬件和分布式计算的发展密不可分)。当然估值可能是不准的
不过随着围棋进行到后面,可下的子越来越少,状态空间越小, 对于计算机来说计算难度就指数下降,同时估值就估的越准,
这就是&&所说的
在后盘的局部细节,以及最后的收官上,计算机完爆人类,因为每个局部小了以后电脑都可以算清楚最优解,所以中后盘可以无限占便宜,这个事实已经在比赛里清晰地体现出来了.
2. 围棋明显是靠远见的,一子就可能有很大的不同,于是有了另一个简单的想法就是我不把整个状态空间跑完,同时只随机抽出一些可能性来跑,这就是蒙特卡洛树搜索,这样在规定的时间内就可以跑的很深,从而解决局部最优不等于全局最优的问题。
学过围棋的同学都知道一个词,叫“定式”。
定式的存在,是人类在上千年的对弈中所积攒下来的局部“最优”解。
然而AlphaGo却违背了定式,违背了老师教导给学生的标准走法。
这就是为什么我在“最优”这两个字上打了引号。
也许定式不是解决当前状况的最优解,或者说,这个局部的最优对于全局却是亏的……
难道没有这样的可能?
人毕竟思考的层数有限,状态空间有限,而计算机却可以想的非常深,这样就有可能解决局部最优解的问题。
3. 同时,运用最小最大原则,从策略上来讲他其实是选择最保守的点落子,这样发挥最稳定(也就是说计算机追求的是假定你选择最好的地方下时,依然能够获胜,而不是最大化获胜分数)。不会像人一样选择可能优势很大却因为想的少而被抓住弱点。
个人猜测,alphaGo的优化目标应该是胜负,至于胜负多少是不管的(跟大多数人的理解一致)。所以举个极端的例子,如果一种下法是赢一目的概率是90%,而另一种下法是赢100目的概率是89%,alphaGo也会选择90%的那种下法,所以用已有的棋手的思维惯式去解释alphaGo的“昏”招,可能会得到离谱的答案。
从盘面上,其实从头至尾一直是alphago领先的,最起码alphago自己认为自己是领先的,不止是alphago,zen也是这么认为的,而且给了alphago很高的评分,AI和人都以为自己优势很大,结果AI笑到了最后.
&&o&&o&&o&
反对,不会显示你的姓名
图为美剧疑犯追踪
宅总与机器TM的对弈
&&o&&o&&o&
反对,不会显示你的姓名
简单来说,就是先随便走,然后看哪种随便走的方案胜率更高就选哪个…(即蒙特卡洛搜索树算法)。
看起来蠢爆了对不对?但计算机又不怕累!人类一天能下几十盘棋就要吐血了,但Alphago直接就先开三千万局练手,你怕不怕?谷歌工程师也对这一方向表示认可,“人类与电脑相比也有其自身的弱点,李世石每年可以下多少盘棋作为练习?也许一千盘?但Alphago可以下一百万盘……每天。”所以,阿尔法狗实力是呈几何倍成长,相比于人类,又没有没心理压力的。
接下来具体坐下解释吧:
在AlphaGo中,DeepMind研究员在程序中录入了大量职业棋手的棋谱让它自己下棋,研习棋谱。不过这只是第一步。理论上,这样的训练只能让这个人工智能系统无法突破人类的计算。为了获得更好的成绩,研究员随后让系统进行自我博弈,计算出比基础棋谱更多新的打点。这其中最重要的是,AlphaGo不仅记录着大量的棋谱,还有一系列规则来指导‘思考’,该程序能够通过机器学习的方式掌握比赛技巧。
DeepMind的技术核心结合了“强化学习”及其他人工智能手段,这种技术能够用于解决现实机器人执行物理任务和对环境作出回应的技术问题。就是说,要让机器人变得更“自然”。
国际象棋每一步平均只有35种可能性的走法,但是围棋呢——在19*19的棋盘内,共有361个点,就机器学习的角度而言,围棋的计算最大有3361种局面,大致的体量是10170,而已经观测到的宇宙中,原子的数量才1080。国际象棋最大只有2155种局面,称为香农数,大致是1047。
使用蒙特卡洛树搜索技术,Crazystone等系统能够进行更长远的计算。而结合其他技术的话,它们能够对可能性走法进行刷选,然后选择出最优的策略。在大多数情况下,它们能够战胜人类选手,但不是最厉害的那一个。顶级大师中,走法很多时候依靠直觉——做棋除了需要计算,还有棋感——棋手能够根据棋形分析攻防线路。
深度学习要依靠神经网络技术,它是可以模拟人脑中神经元网络的软硬件网络。神经网络不会依靠蛮力或预先输入的规则,而是会分析大量数据,“学习”特定的任务。给神经网络提供足够的喵星人照片,它就能学习识别喵星人;提供足够的语音,它也会学习理解人类的语言;提供足够的围棋走法,它也会学会围棋。
在经过3000万步人类走法的训练后,它的神经网络能以57%的准确度(此前记录是44%)预测人类的下一步。然后通过强化学习技术,让这一神经网络与它自己的另一个稍有区别的版本对战。两者互搏中,系统会评估哪一步效果最好,即占领更多棋盘区域。最终,神经网络在判断哪一步更好时会越来越优秀。
计算机网络
与其它神经网络

我要回帖

更多关于 围棋网络对战平台 的文章

 

随机推荐