描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302492702
本书理论与实践结合,带领你动手学习和了解*热门的人工智能技术。通过深度学习TensorFlow工具的实践,处理真实世界的人机交互问题。
本书带你快速入门人工智能技术,通过实例说明让硬件如何“智能化”。
本书的主要特点是实践操作,用实用可运行的案例来上手。本书可作为实践入门指导书,适用于对机器智能有兴趣的高年级本科生,也适合于对机器智能有兴趣的人员参考。
目录
第1章机器智能的发展1
1.1机器智能1
1.1.1机器智能的定义1
1.1.2机器智能的分类1
1.2深度学习2
1.2.1机器智能的神经网络方法2
1.2.2人工神经元与人工神经网络3
1.2.3神经网络的复兴4
1.3机器学习5
1.3.1机器学习的基本原理5
1.3.2机器学习泛化能力6
1.3.3大数据是深度学习的基础6
参考文献7
第2章深度学习8
2.1深度学习的原理8
2.1.1人工神经元8
2.1.2多层人工神经网络10
2.1.3神经网络训练11
2.2典型的神经网络架构15
2.2.1卷积神经网络15
2.2.2循环神经网络17
2.2.3长短时记忆循环网络18
2.2.4门控循环单元循环网络19
2.3机器感知21
2.3.1语音识别21
2.3.2计算机视觉25
2.4深度学习实践26
2.4.1建模工具26
2.4.2软硬件工具26
2.5小结28
参考文献28
第3章强
化 学 习30
3.1强化学习基础30
3.1.1强化学习概述30
3.1.2深度强化学习32
3.1.3强化学习框架35
3.2计算机围棋36
3.2.1围棋游戏36
3.2.2蒙特卡洛树搜索37
3.2.3基于卷积网络的围棋程序43
3.3阿尔法围棋的原理43
3.3.1阿尔法围棋团队44
3.3.2深度卷积网络44
3.3.3结合策略网络和价值网络的蒙特卡洛树搜索46
3.3.4阿尔法围棋技术总结48
3.4小结49
参考文献49
第4章TensorFlow简介51
4.1TensorFlow 51
4.2TensorFlow使用53
4.2.1TensorFlow起步53
4.2.2Tensor Flow 数据的结构53
4.2.3TensorFlow的工作流程54
4.3Tensor运算54
4.4导入实验数据55
4.4.1NumpyArray方法56
4.4.2TensorFlow组件方法57
4.4.3TensorFlow示例58
4.5TensorBoard示例59
4.6小结61
参考文献61
第5章Keras简介62
5.1Keras62
5.2Keras组织结构63
5.2.1Models63
5.2.2Core Layers63
5.2.3Layers63
5.2.4Activations63
5.2.5Optimizers64
5.3Keras实践64
5.3.1Keras安装64
5.3.2Keras使用65
5.4小结66
参考文献66
第6章声控智能1——预处理与训练67
6.1声控智能67
6.1.1语音指令67
6.1.2语音时频谱图68
6.1.3语音文件录音68
6.2实验过程69
6.2.1语音数据预处理69
6.2.2语音识别网络70
6.2.3TensorFlow/Keras的使用73
6.3小结76
参考文献77
第7章声控智能2——部署78
7.1网站端——在线推断78
7.1.1云知音网站功能78
7.1.2Flask 网站搭建79
7.1.3Flask Keras实现80
7.2移动端——离线推断81
7.2.1移动端的网络模型文件81
7.2.2安卓平台的TensorFlow库生成85
7.2.3安卓应用的TensorFlow库调用88
7.2.4安卓应用的录音功能调用89
7.2.5快速集成开发91
7.3小结93
参考文献94
第8章PYNQ语音识别95
8.1PYNQ95
8.1.1PYNQ简介95
8.1.2PYNQZ1开发板95
8.1.3Jupyter Notebook 97
8.2实验设计97
8.2.1PYNQ设置97
8.2.2服务器端设置99
8.3实验过程101
8.3.1AudioInput101
8.3.2传送云端105
参考文献106
第9章TX1视觉对象检测107
9.1英伟达Jetson TX1107
9.2YOLO算法107
9.2.1YOLO算法107
9.2.2YOLOv2算法110
9.2.3YOLO的TX1实践112
9.3SSD算法113
9.3.1SSD算法介绍113
9.3.2SSD的TX1实践113
参考文献115
后记116
附录APython和TensorFlow操作基础117A.1Python实践基础117
A.2TensorFlow实践基础120
信息技术日新月异,机器智能更是一个快速发展的领域,其所引发的社会变化和带来的社会影响也是巨大的。围绕这一领域的热点技术,如深度学习和强化学习,涉及一些基础数学知识,包括微积分、线性代数和优化理论等。机器智能作为计算机科学的一个应用,虽然涉及计算机体系结构、分布式系统、软硬件协同设计、算法与数据管理等诸多计算机理论知识,但其核心内容还是算法与数据。AlphaGo战胜人类围棋大师,其实就是人类所创造的智能工具能力的胜利,是科学理性的胜利。AlphaGo的成功,证明了基于深度强化学习和蒙特卡洛树搜索方法的机器智能,在很多规则清晰的场景下完全可以比人类做得更好。机器智能的领域不断扩大,遇到的问题也越来越多,需要人们不断创新,不断深入探究。近些年来的教学实践表明,对于一个新的知识领域,在具备一定的基础知识后,本科生完全有能力投入这一领域前沿技术的研究工作中。本书的目的就是要通过系统整理机器智能领域知识点,帮助本科同学迅速了解全貌,从而快速深入技术细节,为进一步的科研工作打下基础。大凡与机器智能相关的技术,都需要训练有素的头脑,快速分析问题与解决问题的能力。所以,本科同学要想进入这个领域,除了解、掌握本书中的知识和实践操作外,还需要不断地训练自己思考问题和解决问题的能力。本书的编写离不开清华大学iCenter智能系统实验室教师团队的协助,他们是马晓东、章屹松、王蓓和高英。本书在本科生课程“大数据智能”与“智能硬件”的实践教学中,根据反馈意见已经做了多次修订。实验室学生郑文勋、王亦凡、常嘉辉、吴垠鋆、冯杰、宋丹丹、钱鹏等多次担任课程或单元的助教,为本书的完善做出很大贡献。实验室SRT学生的多次学术活动,也为本书提供了有益的参考资料。同时,我们也得到微软公司ETG团队的大力支持,他们是杨滔、章艳、刘士君、闫伟。微软公司除了提供云计算与机器学习服务支持外,还连续三届为清华iCenter——人工智能挑战赛提供了支持,极大方便了我们的课程教学和实验工作。后,感谢所有参与我们课程及挑战单元的同学们。他们朝气蓬勃,锐意进取,对未知领域充满好奇并进行着不知疲倦的探索。我们坚信,他们是学术和产业的希望及未来。书中代码可从清华大学出版社网站www.tup.com.cn下载。
作 者2018年1月
第3章第3章强 化 学 习强化学习是机器学习中的一个领域,强化学习强调如何基于环境而行动,以取得化的预期利益。它是一种通用的学习与规划(Learning and Planning)的方法框架。3.1强化学习基础〖4/5〗3.1.1强化学习概述〖2〗1. 强化学习的原理强化学习(Reinforcement Learning)是一种通用的决策框架(DecisionMaking Framework)。在强化学习中,智能体(Agent)具有采取动作(Action)的能力(Capacity),每次动作都会影响智能体的未来状态(State),返回一个标量的奖赏信号(Reward Signal)来量化表示成功与否(Success)。强化学习算法的目标(Goal)就是如何采取动作(Action)化未来的奖赏(Future Reward)。强化学习示意图如图31所示。图31强化学习示意图简单地说,强化学习是使用反馈来更新行动,以获得化收益的算法。而深度学习是表示学习的通用框架。给定目标,学习到需要达到目标的表示。深度学习使用小的领域知识,特征表示直接从原始输入中自动学习获得。2. 强化学习的观测在每个时间步t,智能体的行为如下。(1) 执行动作at。(2) 获得一个环境的观测ot。(3) 获得一个标量的奖赏rt。外界环境的行为如下。(1) 接收到智能体的动作at。(2) 发出一个观测ot 1给智能体。(3) 发出一个奖赏rt 1。这里经验(Experience)就是一组观测、动作、奖赏的序列。o1,r1,a1,…,at-1,ot,rt状态st可以认为是经验的函数,即st=f(o1,r1,a1,…,at-1,ot,rt)在一个完全可观测的环境,以上公式简化为st=f(ot3. 强化学习的要素从强化学习智能体的角度看,强化学习包含一组要素组件。(1) 策略(Policy)是指智能体的行为函数。(2) 价值(Value)函数是指每个状态与动作的成效。(3) 模型(Model)是指智能体对环境的建模表示。按照要素的区分,强化学习的方法包括基于价值的强化学习(Valuebased RL)、基于策略的强化学习(Policybased RL)和基于模型的强化学习(Modelbased RL)。基于价值的强化学习在于在任何策略下,估计的价值函数。基于策略的强化学习在于寻找策略π。策略是智能体的行为,将状态映射为动作,例如,有如下确定性策略和随机策略。(1) 确定性策略(Deterministic Policy) : a =π(s)。(2) 随机策略(Stochastic Policy): π(a|s) = P[a|s]。3.1.2深度强化学习深度强化学习(Deep Reinforcement Learning, Deep RL)就是把强化学习RL和深度学习DL结合起来。用强化学习定义目标,用深度学习给出相应的机制,如Q学习等技术,以实现通用人工智能。深度强化学习的核心原理是使用深度神经网络来近似表示强化学习中的价值函数、策略和模型。深度强化学习又分为基于价值的深度强化学习(Valuebased Deep RL)、基于策略的深度强化学习(Policybased Deep RL)和基于模型的深度强化学习(Modelbased Deep RL)。 1. 基于价值的深度强化学习1) 深度Q网络价值函数(Value Function)就是预测未来的奖励。Q值函数可以给出长期的期望收益,在策略π的情况下,一般使用折扣因子。Qπ(s,a) = E[rt 1 γrt 2 γ2rt 3 … |s,a]模型是从经验中学习的,可以作为环境的一个代理。可以使用预先查找算法来模拟。价值函数可以用使用权重为w的Q网络(Qnetwork)来表示,如图32所示,即,Q(s, a,w) =Q(s, a)图32价值函数用权重为w的Q网络来表示2) Q学习Q学习(Qlearning)就是优化Q值应遵循Bellman方程,写成如下Bellman方程形式:Qs,a=ES′[r γmaxa′Qs′,a′|s,a]Q学习把公式中的右侧视为一个整体,人们可以使用深度神经网络去近似Q值函数,采用梯度下降法小化损失函数的均方误差的学习过程。损失函数形式表示如下: l=r γmaxaQs′,a′,w-Qs,a,w2通过这样训练生成的深度神经网络,又称为深度Q网络(Deep QNetwork)。3) 经验回放Q收敛可以使用表查询表示方法,但是使用深度神经网络的方法会出现分歧问题(diverge)。这是样本之间的相关性和目标的非平稳性造成的。为了解决这个问题,消除学习样本的相关性,采用经验回放(Experience Replay)的方法,如图33所示。图33经验回放从数据集中采样经验,并在损失函数中更新。为了解决非平稳性问题,目标的参数w-是固定的。l=r γmaxaQs′,a′,w–Qs,a,w22. 基于策略的深度强化学习1) 深度策略网络(Deep Policy Network)通过深度神经网络(权重参数u)表示策略: a =π(a|s, u)或a =π(s|u)定义目标函数是整体折扣后的回报,一般使用折扣因子γ。L(u) = E[r1 γr2 γ2r3 … |π(s, u)]通过随机梯度下降法来优化目标函数,例如修正权重u来获得更多的回报。一个随机策略π(a|s, u)的梯度为l(u)u=Elnπ(a|s,u)uQπ(s,a)如果a是连续可微分的,一个确定性策略a =π(s|u)的梯度可以进一步简化为l(u)u=EQπ(s,a)aau注: 全书中出现的对数没有底数,是因为所参考的资料中不限制log的底数,默认是自然对数底。2) ActorCritic算法过去的时间里,人们提出了单表演者(Actoronly)、单评论家(Criticonly)、表演者评论家(ActorCritic)等强化学习方法。其中,表演者(Actor)就是策略(Policy) 函数的同义词,评论家(Critic)就是价值(Value) 函数的同义词。Actoronly方法一般采用一组参数化的策略来工作,这样可以直接使用优化过程。这种参数化策略的优点是连续动作的范围可以生成,但是优化方法(如策略梯度方法)会在梯度估计时出现方差高的问题,这又将导致学习比较慢的问题。Criticonly 方法使用时间差分学习,具有期望回报估计方差低的优点。从Criticonly方法直接导出策略的方法是选择贪婪动作。选择那些价值函数指示是平均回报的动作。然而,这需要诉诸于优化的流程,在进入每个状态时,找到价值的动作。当动作空间是连续时,这是一个计算密集的任务。所以,Criticonly方法一般会离散化连续动作空间,此后,在动作空间的优化就变成一个枚举过程。ActorCritic方法组合Actoronly和Criticonly方法的优点。尽管参数化的Actor可以计算连续动作,无须在价值函数上优化,而Critic的优点是为Actor提供关于行为效果的低方差的知识。更具体地说,Critic对平均回报的估计允许Actor用来更新梯度,使其具有的方差较小,这就加速了学习过程。ActorCritic方法相比于Criticonly方法,具有更好的收敛属性。所以, ActorCritic方法的良好属性,使其成为在实际应用中的增强学习算法。ActorCritic算法的估计价值函数为Q(s,a,w)≈Qπ(s, a)。通过随机梯度下降法更新权重。lu=Elnπa|s,uuQ(s,a,w)如果a是连续可微分的,采用确定性策略a =π(s|u)的梯度可以进一步简化为lu=EQ(s,a,w)aau3. 基于模型的深度强化学习基于模型的深度强化学习(Modelbased Deep RL)试图对外界环境建模,创建预测模型(Predictive Model),从而预测反馈的奖赏和观察。对于一些计算机游戏,如Atari,可以通过卷积神经网络和循环神经网络对输入的人类选手数据进行训练,建立预测模型。但是对于计算机围棋等应用,因为一般无法直接建立模型,所以多采用模型无关的深度强化学习(Modelfree Deep RL)方法。4. 深度强化学习的应用深度强化学习的应用广泛,包括计算机游戏、计算机围棋、计算机扑克、机器人运动控制。基于价值的强化学习,来训练神经网络DQN,可学会玩各类游戏,如Atari等。2015年11月,谷歌的DeepMind计算机围棋AlphaGo,首次战胜人类专业棋手。2017年8月,OpenAI的计算机游戏智能体在Data2游戏中,首次击败了人类好选手。3.1.3强化学习框架2016年11月,Google DeepMind公司开源了Lab软件,Lab源代码托管在Github上,见https://github.com/deepmind/lab。2016年12月,OpenAI组织也开源了OpenAI Universe软件,Universe源代码托管在Github上,见https://github.com/openai/universe。3.2计算机围棋〖4/5〗3.2.1围棋游戏〖2〗1. 围棋规则围棋是一项历史悠久的棋类项目。围棋棋盘是19×19的网格,纵横各19路直线,形成361个交叉点。围棋棋子分为黑白两种,白子180颗,黑子181颗,共361颗棋子。围棋规则比较简单,主要有以下7条规则。(1) 博弈黑白双方,依次落子。落子在纵横网格的交叉点上。(2) 黑方先走,落黑子;白方后走,落白子。(3) 在轮到一方落子时,一方可以选择放弃落子。如果双方都放弃,比赛结束。(4) 下子后不能造成和以前相同的棋局。(5) 一片同色棋子的所有连线相邻的交叉点(纵横线),都被对手占满后,则这一片同色棋子就被对手吃掉而清空。(6) 一方的领土是他的棋子占的位置以及包围的交叉点。(7) 占位多的一方获胜。围棋的水平可分为初学者、业余与职业三类。其中初学者(Beginner)分为30级,业余(Master)分为7段,职业(Professional)分为9段,职业9段是水准。成为职业9段的选手,不仅需要有天赋,还需要付出数十年的时间和精力。职业9段的棋力水准也是计算机围棋需要达到的目标。围棋的段位分级如图34所示。图34围棋的段位分级2. 计算机围棋围棋是一项搜索空间巨大的棋类游戏,被称为人工智能挑战的一项王冠。计算机棋类游戏被认为是AI界的果蝇(Fruit Fly),是人们研究多的AI游戏。这类游戏提供了一个验证新想法,与人类较量水平,以及AI算法之间容易互相比较的实验沙箱。2009年,计算机围棋Fuego次在9×9棋盘上击败9段选手。在接下来的几年里,在有让子的情况下,计算机围棋在19×19的棋盘上也能击败人类职业选手。东京电气大学杯(UEC杯)是比较知名的计算机围棋的比赛。自2007年开始,已经累计办了10届。比较知名的计算机围棋有Fuego、CrazyStone、Zen、Erica、Darkforest等,人们使用这些围棋先后参赛并获得名次。计算机围棋CrazyStone,曾经获得第1届、第2届、第6届和第8届的UEC杯冠军。其作者Remi Coulom曾经是法国里尔第三大学的副教授。计算机围棋Fuego获得第4届UEC杯冠军,其作者Martin Müller是加拿大阿尔伯塔大学的计算机系教授。计算机围棋Erica获得第5届UEC杯亚军,其作者是黄世杰,也是阿尔法围棋的作者之一。计算机围棋Darkforest获得第9届UEC杯亚军,其作者是Facebook公司的田渊栋。计算机围棋Zen曾经获得第5届、第7届和第9届的UEC杯冠军,其作者是日本的围棋程序员Yoji Ojima。2016年,受阿尔法围棋的深度学习算法的启发,其作者将Zen升级为DeepZenGo。2017年,腾讯公司的计算机围棋程序绝艺(Fineart)击败DeepZenGo,获得了第10届UEC杯冠军。关于计算机科学家征服计算机围棋的计划,参见以下文献: Sylvain Gelly, Levente Kocsis, Marc Schoenauer, et al. The Grand Challenge of Computer Go: MonteCarlo Tree Search and Extensions. Communications of the ACM, Vol. 55, no. 3 (2012): 106113.3.2.2蒙特卡洛树搜索自从2006年的蒙特卡洛树搜索(MonteCarlo Tree Search, MCTS)算法出现后,计算机围棋的棋力增长有了突破性的进展。下面介绍一下蒙特卡洛树搜索方法。1. 蒙特卡洛树搜索介绍蒙特卡洛仿真(MonteCarlo Evaluations,MCEs)早由 Abramson在1990年引入,用于解决棋类等游戏。蒙特卡洛树搜索如图35所示。Remi Coulom首先提出在蒙特卡洛树上进行选择(Selectivity)和回溯(Backup)过程。Remi Coulom开发了商业化围棋软件CrazyStone。CrazyStone采用提出的MCTS方法,棋力水平大增,曾经是水平的计算机围棋程序,棋力水平在业余 5~6 段。蒙特卡洛搜索树T包含节点n(s),s代表仿真中的一个状态。每个节点都有一个状态计数值N(s)和动作值Q(s,a),以及每个动作的计数值N(s,a),其中a∈Α。蒙特卡洛树搜索包含两部分,即树策略(Tree Policy)和默认策略(Default Policy)。树策略用来选择动作,每次仿真产生状态{s0,a0,s1,a1,…,sT},其中sT为终结果状态。每次仿真更新每个状态s的计数值N(st)和动作值Qst,at。更新过程如下: Nst←Nst 1Nst,at←Nst,at 1Qst,at←Qst,at z-Q(st,at)N(st,at)简单的贪婪树策略,就是从s0状态出发,选择Q值的值。蒙特卡洛树搜索原理如图35所示。蒙特卡洛树搜索原理的详细步骤如图37~图311 所示。其中图36给出各图中的符号说明。图35蒙特卡洛树搜索图36符号说明图37示例图1图38示例图2图39示例图3图310示例图4图311示例图5图中内容取自于Sylvain Gelly和David Silver的研究论文。作者Sylvain Gelly也是计算机围棋MoGo的设计者,第二作者David Silver是阿尔法围棋架构主设计师。该论文提出的思路在阿尔法围棋的核心算法中都有体现, 只是更加具体化。可参考的论文信息如下: Sylvain Gelly, David Silver. MonteCarlo Tree Search and Rapid Action Value Estimation in Computer Go. Artificial Intelligence 175, no. 11: 18561875, 2011.MCTS方法的效果取决于搜索树的生成。搜索树的每个节点的展开需要一定的策略。如何有效地展开节点,保障生成高质量的节点,又不使得搜索树过度膨胀?这个问题在数学上被称为多臂赌博机问题(MultiArmed Bandit, MAB)。UCT(Upper Confidence bounds applied to Trees)算法把树节点的展开生成过程,看作是一个多臂赌博机问题,从而有效地解决了这个问题。下面首先介绍一下多臂赌博机问题和UCT方法。2. 多臂赌博机多臂赌博机问题: 一个赌徒面前有一系列赌博机(或老虎机),在投入硬币后,每个赌博机返回的回报是不同的。赌徒面临的问题是如何化自己的收益。当赌徒尝试了一系列赌博机后,会获得一些统计上的收益。但是,赌徒并不知道赌博机背后的真实收益分布。在获得已有的收益后,赌徒遇到的策略问题是: 是继续专注于当前获得的收益呢,还是去尝试更多的赌博机?赌徒如果专注于已获得收益的赌博机,至少可以保持一定的收益。如果去尝试更多的先前未测试过的赌博机,有可能出现尝试失败的情况,但也有可能会发现具有更大收益的赌博机。3. UCB方法和UCT方法UCB方法是针对多臂赌博机问题的一种解法。该方法力图在探索(未知的赌博机)和保持(现有的回报)之间找到平衡。UCB方法的全称是Upper Confidence Bounds,即置信上界方法。UCB算法早由Peter Auer等人提出。UCT的全称是Upper Confidence bounds applied to Trees,它是UCB在游戏树(Game Tree)上的一个应用,首先由Kocsis和Szepesvari在ECML论文中提出。UCT算法把蒙特卡洛树节点的展开生成过程,看作是一个多臂赌博机问题。通过将UCB方法移植到蒙特卡洛树上,有效地解决了这个问题。4. UCT方法与EE问题UCT方法的核心思想是解决短期回报与长期回报之间的折中问题,即EE问题。EE问题的全称是(Exploitation or Exploration),或者ExploitExplore问题。其中: (1) 保持(Exploit)是指对比较确定有回报的方向,继续尝试。(2) 探索(Explore)是指对新的方向,不断探索,防止一模一样的确定方向。UCT方法赋予每个动作一个动作值(Action Value),表示如下: Xjt 21ntTj,t其中,前项是该分支目前的收益均值,后面的项称为探索激励(Bonus)。探索激励本质上是均值的标准差形式,其中t是目前的试验次数,Tj,t是这个分支被试验的次数。这个公式表明: 均值越大,标准差越小,被选中的概率会越来越大,起到保持的作用;同时,那些被选次数较少的赌博机,也会得到被试验机会,起到探索的作用。阿尔法围棋使用了PUCT(Predictor UCT)方法。PUCT在UCT方法上进行了微调。其公式推导如以下论文所示: C D Rosin. Multiarmed Bandits with Episode Context. Annals of Mathematics and Artificial Intelligence, March 2011, Volume 61, Issue 3, 203230.5. MCTS UCT算法示例MCTS UCT算法的原理由以下公式所示。Qs,a clnN(s)N(s,a) 其中,对数为自然对数。a=argmaxa(Q(s,a))树策略使用UCT算法,选择下一步动作,目标是化动作的置信上界,即树策略选择动作a,化增强值Q。默认策略使用手工规则、领域专家知识、监督学习训练的模式来选择下一步动作。UCT方法赋予每个动作一个动作值,这时会产生图312(a)。从根节点有两个选择,即左节点和右节点,胜率分别为5/7 和0/2。我们设定的动作值为SCORE(L) =5/7 k.sqrt( ln(10)/7 )SCORE(R) =0/2 k.sqrt( ln(10)/2 )如果简单按照胜率做选择,应该选择左节点L,因为其胜率更高。这时会产生图312(b)。但是,如果考虑探索的奖励项,即公式的右项,则得到总分值更高。这时会产生图312(c)。图312UCT算法解决EE问题图312表明,通过调节k值,会产生不同的分值。这样,可以使算法同时兼顾胜率(保持)和试验(探索)的次数。用UCT方法生成的结果,在实践中证明比贪婪树方法的效果好很多。MoGo是个用UCT方法的计算机围棋程序。 UCT算法把树节点的展开生成过程,看作是一个多臂赌博机问题。MoGo初由S. Gelly和Yizao Wang开发,团队还包括Remi Munos和Oliver Teytaud。MoGo在棋力水准上显著超过了其他9×9棋盘上的竞争对手,开启了计算机围棋的新时代。RLGO是David Silver开发的一个计算机围棋程序,它采用由Markus Enzenberger和Martin Muller的SmartGo库。它通过强化学习来训练价值函数来预测从一个给定的状态获得的终结果,学习过程自然采用游戏的胜负结果作为强化学习的奖赏(Reward)。具体参见S. Gelly 和 David Silver的论文:S Gelly. A Contribution to Reinforcement Learning: Application to Computer Go. PhD thesis, Universite ParisSud, 2008.David Silver. Reinforcement Learning and SimulationBased Search in Computer Go. PhD thesis, University of Alberta, 2009.3.2.3基于卷积网络的围棋程序〖2〗1. NeuroGo在1996年,Markus Enzenberger就提出了使用神经网络来下围棋的想法,并设计了NeuroGo程序。在2012年以后,终在计算机围棋设计中得到广泛应用,其效果显著。2. DeepGoDeepGo是C. Clark等人在ICML 2015上给出的采用卷积网络下围棋的一种具体实现方法。阿尔法围棋团队的C. J. Maddison等人在ICLR 2015上也提出了一种方法。这种方法终被应用在阿尔法围棋中。3. Darkforest Darkforest是Facebook公司的田渊栋博士负责开发的计算机围棋程序,曾获得UEC杯的亚军。Darkforest也是采用卷积网络进行下围棋。Darkforest2在KGS比赛获得2段水平,Darkforest3增加了蒙特卡洛树搜索,在KGS比赛达到5段水平。3.3阿尔法围棋的原理AlphaGo是由Google的子公司DeepMind研发的计算机围棋,又称为阿尔法围棋。阿尔法围棋综合采用蒙特卡洛树搜索、强化学习、卷积网路等技术,次在不让子的情况下,击败了人类的职业选手(樊麾,欧洲围棋冠军,当时为职业2段)。阿尔法围棋的胜利,既是算法的胜利,也是深度学习和强化学习的胜利。下面介绍一下阿尔法围棋的研发和工作原理。3.3.1阿尔法围棋团队阿尔法围棋是DeepMind的作品。DeepMind创立于2011年,2014年被Google公司收购。David Silver是阿尔法围棋的首席架构师。David Silver也是UCL(University College London)的Lecturer(类似讲师),教授“强化学习”课程。 Aja Huang即ShihChieh Huang(中文名黄世杰),是阿尔法围棋的工程实现技术负责人。计算机围棋AjaGo和Erica的作者。David Silver和Aja Huang都在加拿大阿尔伯塔大学做研究,合作导师都是Martin Muller,所以David Silver和Aja Huang比较熟。 Chris J.Maddison是牛津大学统计系博士生,在DeepMind做研究科学家(一周两天)。硕士导师是加拿大多伦多大学的Geoffrey Hinton。Demis Hassabis是Google DeepMind的创始人。Demis Hassabis在UCL拿到了神经学博士学位,与David Silver是校友。当前的人工智能领域,欧洲和加拿大的学者占有很重要的地位。加拿大的阿尔伯塔大学在计算机游戏和强化学习方面的研究,领先于其他世界一流大学。加拿大多伦多大学和蒙特利尔大学在深度学习方面的研究,领先于其他世界一流大学。计算机围棋相关人物的具体介绍,可以在如下网站中找到: https://chessprogramming.wikispaces.com。3.3.2深度卷积网络阿尔法围棋使用的4个深度神经网络(见图313),均采用12层的卷积网络。图313阿尔法围棋使用的4个深度神经网络这4个网络的训练过程和使用具体说明如下。(1) πSL是使用监督学习训练的策略网络pσ(a|s),它是12层的卷积网络,σ表示该卷积网络的内部连接权重。训练数据: 使用3000万KGS(Kiseido Go Server)的5~6段选手的对弈局势(Positions)。训练效果: 使用所有的输入特征后,该网络pσ(a|s)预测专家下棋招数达到57%的准确率。如果仅使用当前棋局和下棋历史信息,预测准确率为55.7%。(2) 策略网络pπ(a|s)是一个快速下棋网络。该网络使用部分输入特征,使用softmax()函数。策略网络pπ(a|s)确定在当前局势(State)下,采取的动作(Action),用softmax()函数后,它是一个概率分布。π表示该卷积网络的内部连接权重。训练数据: 使用3000万KGS 的5~6段选手的对弈局势(Positions)。训练效果: 速度快2μs,但准确率低,仅为24.2%。(3) πRL使用增强学习训练的策略网络pρ(a|s)。训练数据: 基于监督学习训练的pσ(a|s),采用策略梯度下降方法,训练pρ,ρ表示该卷积网络的内部连接权重。将ρ初始化为σ,即ρ=σ。然后将当前版本ρ与其众多迭代的前版本ρ′进行自我博弈,将自我博弈产生的棋局数据用来进一步训练。训练效果: 强化学习训练的pρ(a|s)对监督学习训练的pσ(a|s),胜率可达80%以上。而在无搜索的情况下,该网络对于另一个开源围棋程序Pachi,胜率可达85%。(4) 价值网络vθ(s)训练。训练目标: 小化预测值vθ(s)与终结果z的均方差。训练问题: 采用完整的KGS棋局数据训练该网络导致过拟合,因为前后局势是强相关的,仅差一子。价值网络的训练结果是MSE为0.19,而测试的结果是0.37,这是因为这样训练的价值网络会记住KGS棋局的结果。训练数据: 为了解决这个问题,使用pρ自我博弈(selfplay)生成的棋局,从不同棋局里采样出3000万不同局势,用这些数据训练价值网络。这样训练的结果是训练集上MSE为0.226,而测试的结果是0.234。训练效果: vθ(s)一次就能判断出该局势下的胜率,比采用pρ的蒙特卡洛模拟少了15000次的运算量。阿尔法围棋使用的4个神经网络的特性与架构如表31所示。表31阿尔法围棋使用的4个神经网络的特性与架构深度神经网络特性网络架构效果πSL速度慢,准确性高。在3000万(s, a)上训练的随机监督学习策略12层网络,后输出所有招数的概率分布评估时间: 3mspπ(a|s)速度快,准确性低。在3000万(s, a)上训练的随机监督学习策略输入为所有模式特征的部分评估时间: 2μsπRL随机强化学习策略,通过自我博弈训练与πSL相同与πSL博弈的胜率为80%vθ(s)价值函数。从状态s使用πRL获胜的胜率与πSL相同,但只输出胜率比πSL的计算量少3.3.3结合策略网络和价值网络的蒙特卡洛树搜索结合策略网络和价值网络的蒙特卡洛树搜索如图314所示。图314结合策略网络和价值网络的蒙特卡洛树搜索阿尔法围棋的蒙特卡洛树搜索方法如图315所示。图315阿尔法围棋的蒙特卡洛树搜索方法阿尔法围棋的蒙特卡洛树搜索有效结合了快速走子的策略网络pπ(a|s)、策略网络pσ(a|s)和价值网络的vθ(s)。蒙特卡洛树遍历时,每条边(s, a)上会关联一个动作值Q(s, a)、访问计数值Nv(s, a)和先验概率P(s, a)。从根状态开始,通过仿真遍历整个树。在仿真的每个时间步t,从状态st选择动作at,其中at=argmaxaQst,a u(st,a)化动作值再加上一个奖励u(s, a),其中u(s,a)∝P(s,a)1 N(s,a)该奖励正比于先验概率,但是随着访问次数的增加而衰减,这样有助于去探索。当树遍历到叶节点sL时(在第L步)时,使用策略网络pσ(a|s)展开叶节点sL。输出的概率作为先验概率P(s|a)。该叶节点评估采用两种方式: 一种采用价值网络vθ(sL);另外一种采用随机策略网络pπ(a|s)。后该叶节点的Q值采用两种方法的折中,即λ=0.5。 v(sL)=(1-λ)vθ(sL) λzL这时会发现,采用pσ(a|s)比强化学习生成的pρ(a|s)效果要好,原因是监督学习网络是基于人训练的,更符合人下棋的多样性特点。而价值网络的生成,采用强化学习比采用监督学习方法要好。获取策略网络和价值网络的评估结果的计算量,比蒙特卡洛树搜索的计算量高几个数量级。为了有效地组合蒙特卡洛树搜索和深度神经网络,阿尔法围棋在通用处理器CPU上,使用异步多线程进行搜索树的搜索仿真;而在GPU上,通过并行计算获得策略网络和价值网络的评估结果。终的阿尔法围棋用了40个搜索线程、48个CPU和8个GPU。并行多机的阿尔法围棋版本使用40个搜索线程、1202个CPU和176个GPU。实际的阿尔法围棋采用APVMCTS(Asynchronous Policy and Value MCTS)方法,具体实现参考阿尔法围棋的Nature论文。3.3.4阿尔法围棋技术总结通过前面介绍可看到阿尔法围棋综合使用了计算机围棋的各项技术: 蒙特卡洛树搜索、强化学习和深度学习技术。正是采用了深度学习的深度卷积网络来模拟下棋,以及对局势的判断,才取得了计算机围棋上棋力的重大突破。这里,作者系统总结整理了阿尔法围棋的各项技术,包括阿尔法围棋继承的现有技术、新发展的技术以及具体的技术创新。阿尔法围棋技术创新大全如表32所示。在系统实现上,阿尔法围棋团队也做了不少创新。例如,做了分布式计算上的创新,解决了性能问题。(1) 使用Virtual Loss来增加线程间的多样性。(2) 控制蒙特卡洛树的更新,使得不同速度的计算过程能互相匹配。表32阿尔法围棋技术创新大全继承现有技术新增发展技术技术创新① 蒙特卡洛树搜索② 神经网络技术使用深度神经网络: ① 从棋谱中训练快速走子网络;② 从棋谱中训练SL网络;③ SL网络通过自我博弈训练得到RL网络;④ 用RL网络得到价值网络① 使用快速走子网络作为默认策略;② 在树策略的每个节点的值的计算上: 使用了SL网络的结果作为探索奖励项的初始值;③ 价值网络的结果与快速走子的结果对半混合作为每次模拟的产出3.4小结深度强化学习就是把强化学习(RL)和深度学习(DL)结合起来,用强化学习定义目标,用深度学习给出相应的机制,如Q学习等技术,以实现通用人工智能。目前强化学习得到了巨大发展,在很多领域,用强化学习方法可以实现人工智能的行为,例如阿尔法围棋。阿尔法围棋的成功证明了用深度神经网络和蒙特卡洛树搜索方法,可以完成很多规则清晰的计算机游戏的人工智能,并能有效击败人类职业选手。阿尔法围棋的胜利,本质上是一拨搞计算机的人击败了另一拨职业围棋选手,也是人类创造智能工具和科技的胜利!参考文献[1] Richard S, Sutton. Andrew Barto, An Introduction to Reinforcement Learning[M]. Cambridge, The MIT Press, 1998.[2] Szepesvari C. Algorithms for Reinforcement Learning[M]. Synthesis Lectures on Artificial Intelligence and Machine Learning 4, no. 1, Morgan & Claypool, 2010,1103.[3] Williams R J. Simple Statistical GradientFollowing Algorithms for Connectionist Reinforcement Learning[M]//Reinforcement Learning. Springer US, 1992, 229256.[4] Christopher C, Amos S. Training Deep Convolutional Neural Networks to Play Go[C]. ICML15,2015, 17661774.[5] Maddison C J, Huang A, Sutskever I, et al. Move Evaluation in Go Using Deep Convolutional
评论
还没有评论。