前世今生,带你了解AlphaGo的发展历程

2024-05-16

1. 前世今生,带你了解AlphaGo的发展历程

     01    阿尔法围棋(AlphaGo)是一款围棋人工智能程序,由位于英国伦敦的谷歌(Google)旗下DeepMind公司的戴维·西尔弗、艾佳·黄和戴密斯·哈萨比斯与他们的团队开发,这个程序利用“价值网络”去计算局面,用“策略网络”去选择下子。
    AlphaGo的主要设计者:
    大卫·席尔瓦 (David Silver),剑桥大学计算机科学学士,硕士,加拿大阿尔伯塔大学计算机科学博士。现为伦敦大学学院讲师及Google DeepMind研究员。
       黄士杰(Aja Huang),台湾交通大学计算机科学学士,台湾师范大学计算机科学硕士和博士,加拿大阿尔伯塔大学计算机科学博士后。现为Google DeepMind研究员。
       阿尔法围棋(AlphaGo)是通过两个不同神经网络“大脑”合作来改进下棋。这些大脑是多层神经网络跟那些Google图片搜索引擎识别图片在结构上是相似的。它们从多层启发式二维过滤器开始,去处理围棋棋盘的定位,就像图片分类器网络处理图片一样。经过过滤,13 个完全连接的神经网络层产生对它们看到的局面判断。这些层能够做分类和逻辑推理。
    这些网络通过反复训练来检查结果,再去校对调整参数,去让下次执行更好。这个处理器有大量的随机性元素,所以人们是不可能精确知道网络是如何“思考”的,但更多的训练后能让它进化到更好。
       第一大脑:落子选择器 (Move Picker)
    阿尔法围棋(AlphaGo)的第一个神经网络大脑是“监督学习的策略网络(Policy Network)” ,观察棋盘布局企图找到最佳的下一步。事实上,它预测每一个合法下一步的最佳概率,那么最前面猜测的就是那个概率最高的。这可以理解成“落子选择器”。
    第二大脑:棋局评估器 (Position Evaluator)
    阿尔法围棋(AlphaGo)的第二个大脑相对于落子选择器是回答另一个问题。不是去猜测具体下一步,它预测每一个棋手赢棋的可能,在给定棋子位置情况下。这“局面评估器”就是“价值网络(Value Network)”,通过整体局面判断来辅助落子选择器。这个判断仅仅是大概的,但对于阅读速度提高很有帮助。通过分类潜在的未来局面的“好”与“坏”,AlphaGo能够决定是否通过特殊变种去深入阅读。如果局面评估器说这个特殊变种不行,那么AI就跳过阅读在这一条线上的任何更多落子。
    2015年10月阿尔法围棋以5:0完胜欧洲围棋冠军、职业二段选手樊麾。2016年3月挑战世界围棋冠军、职业九段选手李世石。根据日程安排,5盘棋将分别于3月9日、10日、12日、13日和15日举行,即使一方率先取得3胜,也会下满5盘。最后以4:1结束了这场“战争”。
    2016年3月27日,AlphaGo确认挑战《星际争霸2》。2016年12月29日晚起,一个注册为“master”、标注为韩国九段的“网络棋手”接连“踢馆”弈城网和野狐网。 2016年12月29日晚起到2017年1月4日晚,master对战人类顶尖高手的战绩是60胜0负。最后一盘前,大师透露,“他”就是阿尔法围棋(AlphaGo)。
    2017年5月23日-27日柯洁与围棋人工智能AlphaGo在“中国乌镇·围棋峰会”展开对弈。三局比赛,分别于5月23、25、27日进行。
    在未来,Alpha Go将和医疗、机器人等进行结合,更好的服务人类。
      

前世今生,带你了解AlphaGo的发展历程

2. AlphaGo到底是怎么赢的?

阿尔法围棋(AlphaGo)为了应对围棋的复杂性,结合了监督学习和强化学习的优势。它通过训练形成一个策略网络(policy network),将棋盘上的局势作为输入信息,并对所有可行的落子位置生成一个概率分布。然后,训练出一个价值网络(value network)对自我对弈进行预测,以 -1(对手的绝对胜利)到1(AlphaGo的绝对胜利)的标准,预测所有可行落子位置的结果。这两个网络自身都十分强大,而阿尔法围棋将这两种网络整合进基于概率的蒙特卡罗树搜索(MCTS)中,实现了它真正的优势。新版的阿尔法围棋产生大量自我对弈棋局,为下一代版本提供了训练数据,此过程循环往复。在获取棋局信息后,阿尔法围棋会根据策略网络(policy network)探索哪个位置同时具备高潜在价值和高可能性,进而决定最佳落子位置。在分配的搜索时间结束时,模拟过程中被系统最频繁考察的位置将成为阿尔法围棋的最终选择。在经过先期的全盘探索和过程中对最佳落子的不断揣摩后,阿尔法围棋的搜索算法就能在其计算能力之上加入近似人类的直觉判断。


围棋

3. AlphaGo 具体是怎么思考的

