展开全部

主编推荐语

一本帮助你快速上手强化学习并开始实践的入门书,从理论与实践维度对强化学习进行全面解释和演示。

内容简介

本书理论与实践相结合,系统阐述强化学习的基础知识,以及如何动手编写智能体以执行一系列实际任务。

通过阅读本书,读者将获得深层Q网络、策略梯度方法、连续控制问题以及高度可扩展的非梯度方法等主题领域的可行洞见,还将学会如何构建一个经过强化学习训练、价格低廉的真实硬件机器人,并通过一步步代码优化在短短30分钟的训练后解决Pong环境。

此外,本书还专门介绍了强化学习的新发展,包括离散优化(解决魔方问题)、多智能体方法、Microsoft的TextWorld环境、高级探索技术等。

目录

  • 版权信息
  • 译者序
  • 前言
  • 作者简介
  • 审校者简介
  • 第1章 什么是强化学习
  • 1.1 机器学习分类
  • 1.1.1 监督学习
  • 1.1.2 非监督学习
  • 1.1.3 强化学习
  • 1.2 强化学习的复杂性
  • 1.3 强化学习的形式
  • 1.3.1 奖励
  • 1.3.2 智能体
  • 1.3.3 环境
  • 1.3.4 动作
  • 1.3.5 观察
  • 1.4 强化学习的理论基础
  • 1.4.1 马尔可夫决策过程
  • 1.4.2 策略
  • 1.5 总结
  • 第2章 OpenAI Gym
  • 2.1 剖析智能体
  • 2.2 硬件和软件要求
  • 2.3 OpenAI Gym API
  • 2.3.1 动作空间
  • 2.3.2 观察空间
  • 2.3.3 环境
  • 2.3.4 创建环境
  • 2.3.5 车摆系统
  • 2.4 随机CartPole智能体
  • 2.5 Gym的额外功能:包装器和监控器
  • 2.5.1 包装器
  • 2.5.2 监控器
  • 2.6 总结
  • 第3章 使用PyTorch进行深度学习
  • 3.1 张量
  • 3.1.1 创建张量
  • 3.1.2 零维张量
  • 3.1.3 张量操作
  • 3.1.4 GPU张量
  • 3.2 梯度
  • 3.3 NN构建块
  • 3.4 自定义层
  • 3.5 最终黏合剂:损失函数和优化器
  • 3.5.1 损失函数
  • 3.5.2 优化器
  • 3.6 使用TensorBoard进行监控
  • 3.6.1 TensorBoard 101
  • 3.6.2 绘图
  • 3.7 示例:将GAN应用于Atari图像
  • 3.8 PyTorch Ignite
  • 3.9 总结
  • 第4章 交叉熵方法
  • 4.1 RL方法的分类
  • 4.2 交叉熵方法的实践
  • 4.3 交叉熵方法在CartPole中的应用
  • 4.4 交叉熵方法在FrozenLake中的应用
  • 4.5 交叉熵方法的理论背景
  • 4.6 总结
  • 第5章 表格学习和Bellman方程
  • 5.1 价值、状态和最优性
  • 5.2 最佳Bellman方程
  • 5.3 动作的价值
  • 5.4 价值迭代法
  • 5.5 价值迭代实践
  • 5.6 Q-learning在FrozenLake中的应用
  • 5.7 总结
  • 第6章 深度Q-network
  • 6.1 现实的价值迭代
  • 6.2 表格Q-learning
  • 6.3 深度Q-learning
  • 6.3.1 与环境交互
  • 6.3.2 SGD优化
  • 6.3.3 步骤之间的相关性
  • 6.3.4 马尔可夫性质
  • 6.3.5 DQN训练的最终形式
  • 6.4 DQN应用于Pong游戏
  • 6.4.1 包装器
  • 6.4.2 DQN模型
  • 6.4.3 训练
  • 6.4.4 运行和性能
  • 6.4.5 模型实战
  • 6.5 可以尝试的事情
  • 6.6 总结
  • 第7章 高级强化学习库
  • 7.1 为什么使用强化学习库
  • 7.2 PTAN库
  • 7.2.1 动作选择器
  • 7.2.2 智能体
  • 7.2.3 经验源
  • 7.2.4 经验回放缓冲区
  • 7.2.5 TargetNet类
  • 7.2.6 Ignite帮助类
  • 7.3 PTAN版本的CartPole解决方案
  • 7.4 其他强化学习库
  • 7.5 总结
  • 第8章 DQN扩展
  • 8.1 基础DQN
  • 8.1.1 通用库
  • 8.1.2 实现
  • 8.1.3 结果
  • 8.2 N步DQN
  • 8.2.1 实现
  • 8.2.2 结果
  • 8.3 Double DQN
  • 8.3.1 实现
  • 8.3.2 结果
  • 8.4 噪声网络
  • 8.4.1 实现
  • 8.4.2 结果
  • 8.5 带优先级的回放缓冲区
  • 8.5.1 实现
  • 8.5.2 结果
  • 8.6 Dueling DQN
  • 8.6.1 实现
  • 8.6.2 结果
  • 8.7 Categorical DQN
  • 8.7.1 实现
  • 8.7.2 结果
  • 8.8 组合所有方法
  • 8.9 总结
  • 第9章 加速强化学习训练的方法
  • 9.1 为什么速度很重要
  • 9.2 基线
  • 9.3 PyTorch中的计算图
  • 9.4 多个环境
  • 9.5 在不同进程中分别交互和训练
  • 9.6 调整包装器
  • 9.7 基准测试总结
  • 9.8 硬核CuLE
  • 9.9 总结
  • 第10章 使用强化学习进行股票交易
  • 10.1 交易
  • 10.2 数据
  • 10.3 问题陈述和关键决策
  • 10.4 交易环境
  • 10.5 模型
  • 10.6 训练代码
  • 10.7 结果
  • 10.7.1 前馈模型
  • 10.7.2 卷积模型
  • 10.8 可以尝试的事情
  • 10.9 总结
  • 第11章 策略梯度:一种替代方法
  • 11.1 价值与策略
  • 11.1.1 为什么需要策略
  • 11.1.2 策略表示
  • 11.1.3 策略梯度
  • 11.2 REINFORCE方法
  • 11.2.1 CartPole示例
  • 11.2.2 结果
  • 11.2.3 基于策略的方法与基于价值的方法
  • 11.3 REINFORCE的问题
  • 11.3.1 需要完整片段
  • 11.3.2 高梯度方差
  • 11.3.3 探索
  • 11.3.4 样本相关性
  • 11.4 用于CartPole的策略梯度方法
  • 11.4.1 实现
  • 11.4.2 结果
  • 11.5 用于Pong的策略梯度方法
  • 11.5.1 实现
  • 11.5.2 结果
  • 11.6 总结
  • 第12章 actor-critic方法
  • 12.1 减小方差
  • 12.2 CartPole的方差
  • 12.3 actor-critic
  • 12.4 在Pong中使用A2C
  • 12.5 在Pong中使用A2C的结果
  • 12.6 超参调优
  • 12.6.1 学习率
  • 12.6.2 熵的beta值
  • 12.6.3 环境数
  • 12.6.4 批大小
  • 12.7 总结
  • 第13章 A3C
  • 13.1 相关性和采样效率
  • 13.2 向A2C添加另一个A
  • 13.3 Python中的多重处理功能
  • 13.4 数据并行化的A3C
  • 13.4.1 实现
  • 13.4.2 结果
  • 13.5 梯度并行化的A3C
  • 13.5.1 实现
  • 13.5.2 结果
  • 13.6 总结
  • 第14章 使用强化学习训练聊天机器人
  • 14.1 聊天机器人概述
  • 14.2 训练聊天机器人
  • 14.3 深度NLP基础
  • 14.3.1 RNN
  • 14.3.2 词嵌入
  • 14.3.3 编码器–解码器架构
  • 14.4 seq2seq训练
  • 14.4.1 对数似然训练
  • 14.4.2 双语替换评测分数
  • 14.4.3 seq2seq中的强化学习
  • 14.4.4 自评序列训练
  • 14.5 聊天机器人示例
  • 14.5.1 示例的结构
  • 14.5.2 模块:cornell.py和data.py
  • 14.5.3 BLEU分数和utils.py
  • 14.5.4 模型
  • 14.6 数据集探索
  • 14.7 训练:交叉熵
  • 14.7.1 实现
  • 14.7.2 结果
  • 14.8 训练:SCST
  • 14.8.1 实现
  • 14.8.2 结果
  • 14.9 经过数据测试的模型
  • 14.10 Telegram机器人
  • 14.11 总结
  • 第15章 TextWorld环境
  • 15.1 文字冒险游戏
  • 15.2 环境
  • 15.2.1 安装
  • 15.2.2 游戏生成
  • 15.2.3 观察和动作空间
  • 15.2.4 额外的游戏信息
  • 15.3 基线DQN
  • 15.3.1 观察预处理
  • 15.3.2 embedding和编码器
  • 15.3.3 DQN模型和智能体
  • 15.3.4 训练代码
  • 15.3.5 训练结果
  • 15.4 命令生成模型
  • 15.4.1 实现
  • 15.4.2 预训练结果
  • 15.4.3 DQN训练代码
  • 15.4.4 DQN训练结果
  • 15.5 总结
  • 第16章 Web导航
  • 16.1 Web导航简介
  • 16.1.1 浏览器自动化和RL
  • 16.1.2 MiniWoB基准
  • 16.2 OpenAI Universe
  • 16.2.1 安装
  • 16.2.2 动作与观察
  • 16.2.3 创建环境
  • 16.2.4 MiniWoB的稳定性
  • 16.3 简单的单击方法
  • 16.3.1 网格动作
  • 16.3.2 示例概览
  • 16.3.3 模型
  • 16.3.4 训练代码
  • 16.3.5 启动容器
  • 16.3.6 训练过程
  • 16.3.7 检查学到的策略
  • 16.3.8 简单单击的问题
  • 16.4 人类演示
  • 16.4.1 录制人类演示
  • 16.4.2 录制的格式
  • 16.4.3 使用演示进行训练
  • 16.4.4 结果
  • 16.4.5 井字游戏问题
  • 16.5 添加文字描述
  • 16.5.1 实现
  • 16.5.2 结果
  • 16.6 可以尝试的事情
  • 16.7 总结
  • 第17章 连续动作空间
  • 17.1 为什么会有连续的空间
  • 17.1.1 动作空间
  • 17.1.2 环境
  • 17.2 A2C方法
  • 17.2.1 实现
  • 17.2.2 结果
  • 17.2.3 使用模型并录制视频
  • 17.3 确定性策略梯度
  • 17.3.1 探索
  • 17.3.2 实现
  • 17.3.3 结果
  • 17.3.4 视频录制
  • 17.4 分布的策略梯度
  • 17.4.1 架构
  • 17.4.2 实现
  • 17.4.3 结果
  • 17.4.4 视频录制
  • 17.5 可以尝试的事情
  • 17.6 总结
  • 第18章 机器人技术中的强化学习
  • 18.1 机器人与机器人学
  • 18.1.1 机器人的复杂性
  • 18.1.2 硬件概述
  • 18.1.3 平台
  • 18.1.4 传感器
  • 18.1.5 执行器
  • 18.1.6 框架
  • 18.2 第一个训练目标
  • 18.3 模拟器和模型
  • 18.3.1 模型定义文件
  • 18.3.2 机器人类
  • 18.4 DDPG训练和结果
  • 18.5 控制硬件
  • 18.5.1 MicroPython
  • 18.5.2 处理传感器
  • 18.5.3 驱动伺服器
  • 18.5.4 将模型转移至硬件上
  • 18.5.5 组合一切
  • 18.6 策略实验
  • 18.7 总结
  • 第19章 置信域:PPO、TRPO、ACKTR及SAC
  • 19.1 Roboschool
  • 19.2 A2C基线
  • 19.2.1 实现
  • 19.2.2 结果
  • 19.2.3 视频录制
  • 19.3 PPO
  • 19.3.1 实现
  • 19.3.2 结果
  • 19.4 TRPO
  • 19.4.1 实现
  • 19.4.2 结果
  • 19.5 ACKTR
  • 19.5.1 实现
  • 19.5.2 结果
  • 19.6 SAC
  • 19.6.1 实现
  • 19.6.2 结果
  • 19.7 总结
  • 第20章 强化学习中的黑盒优化
  • 20.1 黑盒方法
  • 20.2 进化策略
  • 20.2.1 将ES用在CartPole上
  • 20.2.2 将ES用在HalfCheetah上
  • 20.3 遗传算法
  • 20.3.1 将GA用在CartPole上
  • 20.3.2 GA优化
  • 20.3.3 将GA用在HalfCheetah上
  • 20.4 总结
  • 第21章 高级探索
  • 21.1 为什么探索很重要
  • 21.2 ε-greedy怎么了
  • 21.3 其他探索方式
  • 21.3.1 噪声网络
  • 21.3.2 基于计数的方法
  • 21.3.3 基于预测的方法
  • 21.4 MountainCar实验
  • 21.4.1 使用ε-greedy的DQN方法
  • 21.4.2 使用噪声网络的DQN方法
  • 21.4.3 使用状态计数的DQN方法
  • 21.4.4 近端策略优化方法
  • 21.4.5 使用噪声网络的PPO方法
  • 21.4.6 使用基于计数的探索的PPO方法
  • 21.4.7 使用网络蒸馏的PPO方法
  • 21.5 Atari实验
  • 21.5.1 使用ε-greedy的DQN方法
  • 21.5.2 经典的PPO方法
  • 21.5.3 使用网络蒸馏的PPO方法
  • 21.5.4 使用噪声网络的PPO方法
  • 21.6 总结
  • 第22章 超越无模型方法:想象力
  • 22.1 基于模型的方法
  • 22.1.1 基于模型与无模型
  • 22.1.2 基于模型的缺陷
  • 22.2 想象力增强型智能体
  • 22.2.1 EM
  • 22.2.2 展开策略
  • 22.2.3 展开编码器
  • 22.2.4 论文的结果
  • 22.3 将I2A用在Atari Breakout上
  • 22.3.1 基线A2C智能体
  • 22.3.2 EM训练
  • 22.3.3 想象力智能体
  • 22.4 实验结果
  • 22.4.1 基线智能体
  • 22.4.2 训练EM的权重
  • 22.4.3 训练I2A模型
  • 22.5 总结
  • 第23章 AlphaGo Zero
  • 23.1 棋盘游戏
  • 23.2 AlphaGo Zero方法
  • 23.2.1 总览
  • 23.2.2 MCTS
  • 23.2.3 自我对抗
  • 23.2.4 训练与评估
  • 23.3 四子连横棋机器人
  • 23.3.1 游戏模型
  • 23.3.2 实现MCTS
  • 23.3.3 模型
  • 23.3.4 训练
  • 23.3.5 测试与比较
  • 23.4 四子连横棋的结果
  • 23.5 总结
  • 第24章 离散优化中的强化学习
  • 24.1 强化学习的名声
  • 24.2 魔方和组合优化
  • 24.3 最佳性与上帝的数字
  • 24.4 魔方求解的方法
  • 24.4.1 数据表示
  • 24.4.2 动作
  • 24.4.3 状态
  • 24.5 训练过程
  • 24.5.1 NN架构
  • 24.5.2 训练
  • 24.6 模型应用
  • 24.7 论文结果
  • 24.8 代码概览
  • 24.8.1 魔方环境
  • 24.8.2 训练
  • 24.8.3 搜索过程
  • 24.9 实验结果
  • 24.9.1 2×2魔方
  • 24.9.2 3×3魔方
  • 24.10 进一步改进和实验
  • 24.11 总结
  • 第25章 多智能体强化学习
  • 25.1 多智能体RL的说明
  • 25.1.1 通信形式
  • 25.1.2 强化学习方法
  • 25.2 MAgent环境
  • 25.2.1 安装
  • 25.2.2 概述
  • 25.2.3 随机环境
  • 25.3 老虎的深度Q-network
  • 25.4 老虎的合作
  • 25.5 同时训练老虎和鹿
  • 25.6 相同actor之间的战斗
  • 25.7 总结
