新書推薦:
《
严复与福泽谕吉启蒙思想比较(王中江著作系列)
》
售價:NT$
750.0
《
甘于平凡的勇气
》
售價:NT$
225.0
《
存在与结构:精神分析的法国转向——以拉康与萨特为中心
》
售價:NT$
240.0
《
生成式人工智能:AIGC与多模态技术应用实践指南
》
售價:NT$
495.0
《
石油帝国的兴衰:英国的工业化与去工业化
》
售價:NT$
445.0
《
古典的回響:溪客舊廬藏明清文人繪畫
》
售價:NT$
1990.0
《
根源、制度和秩序:从老子到黄老学(王中江著作系列)
》
售價:NT$
550.0
《
索恩丛书·北宋政治与保守主义:司马光的从政与思想(1019~1086)
》
售價:NT$
345.0
|
編輯推薦: |
从原理剖析到算法精髓,再到TensorFlow代码实现
为读者构建了一个完整的强化学习知识体系
介绍算法的原理,分析算法之间的内在联系,帮助读者掌握算法精髓
掌握用强化学习思想解决实际问题的能力
配书源代码供下载
|
內容簡介: |
《强化学习精要:核心算法与TensorFlow 实现》用通俗幽默的语言深入浅出地介绍了强化学习的基本算法与代码实现,为读者构建了一个完整的强化学习知识体系,同时介绍了这些算法的具体实现方式。从基本的马尔可夫决策过程,到各种复杂的强化学习算法,读者都可以从本书中学习到。本书除了介绍这些算法的原理,还深入分析了算法之间的内在联系,可以帮助读者举一反三,掌握算法精髓。书中介绍的代码可以帮助读者快速将算法应用到实践中。
|
關於作者: |
冯超,毕业于中国科学院大学,滴滴出行AI Labs时空数据组专家算法工程师,曾任小猿搜题算法负责人之一。自2016年起在知乎开设技术专栏《无痛的机器学习》,发表与深度学习和强化学习相关的文章,文章以轻松幽默的语言、细致深入的分析为特点,得到了广泛的关注。曾撰写深度学习进阶领域口碑技术书《深度学习轻松学:核心算法与视觉实践》。
|
目錄:
|
目录
第一部分强化学习入门与基础知识
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.comhsmyy)中与读者分享过。在交流的过程中,我能感受到读者对强化学习的浓厚兴趣,同时自己也在分享中得到了提高。
经过长时间的积累,这些心得与体会最终凝结成了本书。在这个过程中我重新回顾了自己所学的知识,也进一步思考了强化学习各部分知识点之间的联系。我希望可以给大家呈现一个尽可能完整而丰富的强化学习世界,与大家共同探讨强化学习中的无限可能。
为了使更多的人能够从本书中得到收获,我选择强化学习中比较经典的算法进行了介绍,这些都是强化学习中十分重要的内容,对不了解强化学习的读者来说,可以帮助你快速了解强化学习的知识体系,对这个领域有一个全面的认识;对正在学习强化学习的读者来说,本书中的知识同样可以帮助你梳理强化学习的核心要点,加深对这些基本问题的理解。
在编写这本书的过程中,我又一次体会到求知的艰辛。获取知识的道路总是充满荆棘,除了自身不断地努力,更少不了身边人对我的支持鼓励。感谢家人对我的理解与支持,感谢编辑郑柳洁女士再次成为我的伯乐,为我提供了很多帮助,感谢刘晓鸣先生为本书绘制了大量插图。我相信我们的努力付出会使更多的人享受获得知识的快乐。
本书的主要内容
强化学习在机器学习中的难度不低,它需要很多方面的知识辅助,同时自身也已经形成了一个庞大的体系。本书并不能帮助读者完全掌握强化学习的所有知识点,所能做的只是展示其中部分基础内容。本书不是一本科普读物,想要阅读本书需要具备一定的基础知识,如微积分、线性代数等。部分章节也会梳理这些基础知识,以确保读者掌握这些知识的核心思想。本书各章节的核心内容如下。
第一部分主要介绍与强化学习有关的基础知识,例如数学基础、对应的程序开发基础、强化学习的基本计算方法等。
第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)算法的内容。
虽然本书介绍了很多强化学习的内容,但实际上这只是强化学习中的一小部分,不过这些内容可以作为读者入门强化学习的基础,希望在下面的学习中读者能够有所收获,并以此为基础了解更多有关强化学习的内容。
由于本人才疏学浅,行文间难免有所纰漏,望各位读者多多包涵,不吝赐教。
作者
|
|