×
强化学习——从原理到实践

包邮强化学习——从原理到实践

1星价 ¥54.8 (7.9折)
2星价¥54.8 定价¥69.0
暂无评论
图文详情
  • ISBN:9787302682417
  • 装帧:平装-胶订
  • 册数:暂无
  • 重量:暂无
  • 开本:其他
  • 页数:0
  • 出版时间:2025-03-01
  • 条形码:9787302682417 ; 978-7-302-68241-7

本书特色

内容全面:本书是一本对强化学习算法的综合性讲解书籍,既有理论基础,也有代码实现,并包括设计原理的讲解。
语言简洁:本书尽量以简洁的语言书写,每个章节之间的内容尽量独立,使读者可以跳跃阅读而没有障碍。
代码清晰:本书的代码也尽量以简洁的形式书写。每个代码块都是一个单元测试,读者可以按照每个代码块从上到下的顺序执行测试,从一个个小知识点聚沙成塔,融会贯通。


内容简介

"本书是对强化学习算法的综合性讲解书籍,内容包括主要的强化学习算法的实现思路讲解,以及主要的优化方法的原理讲解。本书介绍的每个算法都分为原理讲解和代码实现两部分,代码实现是为了通过实验验证原理部分的可行性。通过本书的学习,读者可以快速地了解强化学习算法的设计原理,掌握强化学习算法的实现过程,并能研发属于自己的强化学习算法,了解各个算法的优缺点,以及各个算法适用的场景。 本书共18章,分为强化学习基础篇(第1章和第2章)介绍了强化学习中的基本概念。强化学习基础算法篇(第3~6章)介绍了QLearning算法、SARSA算法、DQN算法、Reniforce算法。强化学习高级算法篇(第7~12章)介绍了AC演员评委算法、A2C优势演员评委算法、PPO近端策略优化算法、DDPG深度确定性策略梯度算法、TD3双延迟深度确定性策略梯度算法、SAC柔性演员评委算法、模仿学习算法。多智能体篇(第13章和第14章),介绍了在一个系统中存在多智能体时,各个智能体之间的合作、对抗等关系,以及各个智能体之间的通信策略。扩展算法篇(第15~17章)介绍了CQL离线学习算法、MPC环境学习算法、HER目标导向算法。SB3强化学习框架篇(第18章),介绍了强化学习框架SB3的使用方法。 本书将使用*简单浅显的语言,带领读者快速地了解各个主要的强化学习算法的设计思路,以及实现过程。通过本书各个章节的学习,读者可以掌握主流的强化学习算法的原理和实现方法,能够让读者知其然也知其所以然,做到融会贯通。 "

前言

笔者自从学习人工智能相关的技术以来,一直觉得强化学习相关的资料相对偏少,无论是实体的书籍,还是网络上的各种文章,普遍存在重复量大,解释咬文嚼字,充斥着抽象的数学公式,很多时候对于一个算法的设计思路只是简单地列出几条公式就算强行解释过了,虽然在理解了这些算法之后,也能理解作者为什么会做出这样的解释,因为确实有些算法的设计思路是很抽象的。还有的算法纯粹是从数学层面推导出来的,单纯看*后的实现过程是完全没有任何道理的,只有理解了它背后的数学推导过程,才能理解为什么它是那样的一个实现过程,所以在某种程度上也能理解作者为什么要那样古板地解释算法的设计思路。

不过笔者还是希望尽自己所能,从更加感性、更加形象化的角度去解释各个强化学习算法的设计思路。笔者一直认为,万事开头难,学习数据库*困难的部分,可能就是成功地安装一个数据库。如果初期能顺利地入门,后期再去慢慢摸索算法中的各个细节,则可能会更容易一些。

出于以上原因,笔者想要尽自己所能,以自己对强化学习各个算法的理解,尽量简单明了地向读者介绍各个算法的设计思路,以帮助读者能够进入强化学习这座大厦的大门,未来读者可以自己在这座大厦里开启自己的冒险,乃至为这座大厦添砖加瓦。

前面谈到强化学习方面的理论往往解释得很生硬,其实相比原理解释上的问题,还有代码实现的质量也比较差,也许人工智能领域的工程师更偏向数学理论,在代码实现上普遍质量不高。代码里经常可以见到无意义的函数封装、冗余的代码块、无意义的判断、永远只循环一次的循环体等问题,让原本就复杂的程序更加难以读懂。 

本书配套的代码都是笔者亲手编写的,全套代码的风格都是统一的,只要看懂了第1套代码,其他的代码就可以做到一通百通。笔者尽量以简洁的形式去书写代码,让每行代码都有意义,避免无意义的冗余,并且所有的代码都是测试通过的,能复现本书中所介绍的效果。

笔者自从2021年以来,逐渐把自己所学习的计算机技术整理成视频和代码资料,在分享知识的过程中,强化学习是很受读者欢迎的部分,同时也有很多读者给笔者反馈,强化学习部分的知识理解起来不太容易,这和笔者制作的视频的质量有很大关系,现在回头看,当初因为青涩,制作的视频资料十分粗糙,因而笔者有了重新制作这部分视频资料的想法,同时也给了笔者动力,想把强化学习部分的知识整理成文本资料出版,以更多的渠道和媒介向读者传达自己的声音。

