智能所体现的思维与认知,没有标准。
围棋,起源于我国尧舜时期,自古以来备受追捧,蕴含着中华文化的丰富内涵。有别于象棋和国际象棋,围棋棋盘之大,玩法千变万化,其落子的可能性更是不可估量,因此一直以来都是棋类AI无法攻克的一道屏障。
随着深度学习的快速发展及计算机硬件技术的突飞猛进,DeepMind团队研发的AlphaGo围棋AI程序于去年一月以5:0优势横扫欧洲围棋专业二段棋手樊麾,之后的三月份则以4:1大胜围棋专业九段、世界排名第四的韩国棋手李世石。
那么,AlphaGo为何如此之强?其背后的算法思想是什么?能横扫当今的人类最强棋手柯洁,是否意味着已经开启强AI时代之门?
其实网上已经有很多介绍AlphaGo背后技术的文章,不过其中大部分文章一上来就把AlphaGo分成策略网络(Policy Network)和价值网络(Value Network)两个部分来讲,个人感觉有点过于抽象和笼统。本着学习交流的态度,想从技术角度为大家剖析一下AlphaGo的内部实现机制,若有理解偏差之处,还请留言相告。
对于围棋数据来说,特征提取就是把每一步下棋状态数值化、结构化。 AlphaGo所用的原始围棋数据取自KGS围棋服务器上6到9段的对局,共16万盘近3000万步走棋。根据不同子模型的需求,AlphaGo从这些原始的棋局中一共提取了两份特征数据。
除了落子情况,当前棋盘本身的状态也可以提取出许多特征,比如当前执黑还是执白、每个落子经过的轮次、落子后预计吞子数目以及落子是否合法等。拿“每个落子经过的轮次”特征举例,一个8位的二进制串足以表示任一方在整盘棋中所下的轮数,因此该特征可以用8个19×19的矩阵表示。下图举例展示了落子情况的特征矩阵形式,其他特征以此类推。
除开图片数据集,AlphaGo还根据围棋的领域知识提取了另一份喂给softmax回归网络的局部特征,用来实现快速走棋,为后面的蒙特卡洛树搜索 (MCTS)做准备。对于这些局部特征,AlphaGo只提供了数目统计,并未给出这些特征的具体提取方法,数目统计如下图所示。
一上来就分为策略网络与价值网络来讲,只会加“厚”AlphaGo的神秘面纱。讲道理,AlphaGo的子模型其实一共有四个:卷积策略网络、增强策略网络、softmax回归网络和卷积价值网络。下面我将逐一讲解这四个网络结构及其训练过程。
卷积策略网络
这里有必要先铺垫几句,自从机器学习的泰山北斗Hinton在06年重新掀起深度学习的热潮以来,伴随着计算机硬件技术的迅猛发展,作为深度学习代表之一的卷积神经网络(Convolutional Neural Network,CNN),在算法界可谓无人不知无人不晓。CNN擅长解决的问题是图像识别和图片分类,在这些问题上有着惊人的效果,因此DeepMind团队选择了CNN来训练AlphaGo的base模型。这个模型的网络结构如下图所示。
可想而知,这个卷积策略网络所形成的围棋AI水平已经很高了,起码它已经学会了大部分人类高手的下法。但是,这对于AlphaGo来说还远远不够。
增强策略网络
如果说卷积策略网络是一个学习他人、超越他人的阶段,那么增强策略网络就是一个自我学习、超越自我的阶段。据说AlphaGo的内部测试结果为,增强策略网络对上卷积策略网络的胜率高达80%!那么其究竟是如何实现自我学习的呢?
这里不得不说一下增强学习了。增强学习又称强化学习,是通过一种不断地自我试错方式,来找到最佳策略并加以激励的机器学习方式。就以下围棋为例,好比两个完全不会下棋的人,一开始都随机落子,直到一方获胜。获胜的一方根据走法来优化自己的落子策略,然后两人再继续不停地下棋、优化、下棋,重复这样的过程,直到满足某一条件。最终,不会下棋的人也能知道哪一步是好棋,哪一步是臭棋。这就是增强学习的一种通俗解释,有点像周伯通的双手互搏术。
据说单凭该网络的下棋水准就已经达到了KGS的3d水平。不过,AlphaGo并没有在最后的系统中使用这个增强策略网络,理由是增强策略网络的走棋风格缺乏变化,对后面的蒙特卡洛树的搜索不利。
softmax回归网络
大家或许会问,上面已经有了一个很强的走棋网络,为什么还需要一个softmax回归网络来走棋呢?我想可能有如下两点原因:
第一,回归网络结构只有一个隐层,相比卷积神经网络的13层结构,其落子的速度实在是快太多了,根本不在一个数量级上,且准确率还不错,而后面要讲的蒙特卡洛树搜索方法对搜索的时间要求很高,卷积网络无法满足要求;
事实证明,用softmax回归网络单独落子,也达到了KGS的3d水平。
卷积价值网络
这是AlphaGo的又一个厉害之处,就是说AlphaGo不仅要有高效的落子方案,还要有这么一个网络来评估当前棋局的获胜概率,来双重保证当前的落子方案是最优方案。
卷积价值网络的算法思想是:每次随机一盘棋局之中的轮次T,棋局的第1轮到T-1轮落子由卷积策略网络生成;然后在第T轮随机落子,第T+1轮一直到该局结束则使用增强策略网络生成落子;最后计算输赢,赢棋为1,输棋为0,反向传播误差调整网络参数。这个卷积价值网络的结构如下图所示。
打造好了上述四件兵器,卷积策略网络、增强策略网络、softmax回归网络和卷积价值网络,AlphaGo披挂上阵。它走进了人类顶级围棋道场与顶级棋手较量,采用的战术策略就是前面提到的蒙特卡洛树搜索 (MCTS),其搜索示意图如下所示。
蒙特卡洛树搜索
MCTS的基本思想是:多次模拟未来棋局,然后选择模拟次数最多的落子方案作为当前走法。具体步骤如下:
首先,用卷积策略网络生成到未来T轮的落子方案;
然后,用卷积价值网络评估该落子方案的胜率,用softmax回归网络基于该落子方案继续快速走棋,直至棋局结束得到输赢结果,综合两个结果算出该T轮落子方案的胜率;
接着,结合该胜率,用卷积策略网络重新生成到未来T轮的落子方案,若出现相同走法,则胜率取平均值;
最后,循环上述过程若干次,选择模拟次数最多的胜率最高的落子方案作为当前走法。
据说最近对战柯洁的AlphaGo Master版本要胜去年的李世石版本三目,与柯洁三局下来也没有出现像去年第四局那样,因昏招而落败的情况。推测原因,一是在MCTS的时候做了优化,结合快速走棋来搜索节点而不是只用卷积策略网络,这样就能避免短期内落入局部思维而完全忽略人类的“神来之笔”;二是数据集已经完全弃用人类棋局,而是用从AlphaGo自我对弈中挑选出的样本来构成,因此策略网络也会更加强大。
文末,想表达一下我对下面这个问题的观点。
先后胜樊麾、李世石与柯洁,是否意味着AlphaGo已具备自主意识,走向强AI时代?
对于这个问题,我想用两点来回答一下。
其一,一个能识别出美女图片的图像识别系统,是否就是好色呢?
其二,Facebook黑暗森林的负责人田渊栋老师说,AlphaGo在去年三月和李世石对局的时候要求用中国规则,因为如果换成别的规则,预测目标发生改变,AlphaGo就需要重新训练价值网络了。
这一次真心写得有点长了,感谢各位的耐心阅读!后续文章于每周日奉上,欢迎大家关注小斗公众号 对半独白!