展开全部

评分及书评

4.3
3个评分
  • 用户头像
    给这本书评了
    3.0

    别怕走弯路,也别死守老本,多看几步棋,谁赢学谁,时间长了自己就是大神。像生物进化一样,在冒险探索和稳妥赚钱之间找平衡,靠一次次试错和优胜劣汰,练出一套能赢在未来的生存智慧。1. 强化学习的本质,是在时间的维度上自动学习最优决策,它把奖励作为唯一的老师,让智能体在试错中逼近最优策略。强化学习就是让 AI 自己摸着石头过河。它不管过程,只看最后拿了多少分,靠不断撞南墙、试错,慢慢学会怎么选才是最赚的。教小狗握手。它乱动、坐下、躺下,都不理它(没奖励)。直到它偶然抬起了爪子,马上给肉干(奖励)。反复几次,它就明白抬爪 = 肉干,这就是靠奖励当老师。刷短视频。系统不知道高老松喜欢啥,就随机推(试错)。高老松在一个猫视频上停留了很久(奖励信号)。系统记住了,下次多推猫,越推越准,这就是在时间流里学习高老松的喜好。2. 智能体不仅要利用已学到的知识,更要积极探索未知;只走熟悉的路,永远找不到更优的解。AI 不能光吃老本,也得没事去瞎逛一下。老是走熟路虽然稳,但只有去踩踩新坑,才可能发现那条发大财的捷径。高大松发现公司楼下有一家快餐店(已知路径),味道还行,天天吃。但为了不亏待自己,偶尔也要去旁边的小巷子里转转(探索),结果发现了更好吃的私房菜(更优解)。点外卖。高某松有一家常吃的麻辣烫(利用),但平台偶尔会塞给高某松一张新店的巨额优惠券(探索)。虽然新店可能难吃,但也有极小概率好吃到爆,不试就永远不知道。3.Bellman 方程告诉我们:最优策略不是一次性规划出来的,而是每一步都选择立即奖励 + 折扣后的长期奖励最大的那个动作。别总想着一步登天,高手下棋都是看当下这步走得爽不爽加上以后能捞多少好处。每一步都这么盘算,最后才能赢。打麻将。高大爷手里有一张五条,现在可以吃碰胡(立即奖励),但如果留着这张牌,下一轮有可能做成清一色(长期奖励)。Bellman 方程就是帮高大爷算:是现在胡个小牌爽一下,还是忍一手博个大满贯更划算?谈恋爱、存钱。高大松有一万块,今晚全花了吃大餐很爽(即时奖励),但存起来明年付首付买房(未来奖励)更值钱。这个方程教高大松如何在今朝有酒今朝醉和未来收益之间找平衡。4. 交叉熵方法虽简单,却揭示了强化学习最朴素的道理,从成功的经验中学习,不断提高精英的门槛,策略自然会越来越好。每次只抄学霸的作业,而且下次只抄考第一的那几个。标准越提越高,成绩自然就上去了。选秀节目。第一轮只要不是太差都能过;第二轮导演觉得刚才那批不行,只留唱跳俱佳的;第三轮门槛更高,只留有舞台魅力的。每一轮都在筛选精英,最后剩下的就是最强出道团。培育良种。种了一百棵玉米,长得最高的那 10 棵(精英)留下来做种子。下一代玉米只用这些种子种,长得矮的淘汰。这样一代代筛选下去,玉米自然越长越高。总之,强化学习模拟了生物进化的底层逻辑,没有上帝视角的蓝图,只有唯一的生存指标(奖励)。它通过大胆试错去发现新机会,用精明算计(Bellman 方程)权衡眼前与未来,再通过优胜劣汰(交叉熵)不断提纯策略,最终在时间的作用下,逼出一个在复杂环境里的最优解。

      转发
      评论

    出版方

    机械工业出版社有限公司

    机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。