UC Berkeley 机器人与工程实验室讲座教授王强:Deep Learning 及 AlphaGo Zero(下)
雷锋网 AI科技评论按,北京时间10月19日凌晨,DeepMind在Nature上发布论文《Mastering the game of Go without human knowledge》(不使用人类知识掌握围棋),在这篇论文中,DeepMind展示了他们更强大的新版本围棋程序“AlphaGo Zero”,掀起了人们对AI的大讨论。而在10月28日,Geoffrey Hinton发表最新的胶囊论文,彻底推翻了他三十年来所坚持的算法,又一次掀起学界大讨论。
究竟什么是人工智能?深度学习的发展历程如何?日前,雷锋网 AI科技评论邀请到UC Berkeley机器人与工程实验室讲座教授王强博士,他为大家深入浅出讲解了何为人工智能,深度学习的发展历程,如何从机器感知向机器认知演进,并解析了AlphaGo与AlphaGo Zero的原理、学习过程、区别等。
嘉宾简介:王强博士,本科毕业于西安交通大学计算机科学与技术专业,后获得卡内基梅隆大学软件工程专业硕士学位、机器人博士学位。美国货币监理署(OCC)审计专家库成员、IBM商业价值研究院院士及纽约Thomas J. Watson研究院主任研究员。IEEE高级会员,并担任了2008、2009、2013及未来2018年CVPR的论文评委,同时是PAMI和TIP两个全球顶级期刊的编委。王强博士在国际顶级期刊发表了90多篇论文,并多次在ICCV,CVPR等大会做论文分享。其主要研究领域图像理解、机器学习、智能交易、金融反欺诈及风险预测等。
以下为他的分享内容, 本文为下篇,主要内容是对AlphaGo和AlphaGo Zero详细的解释说明。 上篇请参见: UC Berkeley 机器人与工程实验室讲座教授王强:Deep Learning 及 AlphaGo Zero(上) | 分享总结
今年9月19号,DeepMind在Nature上发表了一篇论文,这篇论文是在人工智能、深度学习上具有颠覆性的文章。
大家知道,原来有AlphaGo,现在又出了AlphaGo Zero,那么AlphaGo和AlphaGo Zero之间到底有什么样的区别。
我先说AlphaGo,AlphaGo其实是由两个网络组成的,第一个是人类的经验,第二个是双手互搏、自学习。第一部分是监督策略网络,第二部分是强化策略网络,还有一个价值网络,再加上rollout网络,即快速走棋的网络,这四个网络再加上MCTS,就组成AlphaGo。
在AlphaGo里面输入了将近48种规则,但在AlphaGo Zero中,它的神经网络里面的输入只有黑子和白子,而且输入进的是一个网络,不是两套网络。这里所说的两套网络就是指价值网络和策略网络。AlphaGo和AlphaGo Zero的共同点是都用了MCTS。
在这里会想到一个问题,为什么AlphaGo和AlphaGo Zero都会用到DCNN神经网络。
第一,大家都知道解决围棋问题是比较有意思的,围棋是19个格,19×19,361个落子的可能性,这时候落子可能存在的向量空间就是361乘以N, 这个向量的状态空间几乎是无穷无尽的 ,大概计算量是10的171次方,用100万个GPU去运算100年也是算不完的。
第二, 在这里MCTS的搜索方法是无效的 。MCTS的搜索方式在这里我通俗地讲解下,随机拿一个苹果,和下一个苹果进行对比,发觉到哪个苹果比较大,我就会把小苹果扔掉,然后再拿这个大的和随机拿的下一个苹果去对比。对比到最后,我一定会挑出一个最大的苹果。
第三是我们希望 走棋的时候的探索空间必须要缩小 ,要看这个子落下之后另一个子有几种可能性,不要说别人下了一个子之后还有360个空间,那这360个空间里头都有可能性。DeepMind比较厉害的地方是做了一个随机过程,而不是说在三百多个里选哪个是最好的,这个用计算机是算不出来的。
第四个问题,它 必须要做一种类似于人类下棋的方法 。那么刚才有朋友问到什么是端到端,端到端在AlphaGo里边表现得非常明确。我把数据扔给神经网络,然后神经网络马上给出我一个状态,这个状态有两个,包括目前状态和目前状态的价值,这非常有效,表示棋子落在哪里,以及赢的概率到底有多大。
在这里我先给大家讲一下AlphaGo的原理。一般的棋盘比如围棋、象棋等,我们第一步先做一件事,把棋盘的状态向量标记成s,围棋的棋盘是19*19,它一共有361个交叉点,每个交叉点有三个状态,1表示黑子,-1表示白子,0表示没有子,考虑到每个位置还可能有落子的时间等信息,我们可以用361乘以N维的向量表示棋盘的状态。
我们把棋盘的状态向量变成s,从0开始,s0表示的棋盘里的所有状态,没有任何子,s1落的是第一个子,s2是第二个子,第二步加入落子的状态a,在当前的状态s下,我们暂时不考虑无法落子的情况。下第一个子的时候,可供下一步落子的空间是361个,我们把下一步落子的行动也用361维的向量表示,变成a。第三步我们来设计一个围棋的人工智能程序,给定s状态,然后寻找最好的策略a,让程序按照这个策略去走。有四个条件,先是棋盘的状态s,寻找下棋最好的策略a,然后让程序按照这个策略a走棋,获得棋盘上最大的地盘,这是围棋人工智能程序的基本原理和思路。
DeepMind以及我们之前在沃森那边做的,主要流程如下:
第一步先找一个训练样本,然后在观察棋局的时候,发现在每一个状态s里都会有落子a,那么这时候就会有一个天然的训练样本。
第二步,我们做一个网络,拿了一个3000万的样本,我们把s看成一个19×19的二维图像,然后乘以N,N指的是48种围棋的各种下赢的特征,落子向量a不断训练网络,这样就得到了一个模拟人下围棋的神经网络。
第三步我们设计一个策略函数和一个概率分布,我们拿到一个模拟人类棋手的策略函数跟某个棋局的状态s,可计算出人类选手可能在棋盘落子的概率分布,每一步选择概率最高的落子,对方对子后重新再算一遍,多次进行迭代,那就是一个和人类相似的围棋程序,这是最开始的设计思维和方式,策略函数和概率分布。
其实DeepMind还不是很满意,他们设计好这个神经网络之后,可以和六段左右过招,互有胜负,但还是下不过之前从沃森中做出来的一个电脑程序。这时候,DeepMind把他们的函数与从沃森中衍生出来的程序的函数算法结合在一块,对原来的算法重新做了一个完整详细的修正。
DeepMind最初对围棋一概不知,先假设所有落子的分值,这个大家一定要记住,在做任何科学研究的时候,当你发现你一无所知的时候,一定先要设定一个值,这个值千万不能是零。然后第二部分就简单了,就像扔骰子一样,从361种方法里随机选一个走法,落第一个子a0,那么棋盘状态就由s0变为s1,对方再走一步,这时候棋盘状态就变成s2,这两个人一直走到状态sN,N也许是360,也许是361,最后一定能分出胜负,计算机赢的时候把R值记为1。
从s0、a0开始再模拟一次,接下来如PPT中卷积所示,做激活函数。在下到10万盘次之后,这时候AlphaGo得到了非常完整的落子方案,比如说第一个子落在哪里赢的可能性比较大。
MCTS在这里起的作用是什么呢?MCTS能保证计算机可以连续思考对策,在比较的过程中发现最好的落子方式。在这之后,DeepMind发现用MCTS还不是非常好,他们就开始设计了一个比较有意思的东西,就是评价函数,我在这里就不太多讲评价函数。
AlphaGo的监督学习过程其实由两个网络组成,一个是从其他人中获得的学习经验,先是做了一个softmax,即快速落子,它的神经网络比较窄,第二部分是深度监督式神经网络。
到了做强化学习的时候,它会把原来通过机器学习过来的监督神经网络copy到强化神经网络里,然后进行初始化,让强化神经网络作为对手和另一个强化神经网络进行互相学习,来选择一个最优的结果。具体细节如PPT所示,500次做一次迭代,在这里会用到一些梯度下降的方式。
前面是我们看到的AlphaGo,接下来看AlphaGo Zero,它对原来的过程做了完整的简化,集成了价值网络和策略网络,放到一个架构里头,即 将MCTS和两个神经网络放在一块。这两个神经网络其实用了一个比较有意思的神经网络,叫Resnet ,Resnet的深度大家也知道,曾经做到过151层,我在这里就不讲得特别详细了。如PPT所示,它的参数是θ,深度神经网络的输入是s,输出落子概率(p, v)。
在这里我给大家大概说说AlphaGo Zero自我对弈训练的流程。
第一步是程序自己和自己下棋,标记为s1, ..., sT。在每个位置st,一个MCTS αθ被执行。每个走子选择的依据是通过MCTS(选择最好的θ参数)、at ∼ πt计算的搜索概率。最终的位置sT根据游戏规则计算对局的最终胜者z。
第二步是AlphaGo Zero中神经网络的训练。该神经网络将棋盘位置st作为输入,与参数θ一起将它传送到许多的卷积层,并同时输出表示每一走子的概率分布的向量pt和一个表示当前玩家在位置st上的赢率的标量值vt。同时MCTS 使用神经网络 fθ 指导其模拟。
搜索树中的每条边 (s, a) 都存储了一个概率先验 P(s, a)(概率先验是在CNN里非常关键的问题)、一个访问数 N(s, a)以及动作值 Q(s, a)。每次模拟都从根节点状态开始,不断迭代,选择能将置信区间 Q(s, a)+ U(s, a) 的上层最大化的落子结果,直到走到叶节点s′。 然后,网络会扩充这个叶节点,并且再进行一次评估,生成概率先验和评估值。在模拟中,遍历每条边(s, a) 后,会更新访问量N(s, a),然后将动作值更新,取得所有模拟的平均值。
此外还要做时间步长的计算,还有L2 权重正则化水平参数(防止过拟合)的覆盖,包括用损失函数的梯度下降来进行调节。
在这里还有一件非常好玩的事情,他们用了张量处理单元(TPU),同时还做了一系列的说明,在训练网络时完全用了分布式的训练方式,用了176个GPU,48个TPU,其实AlphaGo Zero比较厉害的地方的是只用了四个TPU去做。DeepMind还比较了AlphaGo Zero的神经网络架构和AlphaGo的神经网络架构的性能,在性能上我就不多说了。
AlphaGo Zero比较厉害的地方在哪里呢? 一是它发现了五个人类的定式(常见的角落的序列),二是自我对弈中爱用的5个定式,三是在不同训练阶段进行的3次自我对弈的前80步棋,每次搜索使用1,600 次模拟(约0.4s)。
最开始,系统关注夺子,很像人类初学者,这是非常厉害的,白板+非监督学习方式完全模拟到人类初学者。后面,关注势和地,这是围棋的根本。最后,整场比赛体现出了很好的平衡,涉及多次战斗和一场复杂的战斗,最终以白棋多半子获胜。其实这种方式是在不停的参数优化过程中做出的一系列工作。
接下来大概说说AlphaGo和AlphaGo Zero的一些比较。
第一,神经网络权值完全随机初始化。 不利用任何人类专家的经验或数据,神经网络的权值完全从随机初始化开始,进行随机策略选择,使用强化学习进行自我博弈和提升。
第二,无需先验知识。 不再需要人为手工设计特征,而是仅利用棋盘上的黑白棋子的摆放情况,作为原始输入数据,将其输入到神经网络中,以此得到结果。
第三,神经网络结构的复杂性降低。 原先两个结构独立的策略网络和价值网络合为一体,合并成一个神经网络。在该神经网络中,从输入层到中间层是完全共享的,到最后的输出层部分被分离成了策略函数输出和价值函数输出。
第四,舍弃快速走子网络。 不再使用快速走子网络进行随机模拟,而是完全将神经网络得到的结果替换随机模拟,从而在提升学习速率的同时,增强了神经网络估值的准确性。
第五,神经网络引入Resnet。 神经网络采用基于残差网络结构的模块进行搭建,用了更深的神经网络进行特征表征提取。从而能在更加复杂的棋盘局面中进行学习。
第六,硬件资源需求更少。 AlphaGo Zero只需4块TPU便能完成训练任务。
第七,学习时间更短。 AlphaGo Zero仅用3天的时间便能达到AlphaGo Lee的水平,21天后达到AlphaGo Master的水平。
今天讲这么多,大家在听我讲这个科普类的东西时,可能会需要有一些比较好的基础知识,包括MCTS、CNN、DNN、RNN、Relu、白板学习、Resnet、BP、RBM等,我希望大家对我讲的这些神经网络有一个比较详细的了解。
第一是了解它的基本网络架构,第二是去了解优点和缺点在哪里。第三个是它的应用,是用在语言处理还是图像上,用的时候它有哪些贡献。到了第四步的时候,当你了解这些深度学习的过程之后,你可以考虑在工程上应用这些算法,再建立你的数据模型和算法。到第五步可以开始用MATLAB或Python去做复现,然后最后再去看深度学习算法对自己所做的工作有什么样的回报。
然后特别是做一些微调的工作,这时候你很有可能就能发表论文了。在这种情况下,我给大家提供一个比较好的思维方式,如果大家去用深度学习,怎么能保证从目前简单的AI的应用工作变成复杂的应用工作。其实,这是从机器感知到机器认知的转变过程。
机器感知在这里要做一个总结,机器感知是指从环境中获取目标观测信息,这是第一步。到了机器认知就比较有意思了,是将当前的状态映射到相应操作 ,比如说旁边的车要发动了,可能会撞到你,这时候你戴的手表可能会智能提醒你,看你的动作是否有改变,从而判断提醒是否有效,再进一步提高报警级别。
其实在机器认知的过程中,可能会用到大批量的深度学习和NLP技术、图像理解技术、语音识别技术,多模态图像识别技术,在这些领域去做一些组合的时候,可能对大家的研究比较有意义。
说说我们最近做的一些工作,这是一个MSR系统,我们在用DCNN的方法做优化,用image captioning来做这个系统的时候会面临一些问题。在这里用Multi-Scale Retinex技术会存在一些问题,比如边缘锐化不足,阴影边界突兀比较大, 部分颜色发生扭曲等。我们试过了很多方法,也做了很多参数的优化处理,发现效果都不是很好,Hinton出了capsule之后,我们立马开始去对物体坐标性的点进行描述处理,而不用BP的反向处理方式,现在我们正在做一些算法的猜想证明。
最后的结果如下:我们在训练图片的时候,它越来越能够认识到人在做什么事。图中是人和机器所看到的,机器会认为这个人在准备食物,但其实人会认为她在做更实际的东西,会把所有的图片都认出来,我们现在已经做到跟人的匹配率达到97.8%,也是通过反复Resnet学习去做出来的。
下面是在COCO上的结果。
今天公开课就结束了,我希望大家去看下AlphaGo Zero最新的论文,然后去看看Hinton的胶囊计划,如果大家在这里有什么想法可以和我来探讨。还有一个论坛大家可以进来去看一下,地址是mooc.ai,大家可以看这里边有什么需要去讨论的东西。
视频:
雷锋网 AI科技评论编辑整理。
。