——一、"思维"的概念 ——"思维"是指人的"意识"对于客观事物的间接反映,"思维"是指"意识"通过其它媒介的作用认识客观事物,借助于已有的知识和经验和已知的条件推测未知的事物。
"思维"的概括性表现在对一类事物非本质属性的摒弃和对其共同本质特征。

AlphaGo 具体是怎么思考的

4. 最强AlphaGo是怎样炼成的

最强AlphaGo Zero怎样炼成
刚刚,Deepmind在Reddit的Machine Learning板块举办了在线答疑活动AMA,Deepmind强化学习组负责人David Silver和其同事热情地回答了网友们提出的各种问题。由于在AMA前一天Deepmind刚刚发表了《Mastering the game of Go without human knowledge》(不使用人类知识掌握围棋)的论文,相关的提问和讨论也异常热烈。
什么是AMA?
AMA(Ask Me Anything)是由Reddit的特色栏目,你也可以将其理解为在线的“真心话大冒险”。AMA一般会约定一个时间,并提前若干天在Reddit上收集问题,回答者统一解答。
本次Deepmind AMA的回答人是:

David Silver:Deepmind强化学习组负责人,AlphaGo首席研究员。David Silver1997年毕业于剑桥大学,获得艾迪生威斯利奖。David于2004年在阿尔伯塔大学获得计算机博士学位,2013年加盟DeepMind,是AlphaGo项目的主要技术负责人。
Julian Schrittwieser:Deepmind高级软件工程师。
此前有多位机器学习界的大牛/公司在Reddit Machine Learning版块开设AMA,包括:Google Brain Team、OpenAI Research Team 、Andrew Ng and Adam Coates、Jürgen Schmidhuber、Geoffrey Hinton、Michael Jordan 、Yann LeCun、Yoshua Bengio等。
我们从今天Deepmind的AMA中选取了一些代表性的问题,整理如下:
关于论文与技术细节
Q: Deepmind Zero的训练为什么如此稳定?深层次的增强学习是不稳定和容易遗忘的,自我对局也是不稳定和容易遗忘的,如果没有一个好的基于模仿的初始化状态和历史检查点,二者结合在一起应该是一个灾难...但Zero从零开始,我没有看到论文中有这部分的内容,你们是怎么做到的呢?
David Silver:在深层增强学习上,AlphaGo Zero与典型的无模式算法(如策略梯度或者Q学习)采用的是完全不同的算法。通过使用AlphaGo搜索,我们可以极大改进策略和自我对局的结果,然后我们会用简单的、基于梯度的更新来训练下一个策略及价值网络。比起基于简便的基于梯度的策略改进,这样的做法会更加稳定。
Q:我注意到ELO等级分增长的数据只与到第40天,是否是因为论文截稿的原因?或者说之后AlphaGo的数据不再显著改善?
David Silver:AlphaGo已经退役了!这意味着我们将人员和硬件资源转移到其他AI问题中,我们还有很长的路要走呐。
Q:关于论文的两个问题:
Q1:您能解释为什么AlphaGo的残差块输入尺寸为19x19x17吗?我不知道为什么每个对局者需要用8个堆叠的二进制特征层来描述?我觉得1、2个层就够了啊。虽然我不是100%理解围棋的规则,但8个层看起来也多了点吧?
Q2:由于整个通道使用自我对局与最近的/最好的模型进行比较,你们觉得这对于采用参数空间的特定SGD驱动轨迹对否会有过拟合的风险?
David Silver:说起来使用表征可能比现在用的8层堆叠的做法更好!但我们使用堆叠的方式观察历史数据有三个原因:1)它与其他领域的常见输入一致;2)我们需要一些历史状态来表示被KO;3)如果有一些历史数据,我们可以更好地猜测对手最近下的位置,这可以作为一种关注机制(注:在围棋中,这叫“敌之要点即我之要点”),而第17层用于标注我们现在究竟是执黑子还是白子,因为要考虑贴目的关系。
Q:有了强大的棋类引擎,我们可以给玩家一个评级——例如Elo围棋等级分就是通过棋手对局的分析逐步得出的,那么AlphaGo是否可以对过去有等级分前的棋手的实力进行分析?这可能为研究人类的认知提供一个平台。
Julian Schrittwieser:感谢分享,这个主意很棒!
我认为在围棋中这完全可以做到,或许可以用最佳应对和实际应对的价值差异或者政策网络给每一手位置评估得到的概率来进行?我有空的时候试一下。
Q: 既然AlphaGo已经退役了,是否有将其开源的计划?这将对围棋社区和机器学习研究产生巨大的影响。还有,Hassabis在乌镇宣称的围棋工具将会什么时候发布?
David Silver:现在这个工具正在准备中。不久后你就能看到新的消息。
Q:AlphaGo开发过程中,在系统架构上遇到的最大障碍是什么?
David Silver:我们遇到的一个重大挑战是在和李世石比赛的时候,当时我们意识到AlphaGo偶尔会受到我们所谓的“妄想”的影响,也就是说,程序可能会错误理解当前盘面局势,并在错误的方向上持续许多步。我们尝试了许多方案,包括引入更多的围棋知识或人类元知识来解决这个问题。但最终我们取得了成功,从AlphaGo本身解决了这个问题,更多地依靠强化学习的力量来获得更高质量的解决方案。
围棋爱好者的问题
Q:1846年,在十四世本因坊迹目秀策与十一世井上幻庵因硕的一盘对局中,秀策下的第127手让幻庵因硕一时惊急两耳发赤,该手成为扭转败局的“耳赤一手”。如果是AlphaGo,是否也会下出相同的一首棋?
Julian Schrittwieser:我问了樊麾,他的回答是这样的:
当时的围棋不贴目,而AlphaGo的对局中,黑棋需贴7.5目。贴目情况不同造成了古今棋局的差异,如果让AlphaGo穿越到当年下那一手,很有可能下的是不同的另一个地方。
Q:从已发布的AlphaGo相互对局看,执白子的时间更为充裕,因而不少人猜测,7.5目的贴目太高了(注:现代围棋的贴目数也在不断变化,如在30年前,当时通行的是黑子贴白子5.5目)。
如果分析更大的数据集,是否可以对围棋的规则得出一些有趣的结论?(例如,执黑或者执白谁更有优势,贴目应该更高还是更低)
Julian Schrittwieser:从我的经验和运行的结果看,7.5目的贴目对双方来说是均势的,黑子的胜率略高一些(55%左右)。
Q:你能给我们讲一下第一手的选择吗?ALphaGo是否会下出我们前所未见的开局方式?比如说,第一手下在天元或者目外,甚至更奇怪的地方?如果不是,这是否是一种“习惯”,或者说AlphaGo有强烈的“信念”认为星位、小目、三三是更好的选择?
David Silver:在训练中我们看到ALphaGo尝试过不同方式的开局——甚至刚开始训练的时候有过第一手下在一一!
即便在训练后期,我们仍然能看到四、六位超高目的开局,但很快就恢复到小目等正常的开局了。
Q:作为AlphaGo的超级粉丝,有一个问题一直在我心中:AlphaGo可以让职业棋手多少子?从论文中我们知道AlphaGo可以下让子棋,我也知道AlphaGo恐怕让不了柯洁两子,但我想你们一定很好奇,你们是否有做内部测试?
David Silver:我们没有和人类棋手下让子棋。当然,我们在测试不同版本的时候下过让子棋,在AlphaGo Master>AlphaGo Lee>ALphaGo Fan这三个版本中,后一个版本均可让三子击败前一个版本。但是,因为AlphaGo是自我训练的,所以尤其擅长打败自己的较弱的前一版本,因此我们不认为这些训练方式可以推广到和人类选手的让子棋中。
Q:你们有没有想过使用生成对抗网络(GAN)?
David Sliver:从某种意义来讲,自我对弈就是对抗的过程。每一次结果的迭代都是在试图找到之前版本的“反向策略”。
传言终结者
Q:我听说AlphaGo在开发初期被引导在某一个具体的方向训练以解决对弈中展现出的弱点。现在它的能力已经超过了人类,是否需要另外的机制来进一步突破?你们有做了什么样的工作?
David Silver:实际上,我们从未引导过AlphaGo来解决具体的弱点。我们始终专注于基础的机器学习算法,让AlphaGo可以学习修复自己的弱点。
当然你不可能达到100%的完美,所以缺点总会存在。 在实践中,我们需要通过正确的方法来确保训练不会落入局部最优的陷阱,但是我们从未使用过人为的推动。
关于DeepMind公司
Q:我这里有几个问题:在DeepMind工作是什么感受?AlphaGo团队成员都有谁?你能介绍一下AlphaGo团队工作分配的情况吗?下一个重大挑战是什么?
David Silver:在DeepMind工作感觉好极了:)——这不是一个招聘广告,但我感觉每天可以在这里做我喜欢的事实在是太幸运了。有很多(多到忙不过来!:))很酷的项目去参与。
我们很幸运有许多大牛在AlphaGo工作。您可以通过查看相应的作者列表来获取更详细的信息。
Q: 你觉得本科生是否可以在人工智能领域取得成功?
Julian Schrittwiese:当然。我本人就只有计算机科学学士学位,这一领域变化迅速,我认为您可以从阅读最新的论文和试验中来进行自学。另外,去那些做过机器学习项目的公司实习也是很有帮助的。
关于算法的扩展和其他项目
Q:Hassabis今年三月份在剑桥的一个演讲中表示,AlphaGo项目未来目标之一是对神经网络进行解释。我的问题是:ALphaGo在神经网络结构上取得了什么样的进展,或者说,对AlphaGo,神经网络仍然是神秘的黑盒子?
David Silver:不仅仅是ALphaGo,可解释性是我们所有项目的一个非常有意思的课题。Deepmind内部有多个团队从不同方式来探索我们的系统,最近有团队发表了基于认知心理学技术去尝试破译匹配网络内部发生了什么,效果非常不错!
Q: 很高兴看到AlphaGo Zero的好成绩。我们的一篇NIPS论文中也提到了对于深度学习和搜索树之间效率的相似问题,因此我对于在更长的训练过程中的行为尤其感兴趣。
AlphaGo的训练过程中,创建学习目标的蒙特卡洛树搜索的贪心算法、策略网络的贪心算法、以及在训练过程中价值功能变化的贪心算法之间的相对表现如何?这种自我对局学习的方法是否可以应用在最近的星际争霸 II API中?
David Silver:感谢介绍您的论文!真不敢相信这篇论文在我们4月7日投稿的时候已经发布了。事实上,它与我们的学习算法的策略组件非常相似(尽管我们也有一个值组件),您可以参考我们的方法和强化学习中的讨论,也很高兴看到在其他游戏中使用类似方法。
Q:为什么早期版本的AlphaGo没有尝试自我对弈?或者说,AlphaGo之前也尝试过自我对弈但效果不好?
我对这个领域的发展和进步程度感到好奇。相比起今天,在两年前在设计一个自主训练的AlphaGo的瓶颈在哪里?今天我们见到的“机器学习直觉”又是经历了什么样的系统迭代过程?
David Silver:创建一个可以完全从自我学习的系统一直是加强学习的一个开放性问题。 我们最初的尝试包括你能查到的许多类似的算法,是相当不稳定的。 我们做了很多尝试,最终AlphaGo Zero算法是最有效的,而且似乎已经破解了这个特定的问题。
Q:你认为机器人什么时候能够有效解决现实世界关于高度、尺寸方面的问题(例如,自己学习如何抓取任何形状、尺寸、位置垃圾的设备)?策略梯度方法是否是实现这一目标的关键点?
Julian Schrittwieser:这主要是由于价值/政策网络上的双重改进,包括更好的训练和更好的架构。具体参见论文图4对不同网络架构的比较。
Q:据说击败柯洁的ALphaGo Master的功耗只是击败李世石的AlphaGo Lee的1/10。你们做了什么样的优化呢?
Julian Schrittwieser:这主要是由于价值/政策网络上的双重改进,包括更好的训练和更好的架构。具体参见论文图4对不同网络架构的比较。(你确认不是copy上一个问题的答案吗)
Q:看起来在增强学习中使用或模拟Agent的长期记忆是一个很大的障碍。 展望未来,您觉得我们是否能以一种新的思维方式解决这一点? 还是说需要等待我们技术可以实现一个超级网络?
Julian Schrittwieser:是的,长期记忆可能是一个重要的因子,例如在“星际争霸”游戏中,你可能已经做出了上千个动作,但你还要记住你派出的侦察兵。
我认为现在已经有了令人振奋的组件(神经图灵机!),但是我认为我们在这方面仍有很大的改进空间。
Q:David,我看过你的演讲视频,你提到增强学习可以用于金融交易, 你有没有真实世界的例子? 你会如何处理黑天鹅事件(过去没有遇到过的情况)?
David Silver:已经发表增强学习用于现实世界的财务算法的论文非常少见,但有一些经典论文值得一看,例如Nevmyvaka、Kearns在2006写的那篇和Moody、Safell在2001年写的那篇。
Q:你们和Facebook几乎同时研究围棋问题,你们能更快获得大师级表现的优势是什么?
对于那些无法获得像AlphaGo如此多的训练数据的领域如何开展机器学习或者增强学习?
David_Silver:Facebook更侧重于监督学习,我们选择更多地关注强化学习,因为我们认为AlphaGo最终将超越人类的知识。 我们最近的结果实际上表明,监督学习方法可以让人大吃一惊,但强化学习绝对是远远超出人类水平的关键之处。

