描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121340000丛书名: 博文视点AI系列
√从原理剖析到算法精髓,再到TensorFlow代码实现
√为读者构建了一个完整的强化学习知识体系
√介绍算法的原理,分析算法之间的内在联系,帮助读者掌握算法精髓
√掌握用强化学习思想解决实际问题的能力
√配书源代码供下载
《强化学习精要:核心算法与TensorFlow 实现》用通俗幽默的语言深入浅出地介绍了强化学习的基本算法与代码实现,为读者构建了一个完整的强化学习知识体系,同时介绍了这些算法的具体实现方式。从基本的马尔可夫决策过程,到各种复杂的强化学习算法,读者都可以从本书中学习到。本书除了介绍这些算法的原理,还深入分析了算法之间的内在联系,可以帮助读者举一反三,掌握算法精髓。书中介绍的代码可以帮助读者快速将算法应用到实践中。
目录
部分强化学习入门与基础知识
1 引言2
1.1 强化学习的概念. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1 巴浦洛夫的狗. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 俄罗斯方块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 站在被实验者的角度看问题. . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 强化学习效果的评估. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.1 不断试错. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.2 看重长期回报. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 强化学习与监督学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.1 强化学习与监督学习的本质. . . . . . . . . . . . . . . . . . . . . 9
1.4.2 模仿学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5 强化学习的实验环境. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5.1 Arcade Learning Environment . . . . . . . . . . . . . . . . . . . . . 12
1.5.2 Box2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5.3 MuJoCo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5.4 Gym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6 本书的主要内容. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.7 参考资料. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2 数学与机器学习基础17
2.1 线性代数基础. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 对称矩阵的性质. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.1 特征值与特征向量. . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.2 对称矩阵的特征值和特征向量. . . . . . . . . . . . . . . . . . . . 22
2.2.3 对称矩阵的对角化. . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3 概率论. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.1 概率与分布. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.2 似然估计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4 重要性采样. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.5 信息论基础. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.6 KL 散度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.7 凸函数及其性质. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.8 机器学习的基本概念. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.9 机器学习的目标函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.10 总结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3 优化算法47
3.1 梯度下降法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.1.1 什么是梯度下降法. . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.1.2 优雅的步长. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2 动量算法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.3 共轭梯度法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3.1 精妙的约束. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3.2 共轭. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.3.3 优化步长的确定. . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.3.4 Gram-Schmidt 方法. . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.3.5 共轭梯度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.4 自然梯度法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.4.1 基本概念. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.4.2 Fisher 信息矩阵. . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.4.3 自然梯度法目标公式. . . . . . . . . . . . . . . . . . . . . . . . . 76
3.5 总结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4 TensorFlow 入门78
4.1 TensorFlow 的基本使用方法. . . . . . . . . . . . . . . . . . . . . . . . . 78
4.2 TensorFlow 原理介绍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.2.1 创建变量的scope . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.2.2 创建一个Variable 背后的故事. . . . . . . . . . . . . . . . . . . . 89
4.2.3 运算操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.2.4 tf.gradients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.2.5 Optimizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.2.6 TensorFlow 的反向传播技巧. . . . . . . . . . . . . . . . . . . . . 106
4.2.7 arg_scope 的使用. . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.3 TensorFlow 的分布式训练. . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.3.1 基于MPI 的数据并行模型. . . . . . . . . . . . . . . . . . . . . . 114
4.3.2 MPI 的实现:mpi_adam . . . . . . . . . . . . . . . . . . . . . . . . 121
4.4 基于TensorFlow 实现经典网络结构. . . . . . . . . . . . . . . . . . . . . 122
4.4.1 多层感知器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
4.4.2 卷积神经网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.4.3 循环神经网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.5 总结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.6 参考资料. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5 Gym 与Baselines 130
5.1 Gym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.1.1 Gym 的安装. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.1.2 Gym 的基本使用方法. . . . . . . . . . . . . . . . . . . . . . . . . 132
5.1.3 利用Gym 框架实现一个经典的棋类游戏:蛇棋. . . . . . . . . . 134
5.2 Baselines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
5.2.1 Baselines 中的Python 3 新特性. . . . . . . . . . . . . . . . . . . . 139
5.2.2 tf_util . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
5.2.3 对Gym 平台的扩展. . . . . . . . . . . . . . . . . . . . . . . . . . 142
5.3 总结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6 强化学习基本算法145
6.1 马尔可夫决策过程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.1.1 MDP:策略与环境模型. . . . . . . . . . . . . . . . . . . . . . . . 145
6.1.2 值函数与Bellman 公式. . . . . . . . . . . . . . . . . . . . . . . . 147
6.1.3 “表格式”Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.2 策略迭代. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.2.1 策略迭代法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.2.2 策略提升的证明. . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.2.3 策略迭代的效果展示. . . . . . . . . . . . . . . . . . . . . . . . . 160
6.3 价值迭代. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
6.3.1 N 轮策略迭代. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
6.3.2 从动态规划的角度谈价值迭代. . . . . . . . . . . . . . . . . . . . 165
6.3.3 价值迭代的实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
6.4 泛化迭代. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
6.4.1 两个. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
6.4.2 广义策略迭代法. . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
6.4.3 泛化迭代的实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
6.5 总结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
第二部分价值算法
7 Q-Learning 基础173
7.1 状态转移概率:从掌握到放弃. . . . . . . . . . . . . . . .
前言
从你拿起本书的那一刻起,我们就一起踏上了这段有关强化学习的冒险之旅。本书中有简单直白的叙述,也有复杂冗长的证明;有诙谐幽默,也有深刻的思考。所有的一切,都是为了帮助你更轻松地对强化学习有更多了解、更多感悟。
一年之前,我在拙作《深度学习轻松学:核心算法与视觉实践》中,同样以这段话作为开篇,不同的是这一次书的主题换成了强化学习。近年来,强化学习领域有了很大的发展,基于强化学习开发的智能体也被人们熟知。于是越来越多的人开始关注强化学习,了解这个领域,并使用强化学习的方法解决问题。随着深度学习的发展,强化学习也逐渐发挥出了自己的实力,凭借更灵活的问题定义方式,解决了很多其他方法难以解决的问题。
虽然强化学习这个领域已经有了多年的积累与发展,但是与深度学习相比,国内外与此相关的书籍与课程偏少。同时,由于强化学习融合了很多领域的知识,本身的技术难度较大,学习起来比较困难。两者叠加,使得强化学习仍然是一个令很多人感到困惑的概念。
为了学习强化学习中的各种知识,作为本书的作者,我也花费了很多的精力。在阅读了很多经典的书籍、论文和博客之后,我开始对强化学习有了自己的理解和体会。同时也积累了不少关于强化学习的“学习笔记”,其中的一部分已经在一些公开场合,例如我的知乎专栏《无痛的机器学习》(https://zhuanlan.zhihu.com/hsmyy)中与读者分享过。在交流的过程中,我能感受到读者对强化学习的浓厚兴趣,同时自己也在分享中得到了提高。
经过长时间的积累,这些心得与体会终凝结成了本书。在这个过程中我重新回顾了自己所学的知识,也进一步思考了强化学习各部分知识点之间的联系。我希望可以给大家呈现一个尽可能完整而丰富的强化学习世界,与大家共同探讨强化学习中的无限可能。
为了使更多的人能够从本书中得到收获,我选择强化学习中比较经典的算法进行了介绍,这些都是强化学习中十分重要的内容,对不了解强化学习的读者来说,可以帮助你快速了解强化学习的知识体系,对这个领域有一个全面的认识;对正在学习强化学习的读者来说,本书中的知识同样可以帮助你梳理强化学习的核心要点,加深对这些基本问题的理解。
在编写这本书的过程中,我又一次体会到求知的艰辛。获取知识的道路总是充满荆棘,除了自身不断地努力,更少不了身边人对我的支持鼓励。感谢家人对我的理解与支持,感谢编辑郑柳洁女士再次成为我的伯乐,为我提供了很多帮助,感谢刘晓鸣先生为本书绘制了大量插图。我相信我们的努力付出会使更多的人享受获得知识的快乐。
本书的主要内容
强化学习在机器学习中的难度不低,它需要很多方面的知识辅助,同时自身也已经形成了一个庞大的体系。本书并不能帮助读者完全掌握强化学习的所有知识点,所能做的只是展示其中部分基础内容。本书不是一本科普读物,想要阅读本书需要具备一定的基础知识,如微积分、线性代数等。部分章节也会梳理这些基础知识,以确保读者掌握这些知识的核心思想。本书各章节的核心内容如下。
部分主要介绍与强化学习有关的基础知识,例如数学基础、对应的程序开发基础、强化学习的基本计算方法等。
第1章已经介绍了强化学习的基本概念,相信读者对强化学习的目标、特点已经有了一定的了解。
第2章介绍相关的数学知识,如线性代数、概率论、重要性采样、信息论等,帮助读者快速回顾即将用到的数学知识。
第3章介绍强化学习中会用到的优化知识,主要介绍常见的梯度下降法(Gradient Descent)、共轭梯度法和自然梯度法,这三种方法将出现在后面的算法中。
第4章介绍书中代码使用的计算框架TensorFlow。TensorFlow 是一款使用十分广泛的框架,很多强化学习的算法选择使用它进行实现,因此我们有必要学习它。本章将简单介绍它的使用方法和一些基本原理,熟悉TensorFlow 的读者可以跳过本章。
第5章介绍本书使用的另一个框架Gym 及在此框架上实现的算法集合Baselines。Gym 集成了大量的强化学习仿真环境,Baselines 则基于TensorFlow 和Gym 实现了一些经典的算法。本章将简单介绍这两个框架的基础知识。
第6章介绍强化学习的基础知识。例如马尔可夫决策过程(Markov Decision Process),以及在简单问题上的两种经典动态规划求解法:策略迭代法和价值迭代法。这些方法是强化学习算法的基石,绝大多数强化学习方法都是根据这些知识演变来的。
第二部分介绍以值函数为思想的一系列算法,其中的代表算法为Deep Q Network和Rainbow。
第7章介绍蒙特卡罗(Monte-Carlo)和时序差分(Temporal-Difference)两种求解Model-free 问题的方法,并介绍Deep Q Network 算法的细节。
第8章介绍Deep Q-Learning 的一些改进算法,如Priority Replay Buffer、Duel Network等,并介绍改进的集成算法Rainbow。
第三部分介绍以策略梯度(Policy Gradient)为思想的一系列算法,其中的代表算法为Actor-Critic。
第9章介绍策略梯度法和Actor-Critic 算法的原理,同时介绍A2C 算法的实现细节。
第10章介绍使策略单调提升的算法,其中的代表为Trust Region Policy Optimization(TRPO)算法。
第11章介绍高样本使用率的策略梯度算法,其中的代表算法为ACER 算法和确定策略梯度法(Deterministic Policy Gradient)。
第四部分介绍强化学习其他方面的内容。
第12章介绍回报稀疏情况下的一些求解方法,其中包括基于层次的强化学习和基于课程学习(Curriculum Learning)思想的方法。
第13 章介绍模型已知的一些算法,如基于蒙特卡罗树搜索(Monte Carlo Tree Search,MCTS)的强化学习算法和iLQR 算法的原理。
第五部分介绍反向强化学习的基础知识。
第14章介绍反向强化学习的基础,以及基本的求解方法。
第15 章介绍熵反向强化学习(Max Entropy Inverse Reinforcement Learning)和生成对抗模仿学习(Generative Adversarial Imitation Learning)算法的内容。
虽然本书介绍了很多强化学习的内容,但实际上这只是强化学习中的一小部分,不过这些内容可以作为读者入门强化学习的基础,希望在下面的学习中读者能够有所收获,并以此为基础了解更多有关强化学习的内容。
由于本人才疏学浅,行文间难免有所纰漏,望各位读者多多包涵,不吝赐教。
作者
近年来强化学习在学术界和工业界都受到了极大关注,很多工业界的巨头都在不断探索强化学习的实际应用。滴滴出行作为全球*的移动出行公司,已经把强化学习应用到多个业务场景中,帮助用户和司机解决出行问题,构建城市智慧大脑。本书介绍了强化学习的经典算法及近年来发展中的一些卓越成果,同时将理论联系实际,深入分析了这些算法的具体实现。作为一本内容丰富的强化学习科普书籍,希望无论是强化学习领域的初学者还是有经验的研发人员,均可从书中得到收获。
—— 王征,滴滴出行AI Labs时空数据组负责人
本书的特色之一是紧跟强化学习技术发展的前沿,从基于值函数的算法、基于策略梯度的算法,一直介绍到生成对抗模仿学习算法,内容涵盖了近年来深度强化学习研究的众多突破性算法;特色之二是结合开源的深度学习框架TensorFlow、强化学习仿真框架Gym及在这些框架上实现的算法集合Baselines,针对性地讲解了核心算法的代码实现,出色地将算法理论和实践结合起来。对强化学习领域的科研人员而言,这是一本不可多得的优秀读物。
—— 章宗长,苏州大学副教授
机器学习特别是强化学习,是近年和将来的学术研究重点,也是业界热点问题。本书作者通过对强化学习的概述和用Python实现的具体实例的讲解,为读者指明了一条通过编程理解和实践强化学习算法的道路。本书适合刚开始接触强化学习的初学者入门或者有经验的从业者巩固和借鉴。
—— 李可,美国微软公司高级数据科学家
这几年,机器学习因为深度学习的突飞猛进有了激动人心的进展,强化学习技术由于建模和环境的互动及延迟的反馈获得了较高的学术地位。本书全面而实用,对强化学习感兴趣的朋友来说是难得的教材。
—— 吴双,依图科技研究科学家
评论
还没有评论。