如果本书的内容能对你有一点帮助,笔者的工作就没有白费,*后,感谢读者购买这本书,希望本书的内容能让读者有所收获。

本书主要内容

第1章: 强化学习概述,概述了强化学习的基本概念及一般的优化过程。

第2章: Q函数和时序差分,介绍了Q函数,以及使用时序差分方法优化Q函数。

第3章: 基于表格的强化学习方法,介绍了基于表格实现的QLearning算法和SARSA算法。

第4章: DQN算法,介绍了DQN算法,以及在DQN算法中使用双模型、加权数据池、Double DQN、Dueling DQN、Noise DQN等改良方法。

第5章: 策略梯度,介绍了基于策略的思想,以及使用策略迭代方法优化策略的过程。

第6章: Reinforce算法,介绍了Reinforce算法,以及在Reinforce算法中应用去基线、熵正则等优化方法。

第7章: AC和A2C算法,介绍了AC算法和A2C算法,引出了“演员评委”模型。

第8章和第9章: 近端策略优化算法和实现,介绍了在强化学习中的难点: 近端策略优化算法,即PPO算法,介绍了在PPO算法中重要的重要性采样、优势函数、广义优势估计等概念。

第10章: DDPG和TD3算法,介绍了深度确定性策略梯度算法,即DDPG算法,以及DDPG算法的改进算法——TD3算法。

第11章: SAC算法,介绍了SAC算法的实现,提出了优化过程中要考虑动作的熵的概念。

第12章: 模仿学习,介绍了模仿学习方法,提出了可以使用传统监督学习的方法来模拟强化学习方法。

第13章: 合作关系多智能体,介绍了在一个系统中多个智能体之间合作方法,介绍了多个智能体之间的有通信和训练时有通信的两种通信策略。

第14章: 对抗关系多智能体,介绍了在一个系统中多个智能体之间的对抗方法,介绍了多个智能体之间的无通信和训练时有通信的两种通信策略。

第15章: CQL算法,介绍了离线学习算法——CQL算法,提出了在离线学习中抑制Q函数的过高估计的方法。

第16章: MPC算法,介绍了直接学习环境的MPC算法,提出了从模拟环境中搜索得到*优动作的方法。

第17章: HER目标导向的强化学习,介绍了在反馈极端稀疏的环境中,通过放置伪目标点来提高优化效率的HER算法。

第18章: SB3强化学习框架,介绍了强化学习框架SB3的使用方法。

阅读建议

本书是一本对强化学习算法的综合性讲解书籍,既有设计原理,也有代码实现。

本书尽量以简洁的语言书写,每个章节之间的内容尽量独立,使读者可以跳跃阅读而没有障碍。

作为一本实战书籍,读者要掌握本书的知识,务必结合代码调试,本书的代码也尽量以简洁的形式书写,使读者阅读不感吃力。本书代码使用Jupyter Notebook书写,每个代码块即是一个单元测试,读者可以用每个程序的每个代码块按从上到下的顺序进行测试,从一个个小知识点聚沙成塔,融会贯通。

扫描目录上方的二维码,可获取本书源码。


致谢

感谢笔者的好友K,在笔者写作过程中始终鼓励笔者,使笔者有动力完成本书的写作。

在本书的撰写过程中,笔者虽已竭尽所能为读者呈现*好的内容,但书中难免存在疏漏,敬请读者批评指正。

 

李福林
2024年12月

目录

基础篇

第1章强化学习概述

1.1强化学习的定义

1.2玩耍和学习

1.3对比传统方法

1.4基于表格的直观示例

1.5一般的学习过程

1.6小结

第2章Q函数和时序差分

2.1一个直观的例子

2.2数学描述

2.3精确计算Q函数是困难的

2.4寻求Q函数

2.5小结

基础算法篇

第3章基于表格的强化学习方法

3.1代码运行环境说明

3.2游戏环境

3.2.1Gym包介绍

3.2.2定义游戏环境

3.2.3游戏环境操作方法介绍

3.3定义Q表

3.4强化学习的一般过程

3.4.1数据池的必要性

3.4.2异策略和同策略

3.5定义play函数和数据池

3.5.1定义play函数

3.5.2定义数据池

3.6使用时序差分方法更新Q表

3.7QLearning算法

3.8SARSA算法

3.9实现无数据池的SARSA算法

3.10小结

第4章DQN算法

4.1DQN算法介绍

4.2平衡车游戏环境

4.3定义神经网络模型

4.4数据部分的修改

4.4.1play函数的修改

4.4.2数据池的修改

4.5实现DQN算法

4.6双模型

4.7加权的数据池

4.8Double DQN

4.9Dueling DQN

4.10Noise DQN

4.11小结

第5章策略梯度

5.1基于策略的算法

5.2一个直观的例子

5.3数学表达

5.4小结

第6章Reinforce算法