5. 到底是什么让AlphaGo变得如此成功

AlphaGo这个系统主要由几个部分组成:
走棋网络(Policy Network),给定当前局面,预测/采样下一步的走棋。
快速走子(Fast rollout),目标和1一样,但在适当牺牲走棋质量的条件下,速度要比1快1000倍。
估值网络(Value Network),给定当前局面,估计是白胜还是黑胜。
蒙特卡罗树搜索(Monte Carlo Tree Search,MCTS),把以上这三个部分连起来,形成一个完整的系统。
我们的DarkForest和AlphaGo同样是用4搭建的系统。DarkForest较AlphaGo而言,在训练时加强了1,而少了2和3,然后以开源软件Pachi的缺省策略 (default policy)部分替代了2的功能。以下介绍下各部分。
1、走棋网络
走棋网络把当前局面作为输入,预测/采样下一步的走棋。它的预测不只给出最强的一手,而是对棋盘上所有可能的下一着给一个分数。棋盘上有361个点,它就给出361个数,好招的分数比坏招要高。
DarkForest在这部分有创新,通过在训练时预测三步而非一步,提高了策略输出的质量,和他们在使用增强学习进行自我对局后得到的走棋网络(RL network)的效果相当。当然,他们并没有在最后的系统中使用增强学习后的网络,而是用了直接通过训练学习到的网络(SL network),理由是RL network输出的走棋缺乏变化,对搜索不利。

