Month: January 2016

关于 AlphaGo 论文的阅读笔记

2016 年 1 月 28 日,Deepmind 公司在 Nature 杂志发表论文 Mastering the game of Go with deep neural networks and tree search,介绍了 AlphaGo 程序的细节。本文是对这篇论文的阅读笔记,以及关于人工智能和围棋进一步的一些想法。 声明:我是数学 PhD 和软件工程师,但不是人工智能领域的专家。我也不会下围棋。 一、 AlphaGo 总体上由两个神经网络构成,以下我把它们简单称为「两个大脑」,这并非原文中的提法,只是我的一个比喻。 第一个大脑(Policy Network)的作用是在当前局面下判断下一步可以在哪里走子。它有两种学习模式: 一个是简单模式,它通过观察 KGS(一个围棋对弈服务器)上的对局数据来训练。粗略地说:这可以理解为让大脑学习「定式」,也就是在一个给定的局面下人类一般会怎么走,这种学习不涉及对优劣的判断。 另一个是自我强化学习模式,它通过自己和自己的海量对局的最终胜负来学习评价每一步走子的优劣。因为是自我对局,数据量可以无限增长。 第二个大脑(Value Network)的作用是学习评估整体盘面的优劣。它也是通过海量自我对局来训练的(因为采用人类对局会因为数据太少而失败)。 在对弈时,这两个大脑是这样协同工作的: 第一个大脑的简单模式会判断出在当前局面下有哪些走法值得考虑。 第一个大脑的复杂模式通过蒙特卡洛树来展开各种走法,即所谓的「算棋」,以判断每种走法的优劣。在这个计算过程中,第二个大脑会协助第一个大脑通过判断局面来砍掉大量不值得深入考虑的分岔树,从而大大提高计算效率。 与此同时,第二个大脑本身通过下一步棋导致的新局面的优劣本身也能给出关于下一步棋的建议。 最终,两个大脑的建议被平均加权,做出最终的决定。 在论文中一个有趣的结论是:两个大脑取平均的结果比依赖两者各自得出的结果都要好很多。这应当是让 AlphaGo 表现出和人类相似性的关键所在。 二、 如果我是这篇论文的审稿人,我会对论文提出下面这些问题和评论: 首先,这些神经网络训练在很大程度上是通过自我对局来实现的。这既是某种优势(按照 Facebook 人工智能研究员田渊栋的说法,几千万自我对局这种规模是相当惊人的数据量),某种程度上来说也是不得已而为之,因为人类对局的总数实在太少,会导致机器学习中常见的过度拟合问题。 但是这样是否有可能造成自我设限乃至画地为牢的后果?这同时牵涉到人们对神经网络学习过程的理解和对围棋本身的理解。一方面,神经网络本身是否包容一定程度的「think out of the box」的能力,这固然取决于具体的神经网络算法,但也确实是人们对神经网络方法的一个本质困惑。另一方面,因为 AlphaGo […]