邓仰东专栏|机器学习的那些事儿(四):基于GPU的机器学习实例之AlphaGO

来源:互联网 发布:淘宝商城家具沙发 编辑:程序博客网 时间:2024/05/21 10:28

目录

1.绪论

1.1.概述

1.2 机器学习简史

1.3 机器学习改变世界:基于GPU的机器学习实例

     1.3.1 基于深度神经网络的视觉识别

     1.3.2 AlphaGO

     1.3.3 IBM Waston

1.4 机器学习方法分类和本书组织


1.3.2 AlphaGO

在过去的几年中,谷歌DeepMind团队以一系列重量级工作引起了世人关注。在收购DeepMind之前,谷歌本来已经在深度卷积神经网络上形成了深厚积累。DeepMind创造性地把深度卷积网络移植到增强式学习(Reinforcement Learning)框架,用深度学习改造增强式学习方法,从而以天才的一笔而创造了新的奇迹。


DeepMind的第一项重要工作是让人工智能学会在雅达利2600(Atari 2600)游戏机上打游戏。雅达利2600游戏机是雅达利公司1977年推出的掌上游戏机,提供了打砖块、小蜜蜂、吃豆子、大金刚等多款经典游戏,是第二代电子游戏的代表主机,相信很多资深游戏玩家还有深刻印象。雅达利2600的屏幕分辨率为210×160像素,每个像素支持128种颜色值。游戏控制包括一个操纵杆(上、下、左、右、上左、上右、下左、下右8个方向的运动)和一个游戏杆按钮(该按钮可以单独使用,也可以结合操纵杆使用)。图1-13是三个典型雅达利2600游戏的屏幕。



图1-13雅达利2600游戏(从左至右为大金刚(Dongkey Kong)、太空入侵者(Space Invaders)和陷阱(Pitfall))


在DeepMind工作之前,深度卷积神经网已经表现出惊人的威力。然而,一般来说,传统卷积神经网能够建立从此时的输入到此时输出的关系,即关注“当下”的判断;但是,在雅达利2600游戏中打到高分,需要找到一个连续操作序列,其中每一步操作对整体游戏的效果一般需要在游戏结束时才能获悉,也就是说需要建立现在的一步操作和一整局游戏分数的关系。有基础的读者已经可以看到,解决雅达利2600游戏的标准机器学习方法是增强式学习(RinforcementLearning,也常常叫做强化学习),例如Q-Learning算法。Q-Learning算法的思想是让机器自动尝试选择某个动作从一个状态跳转到下一个状态,直至目标状态(例如游戏结束或积累一定时间),然后判断每一次动作对总体目标的影响(即回报)。增强式学习的需要缺点是在稳定性较差,特别在动作和整体目标的回报关系具有非线性时容易造成不收敛的问题。


DeepMind工作的核心创意是改造深度卷积神经网,使之能够进行强化学习。图1-14是该工作使用的卷积神经网的示意图。与1.3.1中图1-9比较,可以看出这里的神经网并没有本质的变化,仍然遵循卷积层+全连接层的基本样式。我们的目标是把游戏状态序列(可以理解为游戏场面的若干连续变化)和应该采取的控制操作联系起来。这里状态指游戏整体态势,包括游戏场景、计算机操作物体的分布和动作输出、以及由玩家操作的物体状态。经过训练过程形成的深度神经网能够根据当前的状态序列(即当前状态和之前的若干状态)输出应该采取的下一步游戏操作,其中的操作是玩家控制物体的一次动作。由于卷积神经网是为处理图像而设计的,因此需要对游戏建立适当的模型,从而使得卷积神经网能够处理。



图1-14. DeepMind在雅达利2600游戏问题上使用的卷积神经网示意图(根据[6]改画)


DeepMind的办法是以游戏输出图像序列作为神经网的输入。为了降低复杂度,采用84×84的降分辨率图像,每4帧为一个序列。这些序列被三个卷积层依次处理,分别提取相应特征。一般说来,增强式学习的结果应该是一个Q函数,描述操作和整体回报的映射。在图1-14的卷积神经网中,DeepMind没有采用单一的Q函数值作为输出,而是输出每个操作对应的Q函数值,从而能够通过一次前向传播就找到输出结果。