有意思的是在AlphaGo为了速度上的考虑,只用了宽度为192的网络,而并没有使用最好的宽度为384的网络(见图2(a)),所以要是GPU更快一点(或者更多一点),AlphaGo肯定是会变得更强的。
所谓的0.1秒走一步,就是纯粹用这样的网络,下出有最高置信度的合法着法。这种做法一点也没有做搜索,但是大局观非常强,不会陷入局部战斗中,说它建模了“棋感”一点也没有错。我们把DarkForest的走棋网络直接放上KGS就有3d的水平,让所有人都惊叹了下。
可以说,这一波围棋AI的突破,主要得益于走棋网络的突破。这个在以前是不可想像的,以前用的是基于规则,或者基于局部形状再加上简单线性分类器训练的走子生成法,需要慢慢调参数年,才有进步。
当然,只用走棋网络问题也很多,就我们在DarkForest上看到的来说,会不顾大小无谓争劫,会无谓脱先,不顾局部死活,对杀出错,等等。有点像高手不经认真思考的随手棋。因为走棋网络没有价值判断功能,只是凭“直觉”在下棋,只有在加了搜索之后,电脑才有价值判断的能力。
2、快速走子
那有了走棋网络,为什么还要做快速走子呢?有两个原因,首先走棋网络的运行速度是比较慢的,AlphaGo说是3毫秒,我们这里也差不多,而快速走子能做到几微秒级别,差了1000倍。所以在走棋网络没有返回的时候让CPU不闲着先搜索起来是很重要的,等到网络返回更好的着法后,再更新对应的着法信息。
其次,快速走子可以用来评估盘面。由于天文数字般的可能局面数,围棋的搜索是毫无希望走到底的,搜索到一定程度就要对现有局面做个估分。在没有估值网络的时候,不像国象可以通过算棋子的分数来对盘面做比较精确的估值,围棋盘面的估计得要通过模拟走子来进行,从当前盘面一路走到底,不考虑岔路地算出胜负,然后把胜负值作为当前盘面价值的一个估计。
这里有个需要权衡的地方:在同等时间下,模拟走子的质量高,单次估值精度高但走子速度慢;模拟走子速度快乃至使用随机走子,虽然单次估值精度低,但可以多模拟几次算平均值,效果未必不好。所以说,如果有一个质量高又速度快的走子策略,那对于棋力的提高是非常有帮助的。
为了达到这个目标,神经网络的模型就显得太慢,还是要用传统的局部特征匹配(local pattern matching)加线性回归(logistic regression)的方法,这办法虽然不新但非常好使,几乎所有的广告推荐,竞价排名,新闻排序,都是用的它。
与更为传统的基于规则的方案相比,它在吸纳了众多高手对局之后就具备了用梯度下降法自动调参的能力,所以性能提高起来会更快更省心。AlphaGo用这个办法达到了2微秒的走子速度和24.2%的走子准确率。24.2%的意思是说它的最好预测和围棋高手的下子有0.242的概率是重合的,相比之下,走棋网络在GPU上用2毫秒能达到57%的准确率。这里,我们就看到了走子速度和精度的权衡。