6.1基于策略的算法

6.2组件修改

6.2.1游戏环境

6.2.2神经网络模型

6.2.3play函数

6.3Reinforce算法

6.4去基线

6.4.1去基线的目的

6.4.2实现去基线

6.5熵正则

6.5.1动作分布概率收敛太快的弊端

6.5.2熵

6.5.3实现熵正则

6.6小结

高级算法篇

第7章AC和A2C算法

7.1时序差分和策略梯度的结合

7.2AC算法介绍

7.3实现AC算法

7.3.1定义模型

7.3.2训练critic模型

7.3.3训练actor模型

7.3.4执行训练

7.4A2C算法介绍

7.5实现A2C算法

7.6小结

第8章近端策略优化

8.1重要性采样

8.2惩罚与裁剪

8.2.1约束KL散度法

8.2.2惩罚KL散度法

8.2.3重要性采样裁剪法

8.3优势函数

8.4广义优势估计

8.5小结

第9章PPO算法

9.1在离散动作环境中的应用

9.1.1定义模型

9.1.2训练value模型

9.1.3训练action模型

9.1.4执行训练

9.2在连续动作环境中的应用

9.2.1倒立摆游戏环境介绍

9.2.2定义模型

9.2.3定义play函数

9.2.4训练value模型

9.2.5训练action模型

9.2.6执行训练

9.3小结

第10章DDPG和TD3算法

10.1DDPG算法概述

10.1.1确定的动作

10.1.2异策略化

10.2优化方法

10.3缓解过高估计

10.4DDPG算法实现

10.4.1定义模型

10.4.2定义工具类和辅助函数

10.4.3定义训练过程

10.5TD3算法实现

10.5.1定义模型

10.5.2定义训练过程

10.6小结


第11章SAC算法

11.1SAC算法简介

11.1.1考虑动作的熵

11.1.2异策略化

11.2实现SAC算法

11.2.1定义模型

11.2.2定义工具类和辅助函数

11.2.3训练value模型

11.2.4训练action模型

11.2.5执行训练

11.2.6关于alpha的调整

11.3SAC算法的简化版实现

11.3.1定义模型

11.3.2训练value模型

11.3.3训练action模型

11.3.4执行训练

11.4在连续动作环境中的应用

11.4.1定义模型

11.4.2value模型的输入和输出

11.4.3修改工具类和辅助函数

11.4.4训练value模型

11.4.5训练action模型

11.4.6执行训练

11.5小结

第12章模仿学习

12.1模仿学习简介

12.2在离散动作环境中的应用

12.2.1定义数据集

12.2.2定义模型

12.2.3执行训练

12.2.4测试

12.3在连续动作环境中的应用

12.3.1定义数据集

12.3.2定义模型

12.3.3执行训练

12.3.4测试

12.4小结


多智能体篇

第13章合作关系的多智能体

13.1多智能体简介

13.1.1有通信的情况

13.1.2训练时有通信的情况

13.1.3无通信的情况

13.2合作关系游戏环境介绍

13.3定义A2C算法

13.4有通信的实现

13.4.1定义模型

13.4.2修改play函数

13.4.3执行训练

13.5训练时有通信的实现

13.5.1修改模型

13.5.2执行训练

13.6小结

第14章对抗关系的多智能体

14.1对抗关系的多智能体简介

14.2纳什均衡简介

14.3游戏环境介绍

14.4无通信的实现

14.4.1定义模型

14.4.2执行训练

14.5训练时有通信的实现

14.5.1定义模型

14.5.2执行训练

14.6小结


扩展算法篇

第15章CQL算法

15.1离线学习简介

15.2离线学习中Q值过高估计的问题

15.3CQL算法是如何抑制Q值的

15.4实现CQL算法

15.4.1数据集介绍

15.4.2封装数据集

15.4.3定义算法模型

15.4.4执行训练

15.5小结

第16章MPC算法

16.1MPC算法简介

16.1.1假环境学习

16.1.2*优动作搜索

16.2实现MPC算法

16.2.1定义假环境

16.2.2定义动作函数

16.2.3训练假环境

16.2.4重写动作函数

16.2.5动作学习

16.3小结

第17章HER目标导向

17.1HER算法概述

17.1.1稀疏反馈的游戏环境

17.1.2放置假目标点

17.2HER算法实现

17.2.1游戏环境介绍

17.2.2定义算法模型

17.2.3定义数据池

17.2.4执行训练

17.3小结

框架篇

第18章SB3强化学习框架

18.1SB3简介

18.2快速上手

18.3模型的保存和加载

18.4多环境并行训练

18.5Callback类

18.6综合实例

18.7使用SB3 Contrib

18.8小结



展开全部

作者简介

李福林,一个在IT领域摸爬滚打十多年的老程序员、培训师,精通多种IT技术。分享了多部AI技术教程,受到了读者的广泛赞誉。现任职于阳狮集团,担任算法工程师。教学风格追求化繁为简,务实而不空谈,课程设计思路清晰,课程演绎说理透彻,对AI领域技术有自己独到的见解。


预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航