训练过程被组织为若干次游戏过程。每一次过程由一系列离散时间步骤组成。在每一个实际步骤上,训练算法针对当前场景随机选取游戏操作或者从存储下来的已有操作序列中选择一个操作,观察操作执行后游戏局势的演化结果,对此次选取的操作进行评价,并根据评价结果对神经网参数进行梯度优化。图1-15是训练过程中得分变化的例子。在打砖块游戏中,刚开始时不同操作没有本质区别,但是一旦砖块打破最上一层砖块并在上面多次反弹,则得分会显著增加,因此深度神经网络就会倾向于产生能够达到上层砖块的操作。DeepMind使用单一的神经网对49个雅达利2600游戏进行训练,在不需要任何游戏知识的情况下,在一半以上的游戏上超过了人类玩家(游戏高手)。



图1-15. 有效操作价值评估(根据[6]改画)


DeepMind再接再厉,下一个目标:冲击围棋游戏!围棋的复杂度在于两个方面。首先,弈子可能性多得惊人。一般说来,类似象棋和围棋的对弈游戏可以有bd种对弈序列(即双方交替走子直至游戏结束的完整序列),其中b为游戏的搜索广度,即每一步有多少种可能性,对围棋来说,这个可能性的平均值为250[Human][1],d为游戏深度,即游戏结束前走过的步数,通过棋谱统计,这个数字大约是150,因此总复杂度是惊人的250150。作为比较,国际象棋的搜索广度为35,深度为80。第二,总体局势难以判断。围棋棋子之间不能直接比较威力(例如国际象棋中王后显然比小兵厉害得多),而输赢要依靠全部棋子控制的区域大小决定。因此,围棋高手们需要依赖过人的天分和多年的训练才能形成判断局势的准确直觉,并且建立一手棋和最终结果之间的关系。从这个意义上讲,学棋的确是个复杂的神经网络训练问题,只不过人依靠的是脉冲神经网以及各种基于电化学反应的学习过程。


在成为围棋大师的漫漫征途上,棋手需要解决几个问题:首先,如果只考虑当前盘面,最好的应对招数是什么?其次,谁都知道与高手对弈可以快速提高自身棋力,那么怎样获得高质量的陪练对手?第三,在可能的下法中,哪一步最可能带来胜利?AlphaGo提出了一套精妙的解决方案,整合了深度学习、增强式学习和基于价值网络的蒙特卡洛搜索树(Monte Carlo Search Tree)三大关键技术,通过离线学习+在线对弈的方式来解决以上问题。



图1-16. AlphaGo训练过程示意图(根据[7]改画)


图1-16是AlphaGo团队在《自然》杂志发表的论文[7]中提出的AlphaGo训练过程示意图。首先,AlphaGo使用专业棋手的棋谱作为输入,训练由深度神经网构造的策略网络,该网络以当前盘面作为输入,输出下一步落在所有棋盘交叉点上的概率。表征棋盘局面看似复杂,实际上可以很简单地实现:AlphaGo使用棋盘照片作为输入,把盘面问题转化为图形模式识别问题。这一步骤实际上训练两个策略网络,一个速度快、精度低,另一个精度高、速度低。由于以上网络的训练是一个监督式学习的过程,所以这个网络被称为监督式学习策略网络。经过3千万多个盘面的训练后,该策略网络能够以57%的精度根据盘面预测下一手落子。当然,优化的当前落子和最终的胜利是两码事,高手们会走出损失当前利益而优化最终胜利概率的妙手,怎样达到最终的优化,则要依赖增强式学习。第二,AlphaGo训练一个增强式学习策略网络,该网络以随机结果作为起点,与前面训练的策略网络对弈,通过对弈结果不断修改网络结果,该网络以输入序列为输入,同样输出下一步落在所有棋盘交叉点上的概率。第三步的训练需要解决最困难的问题,即根据当前盘面判断最终结果。AlphaGo首先利用监督式学习策略网络产生一个随机步数的棋局,以该局面作为神经网输入,然后使用增强式学习策略网络进行自我对弈,以胜负结果作为标签训练一个价值网络,该网络反应的针对当前盘面情况下一手棋的潜在收益。