和训练深度学习模型不同,快速走子用到了局部特征匹配,自然需要一些围棋的领域知识来选择局部特征。对此AlphaGo只提供了局部特征的数目(见Extended Table 4),而没有说明特征的具体细节。我最近也实验了他们的办法,达到了25.1%的准确率和4-5微秒的走子速度,然而全系统整合下来并没有复现他们的水平。
我感觉上24.2%并不能完全概括他们快速走子的棋力,因为只要走错关键的一步,局面判断就完全错误了;而图2(b)更能体现他们快速走子对盘面形势估计的精确度,要能达到他们图2(b)这样的水准,比简单地匹配24.2%要做更多的工作,而他们并未在文章中强调这一点。

在AlphaGo有了快速走子之后,不需要走棋网络和估值网络,不借助任何深度学习和GPU的帮助,不使用增强学习,在单机上就已经达到了3d的水平(见Extended Table 7倒数第二行),这是相当厉害的了。任何使用传统方法在单机上达到这个水平的围棋程序,都需要花费数年的时间。在AlphaGo之前,Aja Huang曾经自己写过非常不错的围棋程序,在这方面相信是有很多的积累的。
3、估值网络

AlphaGo的估值网络可以说是锦上添花的部分,从Fig 2(b)和Extended Table 7来看,没有它AlphaGo也不会变得太弱,至少还是会在7d-8d的水平。少了估值网络,等级分少了480分,但是少了走棋网络,等级分就会少掉800至1000分。特别有意思的是,如果只用估值网络来评估局面(2177),那其效果还不及只用快速走子(2416),只有将两个合起来才有更大的提高。
我的猜测是,估值网络和快速走子对盘面估计是互补的,在棋局一开始时,大家下得比较和气,估值网络会比较重要;但在有复杂的死活或是对杀时,通过快速走子来估计盘面就变得更重要了。考虑到估值网络是整个系统中最难训练的部分(需要三千万局自我对局),我猜测它是最晚做出来并且最有可能能进一步提高的。
关于估值网络训练数据的生成,值得注意的是文章中的附录小字部分。与走棋网络不同,每一盘棋只取一个样本来训练以避免过拟合,不然对同一对局而言输入稍有不同而输出都相同,对训练是非常不利的。这就是为什么需要三千万局,而非三千万个盘面的原因。对于每局自我对局,取样本是很有讲究的,先用SL network保证走棋的多样性,然后随机走子,取盘面,然后用更精确的RL network走到底以得到最正确的胜负估计。当然这样做的效果比用单一网络相比好多少,我不好说。
一个让我吃惊的地方是,他们完全没有做任何局部死活/对杀分析,纯粹是用暴力训练法训练出一个相当不错的估值网络。这在一定程度上说明深度卷积网络(DCNN)有自动将问题分解成子问题,并分别解决的能力。
另外,我猜测他们在取训练样本时,判定最终胜负用的是中国规则。所以说三月和李世石对局的时候也要求用中国规则,不然如果换成别的规则,就需要重新训练估值网络(虽然我估计结果差距不会太大)。至于为什么一开始就用的中国规则,我的猜测是编程非常方便(我在写DarkForest的时候也是这样觉得的)。
4、蒙特卡罗树搜索
这部分基本用的是传统方法,没有太多可以评论的,他们用的是带先验的UCT,即先考虑DCNN认为比较好的着法,然后等到每个着法探索次数多了,选择更相信探索得来的胜率值。而DarkForest则直接选了DCNN推荐的前3或是前5的着法进行搜索。我初步试验下来效果差不多,当然他们的办法更灵活些,在允许使用大量搜索次数的情况下,他们的办法可以找到一些DCNN认为不好但却对局面至关重要的着法。
一个有趣的地方是在每次搜索到叶子节点时,没有立即展开叶子节点,而是等到访问次数到达一定数目(40)才展开,这样避免产生太多的分支,分散搜索的注意力,也能节省GPU的宝贵资源,同时在展开时,对叶节点的盘面估值会更准确些。除此之外,他们也用了一些技巧,以在搜索一开始时,避免多个线程同时搜索一路变化,这部分我们在DarkForest中也注意到了,并且做了改进。
5、总结
总的来说,这整篇文章是一个系统性的工作,而不是一两个小点有了突破就能达到的胜利。在成功背后,是作者们,特别是两位第一作者David Silver和Aja Huang,在博士阶段及毕业以后五年以上的积累,非一朝一夕所能完成的。他们能做出AlphaGo并享有现在的荣誉,是实至名归的。
从以上分析也可以看出,与之前的围棋系统相比,AlphaGo较少依赖围棋的领域知识,但还远未达到通用系统的程度。职业棋手可以在看过了寥寥几局之后明白对手的风格并采取相应策略,一位资深游戏玩家也可以在玩一个新游戏几次后很快上手,但到目前为止,人工智能系统要达到人类水平,还是需要大量样本的训练的。可以说,没有千年来众多棋手在围棋上的积累,就没有围棋AI的今天。

