声明:本文转载自(微信公众号:CKDD),做者郑宇 张钧波,仅做学习收录之用,不作商业目的。微信
近期AlphaGo在人机围棋比赛中连胜李世石3局,体现了人工智能在围棋领域的突破,做为人工智能领域的工做者,咱们深感欣慰。其实质是深度学习网络(CNN)跟蒙特卡罗搜索树(MCTS)结合的胜利,是人类智慧的进步。很多所谓的“砖”家开始鼓吹机器打败人类、甚至人类将被机器统治等无知言论,让人实在看不下去。做为围棋爱好者和人工智能领域工做者,咱们以为是时候跟你们讲讲AlphaGo的原理及其弱点了。
能够很负责任的告诉你们,AlphaGo尚未彻底攻克围棋这个难题,职业棋手也并不是没有但愿赢Go了,更不能说机器打败了人类。AlphaGo将来须要走的路还很长。若是有中国职业棋手想挑战AlphaGo,咱们愿意为其组建最顶尖(且懂围棋)的人工智能专家顾问团,助其取胜AlphaGo。
虽然网上技术贴很多,但尚未一篇文章彻底讲清楚AphaGo的原理,Nature上刊登的文章也缺少一张刨解全局的图(加之用英文描述,同窗们很难理解透彻)。如下是我跟微软亚洲研究院的张钧波博士在屡次阅读原文并收集了大量其余资料后,一块儿完成的一张图,解释了AlphaGo的原理,看完后你们天然知道其弱点在何处了。markdown
图一、AlphaGo的原理图 (做者为本图花费大量心血,版权归两位做者全部,欢迎转发,但请勿盗图)网络
AlphaGo整体上包含离线学习(图1上半部分)和在线对弈(图1下半部分)两个过程。函数
离线学习过程分为三个训练阶段。
• 第一阶段:利用3万多幅专业棋手对局的棋谱来训练两个网络。一个是基于全局特征和深度卷积网络(CNN)训练出来的策略网络(Policy Network)。其主要做用是给定当前盘面状态做为输入,输出下一步棋在棋盘其它空地上的落子几率。另外一个是利用局部特征和线性模型训练出来的快速走棋策略(Rollout Policy)。策略网络速度较慢,但精度较高;快速走棋策略反之。
• 第二阶段:利用第t轮的策略网络与先前训练好的策略网络互相对弈,利用加强式学习来修正第t轮的策略网络的参数,最终获得加强的策略网络。这部分被不少“砖”家极大的鼓吹,但实际上应该存在理论上的瓶颈(提高能力有限)。这就比如2个6岁的小孩不断对弈,其水平就会达到职业9段?
• 第三阶段:先利用普通的策略网络来生成棋局的前U-1步(U是一个属于[1, 450]的随机变量),而后利用随机采样来决定第U步的位置(这是为了增长棋的多样性,防止过拟合)。随后,利用加强的策略网络来完成后面的自我对弈过程,直至棋局结束分出胜负。此后,第U步的盘面做为特征输入,胜负做为label,学习一个价值网络(Value Network),用于判断结果的输赢几率。价值网络实际上是AlphaGo的一大创新,围棋最为困难的就是很难根据当前的局势来判断最后的结果,这点职业棋手也很难掌握。经过大量的自我对弈,AlphaGo产生了3000万盘棋局,用做训练学习价值网络。但因为为其的搜索空间太大,3000万盘棋局也不能帮AlphaGo彻底攻克这个问题。学习
在线对弈过程包括如下5个关键步骤:其核心思想实在蒙特卡洛搜索树(MCTS)中嵌入了深度神经网络来减小搜索空间。AlphaGo并无具有真正的思惟能力。
1. 根据当前盘面已经落子的状况提取相应特征;
2. 利用策略网络估计出棋盘其余空地的落子几率;
3. 根据落子几率来计算此处往下发展的权重,初始值为落子几率自己(如0.18)。实际状况多是一个以几率值为输入的函数,此处为了理解简便。
4. 利用价值网络和快速走棋网络分别判断局势,两个局势得分相加为此处最后走棋获胜的得分。这里使用快速走棋策略是一个用速度来换取量的方法,从被判断的位置出发,快速行棋至最后,每一次行棋结束后都会有个输赢结果,而后综合统计这个节点对应的胜率。而价值网络只要根据当前的状态即可直接评估出最后的结果。二者各有优缺点、互补。
5. 利用第四步计算的得分来更新以前那个走棋位置的权重(如从0.18变成了0.12);此后,从权重最大的0.15那条边开始继续搜索和更新。这些权重的更新过程应该是能够并行的。当某个节点的被访问次数超过了必定的门限值,则在蒙特卡罗树上进一步展开下一级别的搜索(如图2所示)。人工智能
图二、MCTS拓展下一级节点图片
AlphaGo的弱点在哪里?
1. 攻其策略网络,加大搜索空间。进入中盘后,职业选手如能创建起比较复杂的局面,每一步棋都牵连不少个局部棋的命运(避免单块、局部做战),则AlphaGo须要搜索空间则急剧加大,短期内获得的解的精度就会大打折扣。李世石九段的第四局棋就有这个意思。此处左右上下共5块黑白棋都相互关联到一块儿,白1下后,黑棋须要考虑不少地方。不少地方都须要在MCTS上进行跟深刻的搜索。为了在必定的时间内有结果,只能放弃搜索精度。
2. 攻其价值网络,万劫不复:AlphaGo的价值网络极大的提升了以前单纯依靠MCTS来作局势判断的精度,但离准确判断围棋局势还有不小的差距。神经网络还不能彻底避免在某些时候出现一些怪异(甚至错误)的判断,更况且其训练样本还远远不足。这也是为何有了价值网络还仍然须要依靠快速走棋来判断局势。你们都曾经怀疑过AlphaGo的打劫能力,也感受到了AlphaGo有躲避打劫的迹象。实际上南京大学的周志华教授曾经撰文指出打劫会让价值网络崩溃的问题,原理再也不重复。总之打劫要乘早,太晚了搜索空间变小,即使价值网络失效,还能够靠快速走棋网络来弥补。开劫应该以在刚刚进入中盘时期为好(太早劫财还不够),并切保持长时间不消劫,最好在盘面上能同时有两处以上打劫。没有了价值网络的AlphaGo其实水平也就任业3段左右。深度学习
图三、李世石对AlphaGo第四盘棋棋谱it