经过训练,我们现在有两个监督式学习策略网络和一个价值网络。AlphaGo用蒙特卡洛搜索树实现在线对弈。蒙特卡洛搜索树在本质上就是决策树,也就是说每一手棋都会产生若干可能的分支。为了避免盲目的遍历式搜索,蒙特卡洛搜索树利用有针对性的采样方法减少不必要的搜索空间。AlphaGo针对具体盘面形势,使用快速监督式学习策略网络和价值网络输出的加权和决定应该向哪个方向进行深度搜索(即探索下一步棋的可能结果),最终选择优化的落子决策。


以上的训练和对弈过程计算需求极高。AlphaGo团队设计了精巧的并行计算引擎,单机版使用48个CPU和8个GPU进行计算,而分布式的计算引擎则使用1202个CPU和176个GPU。


AlphaGo的战绩大家都已经熟悉,2015年AlphaGo打败职业围棋选手,2016年3月在五番棋比赛中以4:1击败围棋世界冠军李世乭,从而被韩国棋院授予名誉职业九段,2016年7月AlphaGo在围棋高手中的积分已经名列世界第一。


AlphaGo的成就应该从几个方面来看。首先,AlphaGo并没有从围棋知识本身出发进行训练,也就是说没有直接学习先验领域知识,而是通过图像方式直接判断盘面,就能够取得如此成功,的确是深度机器学习有效性的最强证据。很多评论认为AlphaGo并不会思维,恐怕是对人类思维过于自负了。思维可能也只不过是大脑神经网中大量脉冲的组合和集成,事实上,人类棋手的学习过程也是让自己的脉冲神经网能够形成有效的围棋直觉,恐怕在这个层次上与AlphaGo并没有本质的区别。第二,人类也不必妄自菲薄。我们大脑的计算能力远不如AlphaGo的计算机,能够使用的功耗在20瓦以下,只有一个GPU的十分之一。顶尖棋手毕生看过的盘面,也远远没有达到3000万盘之多。AlphaGo还应该继续向人类学习,特别是基于小样本甚至单样本的训练。比如说,人类棋手从大师的著名对局(例如吴清源1933年对战秀哉名人、推出新布局的第一盘)中可以体会无穷,而单纯的一盘的深度学习引擎的意义极为有限。第三,即使只看围棋,AlphaGo也并非无懈可击。虽然AlphaGo从3000万个盘面学习,然而这与围棋250150的可能性来比实在只是沧海一粟而已。同时,卷积神经网机制决定其更有效于局部模式的提取[2],而蒙特卡洛搜索树的搜索时间严重依赖于搜索空间的大小,因此如果在对弈中尽量走出对多块棋子有影响的招法,则会严重影响AlphaGo决策的准确性。图1-17中标有三角形的白子是李世乭在与AlphaGo第4局对弈中第78步走出的妙手。这一步之前,人们普遍认为局势对AlphaGo有利或者基本相当。第78手对四片白棋都有深刻的潜在影响,AlphaGo的价值网络未能充分判断这一步棋的价值,最终导致失败。因此,AlphaGo的成功,也会促使人类棋手设计新的对局思想,使用更为华丽、更具有大局观的对弈策略,为古老的围棋游戏注入全新的活力。



图1-17. 李世乭在与AlphaGo第4局对弈中走出的妙手




[1]围棋棋盘纵横各有19条线,因此共有19x19个交叉点,第一手的可能性为361种,第二手有360种,第三手359种,以此类推。一般来说不需要下到把棋盘填满,因此一个合理的估计是平均每手250种可能性。

[2]因此,在精细的局部搏杀上,人类很可能从此无法有效抗衡AlphaGo。

1 0
原创粉丝点击