到底是什么让AlphaGo变得如此成功

6. AlphaGo为什么这么厉害

AlphaGo依靠精确的专家评估系统(value network)、基于海量数据的深度神经网络(policy network),及传统的人工智能方法蒙特卡洛树搜索的组合,以及可以通过左右互搏提高自己的水平,这个真的是有的恐怖了有木有。李世石九段固然厉害,可人类毕竟是动物,机器软件程序是无休止的工作,这一点也是客观因素了。

AlphaGo依靠精确的专家评估系统(value network)、基于海量数据的深度神经网络(policy network),及传统的人工智能方法蒙特卡洛树搜索的组合,以及可以通过左右互搏提高自己的水平,这个真的是有的恐怖了有木有。李世石九段固然厉害,可人类毕竟是动物,机器软件程序是无休止的工作,这一点也是客观因素了。比赛已经结束了,李世石一比四不敌alphago。
有一种观点人为,只要下AlphaGo棋谱中所未记载的招数就能获胜,哪怕这些下法根本不符合围棋棋理。这种做法的可行性并不高。

AlphaGo并非是对人类棋手弈棋棋谱记忆后的简单再现,而是具备了一定模拟人类神经网络的“思考”能力,既不是像过去那样采用穷举法寻找最有选项,也不是复制棋谱中
所记载的定势或手筋。而是会对选择进行“思考”,删除那些胜率低的选择,并对具有高胜率的选项进行深度“思考”,最终从无数个落子的选择中基于自己的“思考”选择一个最优项。 因此,若是人类棋手想凭借下几步不符合围棋棋理,或未被棋谱记载的围棋下法,就轻而易举战胜AlphaGo的可能性并不高。因为AlphaGo是人工智能,而不是一台只会复制人类棋手招数的机器。

7. AlphaGo为什么这么厉害

AlphaGo为什么这么厉害
AlphaGo这个系统主要由几个部分组成:
走棋网络(Policy Network),给定当前局面,预测/采样下一步的走棋。
快速走子(Fast rollout),目标和1一样,但在适当牺牲走棋质量的条件下,速度要比1快1000倍。
估值网络(Value Network),给定当前局面,估计是白胜还是黑胜。
蒙特卡罗树搜索(Monte Carlo Tree Search,MCTS),把以上这三个部分连起来,形成一个完整的系统。
我们的DarkForest和AlphaGo同样是用4搭建的系统。DarkForest较AlphaGo而言,在训练时加强了1,而少了2和3,然后以开源软件Pachi的缺省策略 (default policy)部分替代了2的功能。以下介绍下各部分。
1、走棋网络
走棋网络把当前局面作为输入,预测/采样下一步的走棋。它的预测不只给出最强的一手,而是对棋盘上所有可能的下一着给一个分数。棋盘上有361个点,它就给出361个数,好招的分数比坏招要高。
DarkForest在这部分有创新,通过在训练时预测三步而非一步,提高了策略输出的质量,和他们在使用增强学习进行自我对局后得到的走棋网络(RL network)的效果相当。当然,他们并没有在最后的系统中使用增强学习后的网络,而是用了直接通过训练学习到的网络(SL network),理由是RL network输出的走棋缺乏变化,对搜索不利。

