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