描述
开 本: 16开纸 张: 铜版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787519869618
一句话推荐
本书详细解释了被实践验证的那些强化学习方法,它们被封装形成了软件开发人员的标准库。
编辑推荐
强化学习将是未来十年在人工智能领域的最z大突破之一,强化学习算法能够使得智能体在环境中学习任意目标。这一令人兴奋的发展打破了传统机器学习的算法约束。这本实用的书向数据科学和人工智能专业人员展示了如何通过强化的手段使机器能够自己学习。
本书作者创办了自己名字命名的研究型公司,本书涵盖了从基本的构建模块到最z先进的实践。通过本书,你将探索强化学习的当前状态、关注工业应用、学习大量算法,本书还有专门章节介绍如何将强化学习的解决方案部署到生产环节。这并不是一本随用随翻的工具书,书中包含很多数学知识,并期望读者是熟悉机器学习的。
专家推荐
“强化学习出色地展示了它的技术背景、发展前景和未来机会,它将显著的推进数据科学家在其业务上的工作方式。”
——David Aronchick,
Kubeflow联合创始人
“对于任何想要应用强化学习技术来解决现实问题的人来说,这本书都是必读的。它将以实践中的案例和细致的解释,带领读者漫游强化学习的第d一个定理到顶会的前沿技术。”
——David Foster,
应用数据科学合伙人
“伟大著作!本书详细解释了被实践验证的那些强化学习方法,它们被封装形成了软件开发人员的标准库。”
——Danny Lange,
Unity人工智能高级副总裁
本书作者创办了自己名字命名的研究型公司,本书涵盖了从基本的构建模块到最z先进的实践。通过本书,你将探索强化学习的当前状态、关注工业应用、学习大量算法,本书还有专门章节介绍如何将强化学习的解决方案部署到生产环节。这并不是一本随用随翻的工具书,书中包含很多数学知识,并期望读者是熟悉机器学习的。
本书的主要内容有:学习强化学习是什么,以及算法如何解决具体问题。掌握强化学习的基础知识,包括马尔可夫决策过程、动态规划和时间差分算法。深入研究一系列基于值函数和政策梯度的算法。应用先进的强化学习解决方案,如元学习、分层学习、多智能体、模仿学习等。了解最z前沿的深度强化学习算法,包括Rainbow、PPO、TD3、SAC等。通过本书专门的配套网站获得实践代码和案例。
目录
前言 .1
第1 章 强化学习概述 .13
1.1 为什么现在就需要强化学习? . 14
1.2 机器学习 15
1.3 强化学习 17
1.3.1 什么时候使用强化学习 19
1.3.2 强化学习的应用场景 20
1.4 强化学习的种类 22
1.4.1 免模型学习或有模型学习 . 22
1.4.2 智能体如何使用并更新它们的策略 23
1.4.3 离散或连续的行为 . 25
1.4.4 优化方法. 25
1.4.5 策略评估和改进 . 26
1.5 强化学习的基本概念 . 27
1.5.1 历史上第一个强化学习算法 . 28
1.5.2 强化学习和机器学习是一种东西吗? . 31
1.5.3 奖励和反馈 32
1.6 强化学习的发展简史 . 35
1.7 本章总结 37
1.8 扩展阅读 38
1.9 参考文献 38
第2 章 马尔可夫决策过程,动态规划,蒙特卡洛方法 44
2.1 多臂老虎机测试 44
2.1.1 奖励工程. 45
2.1.2 策略评估:价值函数 45
2.1.3 策略改进:选择最佳动作 48
2.1.4 模拟环境. 50
2.1.5 运行实验. 50
2.1.6 ε – 贪婪算法的改进. 52
2.2 马尔可夫决策过程 . 54
2.2.1 库存控制. 56
2.2.2 库存控制仿真 . 60
2.3 策略与价值函数 62
2.3.1 打折的奖励 62
2.3.2 用状态?C 价值函数预测奖励 64
2.3.3 用动作值函数预测奖励 . 67
2.3.4 最优策略. 69
2.4 蒙特卡洛策略生成 70
2.5 动态规划的值迭代 72
2.5.1 值迭代的过程 74
2.5.2 数值迭代结果 76
2.6 总结 78
2.7 扩展阅读 79
2.8 参考文献 79
第3 章 时序差分学习,Q 学习和n 步算法 80
3.1 时序差分学习的相关公式 81
3.1.1 Q 学习 . 83
3.1.2 SARSA 85
3.1.3 Q 学习与SARSA 方法的对比 . 87
3.1.4 案例解析:自动扩展应用程序容器以降低成本 . 90
3.2 行业实例:广告中的实时竞价 . 92
3.2.1 MDP 的定义 . 92
3.2.2 实时竞价案例的环境 93
3.2.3 进一步改进 94
3.3 Q 学习的相关扩展 96
3.3.1 双重Q 学习 96
3.3.2 延迟Q 学习 97
3.3.3 各类版本的Q 学习之间的对比 98
3.3.4 对抗学习. 98
3.4 n 步算法 99
3.5 有效跟踪 104
3.6 有效跟踪算法的扩展 107
3.6.1 沃特金斯的Q(λ) 107
3.6.2 沃特金斯Q(λ) 的模糊擦除 . 108
3.6.3 快速Q 学习 108
3.6.4 积累式有效跟踪与取代式有效跟踪 108
3.7 总结 . 109
3.8 扩展阅读 110
3.9 参考文献 110
第4 章 深度Q 网络 . 112
4.1 深度学习的体系结构 113
4.1.1 基础知识 113
4.1.2 深度学习架构 114
4.1.3 深度学习库 . 115
4.1.4 深度强化学习 117
4.2 深度Q 学习 . 117
4.2.1 经验重放 118
4.2.2 克隆Q 网络 118
4.2.3 神经网络结构 119
4.2.4 DQN 的实现 119
4.2.5 实际案例:倒立摆环境中的DQN 120
4.2.6 案例研究:减少建筑物的能源使用 125
4.3 彩虹DQN 126
4.3.1 分配强化学习 126
4.3.2 优先经验重放 129
4.3.3 噪声网络 129
4.3.4 决斗网络 129
4.4 实际案例:雅达利的彩虹DQN 130
4.4.1 结果 131
4.4.2 讨论 132
4.5 其他DQN 改进 134
4.5.1 改进探索过程 135
4.5.2 改进奖励过程 136
4.5.3 从离线数据中进行学习 137
4.6 总结 . 139
4.7 扩展阅读 140
4.8 参考文献 140
第5 章 梯度策略 144
5.1 直接学习策略的优势 144
5.2 如何计算策略的梯度 145
5.3 策略梯度理论 . 146
5.4 策略函数 149
5.4 1 线性策略 149
5.4.2 其他策略 151
5.5 基本实现 152
5.5.1 蒙特卡洛算法(强化算法) 152
5.5.2 带基线的强化算法 153
5.5.3 梯度方差的减小 157
5.5.4 n 步演员评论家和优势演员评论家(A2C) . 159
5.5.5 基于资格迹的演员评论家算法 . 164
5.5.6 基本策略梯度算法的比较 165
5.6 行业研究:为客户自动提供产品 . 166
5.6.1 行业实例:Gym 环境中的购物车实验 . 167
5.6.2 预设期望 168
5.6.3 购物车实验环境的结果展示 169
5.7 总结 . 173
5.8 扩展阅读 174
5.9 参考文献 174
第6 章 超越策略梯度 176
6.1 离线算法 177
6.1.1 重要性抽样 177
6.1.2 行为和目标策略 179
6.1.3 离线 Q 学习 180
6.1.4 梯度时差学习 180
6.1.5 Greedy-GQ 算法 181
6.1.6 离线演员评论家算法 . 182
6.2 决定性策略梯度 183
6.2.1 决定性策略梯度 183
6.2.2 深度确定性策略梯度 . 185
6.2.3 双延迟DDPG 189
6.2.4 案例研究:利用到用户评论的推荐算法 193
6.2.5 改进DPG. 194
6.3 信赖域方法 195
6.3.1 Kullback-Leibler 散度 197
6.3.2 自然策略梯度与信任区域策略优化 198
6.3.3 近端策略优化 201
6.4 实际案例:在现实生活中使用伺服器 206
6.4.1 实验设置 . 206
6.4.2 强化学习算法实现 207
6.4.3 增加算法的复杂度 210
6.4.4 模拟中的超参数调优 . 211
6.4.5 产生的策略 212
6.5 其他策略梯度算法 214
6.5.1 回溯(λ) 214
6.5.2 有经验重放的演员评论家(ACER) 214
6.5.3 使用Kronecker 因子信任区域的演员评论家算法(ACKTR) 215
6.5.4 更多相关方法 216
6.6 策略梯度算法的扩展 216
6.7 总结 . 217
6.7.1 应该使用哪种算法? . 217
6.7.2 关于异步方法的注意事项 218
6.8 扩展阅读 218
6.9 参考文献 219
第7 章 用熵方法学习所有可能的策略 225
7.1 什么是熵? 225
7.2 最大熵强化学习 226
7.3 弱演员评论家算法 227
7.3.1 SAC 的实现细节与离散动作空间 228
7.3.2 自动调整温度 229
7.3.3 案例研究:有助于减少交通拥堵的自动化交通管理系统 229
7.4 最大熵方法的推广 231
7.4.1 熵的其他度量(以及策略集) . 231
7.4.2 基于双重Q 学习上限的优化探索 231
7.4.3 通过历史经验重放改进结果 232
7.4.4 软策略梯度 . 232
7.4.5 软Q 学习(及其扩展) 232
7.4.6 路径一致性学习 233
7.5 性能比较:SAC 与PPO 233
7.6 熵是如何激励智能体进行探索的? . 235
7.7 行业实例:通过遥控车学习自动驾驶 240
7.7.1 问题描述 241
7.7.2 减少训练时间 241
7.7.3 夸张的动作 . 244
7.7.4 超参数探索 . 246
7.7.5 最终策略 246
7.7.6 进一步改进 . 247
7.8 本章总结 248
7.8.1 策略梯度与软Q 学习的等价性 249
7.8.2 这对今后的发展意味着什么? . 249
7.8.3 这对目前来说意味着什么? 249
7.9 参考文献 250
第8 章 改进智能体的学习方式 253
8.1 关于MDP 的思考 . 254
8.1.1 部分可观察马尔可夫决策过程 . 254
8.1.2 案例研究:POMDP 在自动驾驶汽车中的应用 256
8.1.3 上下文马尔可夫决策过程 . 257
8.1.4 动作不断变化的MDPs 257
8.1.5 正则化MDP 258
8.2 层次强化学习 . 259
8.2.1 初级层次强化学习 . 259
8.2.2 具有内在奖励的层次强化学习(HIRO) 260
8.2.3 学习技巧和无监督学习 262
8.2.4 在HRL 中使用技能 263
8.2.5 HRL 研究结论 264
8.3 多智能体强化学习 265
8.3.1 MARL 的框架 265
8.3.2 集中式或分布式 267
8.3.3 单智能体算法 268
8.3.4 案例研究:单智能体分散学习在无人机中的应用 . 269
8.3.5 集中学习,分散执行 . 270
8.3.6 分散的学习 . 272
8.3.7 其他的组合 . 273
8.3.8 MARL 的挑战 274
8.3.9 MARL 的结论 275
8.4 专家的指导 276
8.4.1 克隆行为 276
8.4.2 模拟强化学习 276
8.4.3 反向强化学习 277
8.4.4 课程学习 279
8.5 其他案例 281
8.5.1 元学习 281
8.5.2 迁移学习 281
8.6 总结 . 282
8.7 扩展阅读 283
8.8 参考文献 285
第9 章 强化学习实践 293
9.1 强化学习的生命周期 293
9.2 问题定义:一个真正的强化学习项目到底包括什么? . 299
9.2.1 强化学习问题是连续性问题 299
9.2.2 强化学习问题是战略性问题 300
9.2.3 强化学习中的基础指标 302
9.2.4 学习类型 304
9.3 强化学习工程和改进 309
9.3.1 项目过程 309
9.3.2 环境工程 310
9.3.3 状态工程或状态表示学习 313
9.3.4 策略工程 316
9.3.5 将策略映射到操作空间 322
9.3.6 探索 326
9.3.7 奖励工程 333
9.4 总结 . 337
9.5 扩展阅读 338
9.6 参考文献 339
第10 章 强化学习的生产部署 348
10.1 实现阶段 . 349
10.1.1 框架 . 349
10.1.2 大规模强化学习 353
10.1.3 评价 . 361
10.2 部署 370
10.2.1 目标 . 371
10.2.2 体系架构 374
10.2.3 辅助工具 376
10.2.4 安全、保障和道德 382
10.3 总结 389
10.4 扩展阅读 . 390
10.5 参考文献 . 392
第11 章 结论与展望 . 400
11.1 提示和技巧 400
11.1.1 框架问题 400
11.1.2 你的数据 402
11.1.3 训练 . 403
11.1.4 评价 . 404
11.1.5 部署 . 404
11.2 调试 405
11.2.1 ${ALGORITHM_NAME} 不能解决${ENVIRONMENT}! 406
11.2.2 监测调试 407
11.3 强化学习的未来 408
11.3.1 强化学习市场机会 409
11.3.2 强化学习的研究方向 410
11.4 结束语 416
11.4.1 未来下一步 417
11.4.2 现在轮到你了! . 418
11.5 扩展阅读 . 418
11.6 参考文献 . 419
附录A 两种动作的Logistic 策略梯度 423
附录B Softmax 的策略梯度 . 427
前言强化学习(Reinforcement Learning, RL)是一种能够优化序列决策的机器学习(Machine Learning,ML)方法相比较于其他机器学习算法,强化学习模仿了人类的学习方式。在骑自行车或参加数学考试的过程中,人类会本能地对其中的一些策略进行学习,从而解决这些复杂的任务。强化学习算法则是以同样的思路,通过与环境进行交互来学习相关的决策策略。近年来,各大公司通过机器学习算法实现了很多成功的决策。算法会利用海量的数据进行训练,以便做出当前的最z佳决策。但是从长远的角度来看,当前的正确决策并不一定是最z好的。就像吃完满满一桶的冰激淋,虽然能在短期内获得爽快的感觉,但接下来要做很多运动才能消耗掉这些热量。同样,如果一个公众号经常弄一些标题很唬人的文章,可能会在短时间内带来很高的点击率。但因为这些标题党行为降低了用户的信任度,所以从长远来看,反而会造成大量的用户流失。强化学习的出现之所以令人欣喜,是因为它可以进行长期策略的学习,并在复杂的实际问题中进行应用。实际的项目中会使用较为直观的指标来衡量,如利润、用户数量和留存率等,而不是使用工程技术中的术语,如准确性或F1 值。简而言之,许多项目的成败取决于是否采用序列化决策,强化学习正是用这种思路来解决这些问题的,而不是机器学习。本书的创作缘由写这本书的原因在于,目前有很多不错的项目案例都使用了强化学习技术去解决那些看似无法完成的任务。不过,这些例子几乎都来自学术论文中。而且,市面上的很多相关书籍要么是只针对学术界,要么是只有一些简短到几乎无法实际应用的代码。似乎从来没有人以工业界的角度,来阐述如何在实际生产环境中使用强化学习技术。强化学习这项技术事实上非常强大,所以打算写一本书来介绍如何在实际应用中使用强化学习。一开始的时候,主要的注意力都集中在项目实战中。但很快便意识到,在工业界几乎没有人听说过强化学习,更遑论生产应用了。此外,在进行读者调研时,发现许多工程师更是从未了解过强化学习的基本逻辑。因此,这本书最z终变成了现在这样:一部分是关于基本理论的解释,另一部分是关于工程实践的方法。希望这本书可以启发更多的人去在工业生产环境中使用强化学习。相信这是市面上第d一本讨论如何在实际生产中使用强化学习的书,当然也是目前唯一一本将算法理论和实际应用相结合的书。本书面向的读者对象这本书的目的是促进强化学习在工业界中进行应用。如果公司正在打造一款以强化学习为核心的产品,那么无论身处在算法岗、开发岗或运营岗,都可以从本书中学到相关知识。书中介绍了很多业内的实际案例,并不只是面向学术界的读者。成书原则和行文风格根据以往的写书经验,本书设定了以下若干个原则。第d一个原则,本书很少罗列大段的代码。在大多数情况下,纸质书都不应该是堆砌代码的地方,当然,编程语言类的工具书是个例外。不罗列代码似乎违背了传统意义上计算机书籍的理念,但就个人而言,纸质书上一页又一页的代码着实令人讨厌。读书是为了获取名词概念的解释以及作者独到的想法或见解。本书不堆砌大篇幅代码的另一个原因是,许多强化学习算法的实现过程非常复杂(特别是在本书后半部分的章节中),其中必然会涉及很多细节。如果不停地对这些细枝末节进行解释的话,往往会干扰到主要思想的阐述。对于这些代码,无论在学术界还是工业界,大家通常都会使用封装好的库,当然还有些算法还没有现成的库(因为它们比较新或太过复杂,无法合并到标准库中)。虽然程序员们常说“废话少说,放码过来”,译注1 但本书的重点依然会放到算法思想的阐述上来,并尽量减少代码所占的篇幅。不过,这并不意味着本书一点代码也没有。每个章节最z后的附录和代码库的链接中,包含许多实际案例、操作指南、使用评价、论文集和更多其他内容(请参阅前言的“补充资料”)。这样,正文部分就可以给算法的核心内容留有足够的空间,甚至还可以有地方写个小笑话。请放心,在读完本书之后,绝对会赞叹本书内容的深度和广度,并欣赏这种做法。第二个原则是关于数学原理。强化学习的推导是一个高度数学化的过程,因此用几行公式去解释一个算法,就要比几十行代码容易得多。虽然数学有时看起来像一门陌生的外语,但就像任意一门编程语言,数学语言也有其特有的语法、假设、定理和公理(类比一下,“公理”是不是有点像计算机语言中的“内置函数”)。不过,为了完全弄清楚数学推导,首先必须了解那些独特的数学符号和描述方法。所以本书并不会去刻意回避数学表达,特别是在解释强化学习的基本算法原理时,因为数学就是这些算法的重要组成部分。不过,本书会尽量不使用数学符号。如果实在无法避免,会在一旁附加一些文字释义。本书会通篇遵循Thomas、Philip S.、Billy Okal 在《马尔科夫决策过程中的数学记号》(第1 版)中的符号表达,但也会对一些数学符号进行简化,从而使表述更为清晰。第三个原则,相比于其他强化学习的书籍,本书更关注的是最z优化的实践方案和工程效果。至于强化学习的学术理论研究等方面,本书通常是罗列一些相关论文。这些论文会作为本书的参考文献部分,通过整理和总结所有的相关研究内容,以便你对最z新的研究进展有一个更好地把握。当然,也会尽量平衡本书内容的广度和深度。如果你是一位大学教师,可能会觉得本书内容深度不够。你也可能是一位业内专家,或者只是一位刚刚学会编程的电脑新手。本书无法满足所有人的需求,所以对内容进行了尽可能的折中。通过不断地调整正文部分和扩展内容,能让你在获得足够多信息的同时,又能防止复杂的阐述导致的焦虑。如果想更深入地了解某些特定的研究方向,请参考相关文献和其他书目。如果在阅读中感到内容有些吃力,请放轻松,慢慢来。书中提供了很多其他资源的链接,这些链接应该可以提供帮助。第四个原则,本书会尽量指出已有的算法模型中可能存在的陷阱或错误。有些人可能认为强化学习有很多缺陷,不值得信赖和推崇。但是强化学习既然已经形成了基本的体系,而且整体上是较为完备的,那么它就是值得信赖的。对于一项具体任务中可能存在的未知风险和困难,是有必要进行充分了解的,这样可以防止轻易地做出承诺,并留出足够的项目时长。当然,这本书不是在介绍正儿八经的软件工程。不过,当在书中看到“困难与失败”或“如何改进”等字眼时要提高警觉,因为这些字眼下都是很关键的信息。常言道:“失败乃成功之母。”阅读本书的前序知识大家总觉得强化学习是一个很高级的话题,当然,这是因为还没有真正地踏入这个领域。为了方便阅读,建议提前掌握一些数据科学和机器学习的知识。如果能再学习一些数学知识就更好了。但如果不了解这方面的内容也完全不用担心,书中会对这些内容进行详细介绍。本书还提供了很多扩展阅读的参考书目和链接,并对一些辅助性的概念进行了解释,相信这些附加内容会帮助你补充大量知识。概览与大纲本书的范围涵盖了把强化学习应用于生产的全过程。首先,需要学习的是强化学习所包含的基本框架。接下来,将按照此框架来了解强化学习中的基本算法。然后就可以学到更多的高级算法,这些高级算法能实现更强大的功能。接下来需要学习如何将这些算法应用到实际问题中。最z后,需要设计一个鲁棒的系统,使其在操作上方便可行。下面是本书遵循的技术路径,建议你按照顺序阅读,不要跳跃章节。每一个章节都建立在之前章节的基础上,所以如果跳跃阅读,可能会错过一些东西。如果你只想阅读某些感兴趣内容的话,在必要时文中会给出前述内容的页码供你翻阅。下面是简洁而又丰富的章节介绍:第1 章 强化学习概述本书从强化学习的历史、背景等问题中娓娓道来,并介绍相关学科所带来的启发。本章会奠定强化学习的认识基础,并提供强化学习中多种类型算法的概述。第2 章 马尔可夫决策过程,动态规划,蒙特卡洛方法从这一章开始加大难度,你一定要把本章的概念细致的搞清楚。本章定义了强化学习的基本概念,包括马尔可夫决策过程、动态规划和蒙特卡洛方法。第3 章 时序差分学习,Q 学习和n 步算法在本章中,你将了解到非常重要的“价值函数”的基本思想。价值函数会对每一个特定的状态进行评价并给出评价值,这一重要概念确定了当代强化学习运作的基本方式。第4 章 深度Q 网络很多经典的算法都是将价值函数与深度学习相结合而诞生的,随着深入研究DQN 网络,肯定会对其算法的性能感到震惊。第5 章 梯度策略除了第3 章介绍的价值函数的方法,在本章将会了解到第二种广为流行强化学习算法:策略梯度。它可以直接对策略函数进行优化。策略梯度与价值函数的区别在于它可以直接对策略本身建立函数表达式,这样就可以处理连续性的行为。第6 章 超越策略梯度原版策略梯度算法存在一系列的问题,本章将指出并解决这些难题。为了提高算法效率,可以将离线训练方式加入到策略梯度算法中。第7 章 用熵方法学习所有可能的策略信息熵已被证明是足够鲁棒的,通过它能够让模型学习到复杂的策略行为,例如汽车的自动驾驶或交通管制。第8 章 改进智能体的学习方式本章的关注点从核心算法转移到算法外围,通过研究外围辅助部分来帮助解决困难问题。本章将重点介绍强化学习中构建马尔可夫决策过程的多种不同的思想方法。第9 章 强化学习实践本章和第10 章会构建一个实际可行的强化学习系统。在本章中将指导你设计一款工业级强化学习产品,包括实际步骤、决策设计和最z终实现等。第10 章 强化学习的生产部署本章给出了在实际生产中,关于强化学习产品运维方面的一些切实可行的方法和建议。深入研究关于如何增强产品方案的可扩展性和鲁棒性的架构设计,以及需要注意的关键问题。第11 章 结论与展望第11 章并不只是简单的总结,它包含了丰富的实用技巧,这些技巧在之后的强化学习探索之路中非常实用。同时,这一章中也给出了一些关于未来研究的探索和建议。补充材料我创建了网站https://rl-book.com 来整理本书中所有的补充材料。该网站包含算法代码、扩展阅读的文章列表、强化学习技术路线的对比、当前案例的数据库等众多内容。参见前言的“成书原则和行文风格”,解释了为什么本书中没有大量代码。之所以要创建一个完整的网站,而不是只创建一个代码库,是因为作者相信强化学习不仅仅是代码。作者认为,强化学习是一种能改变人们思维模式带来新思考的算法。比如,策略是如何产生长期影响的?强化学习是一套全新的技术方案,它需要一个完全不同的架构。由于以上种种原因,这些网络补充材料不只是罗列代码,也不适合纸质印刷。因为强化学习技术可能变化很快,纸质的印刷只会导致效率低下。所以,我创办了这个综合性的材料信息网站,相信你很快就会发现它的价值。建议你要去浏览一下这个网站,而且如果有什么新的材料需要补充,请联系作者。排版约定本书使用了下述排版约定。斜体(Italic)表示新术语、URL、电子邮件地址、文件名和扩展名。等宽字体(Constant Width)表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。首字母缩略词强化学习中充满了首字母缩略词,特别是在谈到算法实现时。书后提供了这些术语的完整列表,并对其中的关键术语做了解释。数学记号一般来说,本书会遵循Thomas、Philip S.、Billy Okal 在《马尔科夫决策过程中的数学记号》(第1 版)中提供的表达符号,但也经常会出现一些简化表达。比如去掉公式中的时间下标,使用撇号表示当前和下一个等。对于严格完整的数学表达,请参考学术类教科书和相关论文。一般来说,花体字母表示一个集合,小写字母表示集合中的一个元素,撇号表示下一个回合,大写字母表示函数或常量。很多算法是需要用到索引或下标的,通常算法利用下标进行数据索引。所以,当讲解到这些算法时,书中也会用下标来表示索引。例如,at 表示在时间或位置t 处的行为。如果遇到不熟悉的公式,不用着急,慢慢读就是。首先理解每个符号代表什么,然后搞明白这个等式要做什么。就像学习任何一项技能,熟能生巧。对了,等号上面多个点,即“被定义为”。在阅读算法时,建议按照算法顺序来阅读。在必要时,书中会使用文字对程序进行描述。但在大多数情况下,用公式符号会比文字更加简洁。符号←在算法中表示“更新”,相比于=,更推荐使用这个箭头符号。因为从技术上讲,等号= 表示数学上是相等的,在程序中也常用== 来表示相等。但以往很多程序语言中,没有很好对这种表示进行区分,用等号= 既表示定义,也表示更新,容易造成混乱。书中选择用伪代码来演示算法,而不是用某种编程语言。我思考了很久用什么语言,但最z终选择用伪代码主要有三个关键原因。第d一,所有的学术文献都是用伪代码来描述的。既然希望这本书成为工业和学术界之间的桥梁,如果选择了某种项目工程的语言风格,反而会拉大工业界和学术界的分歧。第二,由于书中使用了很多数学公式,使用伪代码来表达这些算法会显得更简洁。如果使用编程语言来表示这些数学运算,将会出现大量的for 循环和临时变量。第三,伪代码非常简单基本上不太会犯错。虽然书中已经对数学运算进行了简化,但使用伪代码显然可以更简洁。贸然将论文上的算法用编程语言来表示,是会引入很多bug 的。
评论
还没有评论。