有意思的是在AlphaGo为了速度上的考虑,只用了宽度为192的网络,而并没有使用最好的宽度为384的网络(见图2(a)),所以要是GPU更快一点(或者更多一点),AlphaGo肯定是会变得更强的。
所谓的0.1秒走一步,就是纯粹用这样的网络,下出有最高置信度的合法着法。这种做法一点也没有做搜索,但是大局观非常强,不会陷入局部战斗中,说它建模了“棋感”一点也没有错。我们把DarkForest的走棋网络直接放上KGS就有3d的水平,让所有人都惊叹了下。
可以说,这一波围棋AI的突破,主要得益于走棋网络的突破。这个在以前是不可想像的,以前用的是基于规则,或者基于局部形状再加上简单线性分类器训练的走子生成法,需要慢慢调参数年,才有进步。
当然,只用走棋网络问题也很多,就我们在DarkForest上看到的来说,会不顾大小无谓争劫,会无谓脱先,不顾局部死活,对杀出错,等等。有点像高手不经认真思考的随手棋。因为走棋网络没有价值判断功能,只是凭“直觉”在下棋,只有在加了搜索之后,电脑才有价值判断的能力。
2、快速走子
那有了走棋网络,为什么还要做快速走子呢?有两个原因,首先走棋网络的运行速度是比较慢的,AlphaGo说是3毫秒,我们这里也差不多,而快速走子能做到几微秒级别,差了1000倍。所以在走棋网络没有返回的时候让CPU不闲着先搜索起来是很重要的,等到网络返回更好的着法后,再更新对应的着法信息。
其次,快速走子可以用来评估盘面。由于天文数字般的可能局面数,围棋的搜索是毫无希望走到底的,搜索到一定程度就要对现有局面做个估分。在没有估值网络的时候,不像国象可以通过算棋子的分数来对盘面做比较精确的估值,围棋盘面的估计得要通过模拟走子来进行,从当前盘面一路走到底,不考虑岔路地算出胜负,然后把胜负值作为当前盘面价值的一个估计。
这里有个需要权衡的地方:在同等时间下,模拟走子的质量高,单次估值精度高但走子速度慢;模拟走子速度快乃至使用随机走子,虽然单次估值精度低,但可以多模拟几次算平均值,效果未必不好。所以说,如果有一个质量高又速度快的走子策略,那对于棋力的提高是非常有帮助的。
为了达到这个目标,神经网络的模型就显得太慢,还是要用传统的局部特征匹配(local pattern matching)加线性回归(logistic regression)的方法,这办法虽然不新但非常好使,几乎所有的广告推荐,竞价排名,新闻排序,都是用的它。
与更为传统的基于规则的方案相比,它在吸纳了众多高手对局之后就具备了用梯度下降法自动调参的能力,所以性能提高起来会更快更省心。AlphaGo用这个办法达到了2微秒的走子速度和24.2%的走子准确率。24.2%的意思是说它的最好预测和围棋高手的下子有0.242的概率是重合的,相比之下,走棋网络在GPU上用2毫秒能达到57%的准确率。这里,我们就看到了走子速度和精度的权衡。

和训练深度学习模型不同,快速走子用到了局部特征匹配,自然需要一些围棋的领域知识来选择局部特征。对此AlphaGo只提供了局部特征的数目(见Extended Table 4),而没有说明特征的具体细节。我最近也实验了他们的办法,达到了25.1%的准确率和4-5微秒的走子速度,然而全系统整合下来并没有复现他们的水平。
我感觉上24.2%并不能完全概括他们快速走子的棋力,因为只要走错关键的一步,局面判断就完全错误了;而图2(b)更能体现他们快速走子对盘面形势估计的精确度,要能达到他们图2(b)这样的水准,比简单地匹配24.2%要做更多的工作,而他们并未在文章中强调这一点。

在AlphaGo有了快速走子之后,不需要走棋网络和估值网络,不借助任何深度学习和GPU的帮助,不使用增强学习,在单机上就已经达到了3d的水平(见Extended Table 7倒数第二行),这是相当厉害的了。任何使用传统方法在单机上达到这个水平的围棋程序,都需要花费数年的时间。在AlphaGo之前,Aja Huang曾经自己写过非常不错的围棋程序,在这方面相信是有很多的积累的。
3、估值网络

