前言
致谢
常用数学符号
主要算法列表
第1章 概述1
1.1 强化学习的历史1
1.2 强化学习的基本概念2
1.3 章节组织6
1.4 编程环境与代码资源6
第2章 从一个示例到马尔可夫决策过程7
2.1 马尔可夫过程7
2.2 马尔可夫奖励过程9
2.3 马尔可夫决策过程13
2.4 编程实践:学生马尔可夫决策示例20
2.4.1 收获和价值的计算20
2.4.2 验证贝尔曼方程22
第3章 动态规划寻找最优策略29
3.1 策略评估29
3.2 策略迭代32
3.3 价值迭代33
3.4 异步动态规划算法36
3.5 编程实践:动态规划求解小型格子世界最优策略37
3.5.1 小型格子世界MDP建模37
3.5.2 策略评估40
3.5.3 策略迭代41
3.5.4 价值迭代41
第4章 不基于模型的预测43
4.1 蒙特卡罗强化学习43
4.2 时序差分强化学习45
4.3 n步时序差分学习50
4.4 编程实践:蒙特卡罗学习评估21点游戏的玩家策略54
4.4.1 21点游戏规则54
4.4.2 将21点游戏建模为强化学习问题55
4.4.3 游戏场景的搭建55
4.4.4 生成对局数据64
4.4.5 策略评估64
第5章 无模型的控制67
5.1 行为价值函数的重要性67
5.2 ?贪婪策略68
5.3 同策略蒙特卡罗控制69
5.4 同策略时序差分控制70
5.4.1 Sarsa算法70
5.4.2 Sarsa(λ)算法73
5.4.3 比较Sarsa和Sarsa(λ)74
5.5 异策略Q学习算法76
5.6 编程实践:蒙特卡罗学习求解21点游戏的最优策略78
5.7 编程实践:构建基于gym的有风的格子世界及个体81
5.7.1 gym库简介81
5.7.2 状态序列的管理83
5.7.3 个体基类的编写84
5.8 编程实践:各类学习算法的实现及与有风的格子世界的交互88
5.8.1 Sarsa算法89
5.8.2 Sarsa(λ)算法90
5.8.3 Q学习算法91
第6章 价值函数的近似表示93
6.1 价值近似的意义93
6.2 目标函数与梯度下降95
6.2.1 目标函数95
6.2.2 梯度和梯度下降97
6.3 常用的近似价值函数100
6.3.1 线性近似101
6.3.2 神经网络101
6.3.3 卷积神经网络近似104
6.4 DQN算法108
6.5 编程实践:基于PyTorch实现DQN求解PuckWorld问题109
6.5.1 基于神经网络的近似价值函数110
6.5.2 实现DQN求解PuckWorld问题113
第7章 基于策略梯度的深度强化学习117
7.1 基于策略学习的意义117
7.2 策略目标函数119
7.3 Actor-Critic算法121
7.4 深度确定性策略梯度算法124
7.5 编程实践:DDPG算法实现125
7.5.1 连续行为空间的PuckWorld环境125
7.5.2 Actor-Critic网络的实现127
7.5.3 确定性策略下探索的实现130
7.5.4 DDPG算法的实现130
7.5.5 DDPG算法在PuckWorld环境中的表现135
第8章 基于模型的学习和规划137
8.1 环境的模型137
8.2 整合学习与规划——Dyna算法139
8.3 基于模拟的搜索140
8.3.1 简单蒙特卡罗搜索140
8.3.2 蒙特卡罗树搜索141
第9章 探索与利用143
9.1 多臂游戏机143
9.2 常用的探索方法145
9.2.1 衰减的?贪婪探索145
9.2.2 不确定行为优先探索146
9.2.3 基于信息价值的探索149
第10章 Alpha Zero算法实战151
10.1 自博弈中的蒙特卡罗树搜索154
10.2 模型评估中的蒙特卡罗搜索156
10.3 策略价值网络结构及策略提升160
10.4 编程实践:Alpha Zero算法在五子棋上的实现161
10.4.1 从零开始搭建棋盘环境161
10.4.2 搭建两种MCTS以实现Alpha
Zero自博弈与模型评估168
10.4.3 搭建策略价值网络并进行策略提升177
10.4.4 训练自己的Alpha Zero
模型182
参考文献184