AlphaGo的估值网络可以说是锦上添花的部分,从Fig 2(b)和Extended Table 7来看,没有它AlphaGo也不会变得太弱,至少还是会在7d-8d的水平。少了估值网络,等级分少了480分,但是少了走棋网络,等级分就会少掉800至1000分。特别有意思的是,如果只用估值网络来评估局面(2177),那其效果还不及只用快速走子(2416),只有将两个合起来才有更大的提高。
我的猜测是,估值网络和快速走子对盘面估计是互补的,在棋局一开始时,大家下得比较和气,估值网络会比较重要;但在有复杂的死活或是对杀时,通过快速走子来估计盘面就变得更重要了。考虑到估值网络是整个系统中最难训练的部分(需要三千万局自我对局),我猜测它是最晚做出来并且最有可能能进一步提高的。
关于估值网络训练数据的生成,值得注意的是文章中的附录小字部分。与走棋网络不同,每一盘棋只取一个样本来训练以避免过拟合,不然对同一对局而言输入稍有不同而输出都相同,对训练是非常不利的。这就是为什么需要三千万局,而非三千万个盘面的原因。对于每局自我对局,取样本是很有讲究的,先用SL network保证走棋的多样性,然后随机走子,取盘面,然后用更精确的RL network走到底以得到最正确的胜负估计。当然这样做的效果比用单一网络相比好多少,我不好说。
一个让我吃惊的地方是,他们完全没有做任何局部死活/对杀分析,纯粹是用暴力训练法训练出一个相当不错的估值网络。这在一定程度上说明深度卷积网络(DCNN)有自动将问题分解成子问题,并分别解决的能力。
另外,我猜测他们在取训练样本时,判定最终胜负用的是中国规则。所以说三月和李世石对局的时候也要求用中国规则,不然如果换成别的规则,就需要重新训练估值网络(虽然我估计结果差距不会太大)。至于为什么一开始就用的中国规则,我的猜测是编程非常方便(我在写DarkForest的时候也是这样觉得的)。
4、蒙特卡罗树搜索
这部分基本用的是传统方法,没有太多可以评论的,他们用的是带先验的UCT,即先考虑DCNN认为比较好的着法,然后等到每个着法探索次数多了,选择更相信探索得来的胜率值。而DarkForest则直接选了DCNN推荐的前3或是前5的着法进行搜索。我初步试验下来效果差不多,当然他们的办法更灵活些,在允许使用大量搜索次数的情况下,他们的办法可以找到一些DCNN认为不好但却对局面至关重要的着法。
一个有趣的地方是在每次搜索到叶子节点时,没有立即展开叶子节点,而是等到访问次数到达一定数目(40)才展开,这样避免产生太多的分支,分散搜索的注意力,也能节省GPU的宝贵资源,同时在展开时,对叶节点的盘面估值会更准确些。除此之外,他们也用了一些技巧,以在搜索一开始时,避免多个线程同时搜索一路变化,这部分我们在DarkForest中也注意到了,并且做了改进。
5、总结
总的来说,这整篇文章是一个系统性的工作,而不是一两个小点有了突破就能达到的胜利。在成功背后,是作者们,特别是两位第一作者David Silver和Aja Huang,在博士阶段及毕业以后五年以上的积累,非一朝一夕所能完成的。他们能做出AlphaGo并享有现在的荣誉,是实至名归的。
从以上分析也可以看出,与之前的围棋系统相比,AlphaGo较少依赖围棋的领域知识,但还远未达到通用系统的程度。职业棋手可以在看过了寥寥几局之后明白对手的风格并采取相应策略,一位资深游戏玩家也可以在玩一个新游戏几次后很快上手,但到目前为止,人工智能系统要达到人类水平,还是需要大量样本的训练的。可以说,没有千年来众多棋手在围棋上的积累,就没有围棋AI的今天。

AlphaGo为什么这么厉害

8. alphago为什么那么厉害

AlphaGo依靠精确的专家评估系统(value network)、基于海量数据的深度神经网络(policy network),及传统的人工智能方法蒙特卡洛树搜索的组合,以及可以通过左右互搏提高自己的水平,这个真的是有的恐怖了有木有。 李世石九段固然厉害,可人类毕竟是动物,机器软件程序是无休止的工作,这一点也是客观因素了。 比赛已经结束了,李世石一比四不敌alphago。


关于今天alpha go的获胜,看到一个有趣而且可怕的观点: alphago的蒙特卡罗树遇弱则弱,遇强则强;胜率很大时,取胜可行解多,则AI会随意选择一个可行解,从而走出“俗手”;而双方均势时,取胜可行解少,就会打出力挽狂澜的神来之笔。所以如果AI走棋“失误”,就说明你已经输了。 这就是为什么今天在李世石使用罕见开局时,alpha go开始表现一般,而当后来李世石认真起来慢慢逆转却被alpha go中盘102手,108手和110手以神来之笔奠定胜负,最后胜负已定时alpha go 122手又打出小失误。 如果真是这样的,最后alpha go以4:1取胜也就不奇怪了。

仅胜利的一局可能是谷歌为了让alphago有世界排名而故意输的一局,因为如果一个棋手一直连胜,是没有世界排名的,输了一局才有排名,按照官方发布目前alphago排名世界第二,中国小将柯杰世界第一。