第1章 需求分析\t1
1.1 需求分析:勿做DRL铁锤人\t1
1.2 一问“是不是”\t2
1.2.1 Agent和环境定义\t2
1.2.2 马尔可夫决策过程和强化学习\t3
1.3 二问“值不值”\t5
1.3.1 试试规则和启发式搜索\t5
1.3.2 别忘了传统强化学习\t7
1.3.3 使用DRL的理由\t7
1.4 三问“能不能”\t9
1.4.1 场景固定:两个分布一致\t9
1.4.2 数据廉价:多、快、好、费\t13
1.5 四问“边界在哪里”\t16
1.6 本章小结\t18
参考文献\t19
第2章 动作空间设计\t23
2.1 动作空间设计:这里大有可为\t23
2.1.1 被忽视的价值\t23
2.1.2 动作空间的常见类型\t24
2.1.3 动作空间设计的基本原则\t26
2.2 动作空间的完备性\t26
2.2.1 功能完备\t27
2.2.2 时效完备\t29
2.3 动作空间的高效性\t30
2.3.1 化整为零:以精度换效率\t31
2.3.2 有机组合:尺度很重要\t33
2.4 动作空间的合法性\t35
2.4.1 非法动作屏蔽机制\t36
2.4.2 Agent的知情权\t37
2.5 本章小结\t39
参考文献\t40
第3章 状态空间设计\t43
3.1 状态空间设计:特征工程的诱惑\t43
3.2 状态空间设计的两种常见误区\t44
3.2.1 过分依赖端到端特征学习\t44
3.2.2 极致特征工程\t44
3.3 与动作空间和回报函数的协同设计\t45
3.3.1 与动作空间尺度一致\t45
3.3.2 以回报函数为中心\t46
3.4 状态空间设计的四个步骤\t47
3.4.1 任务分析\t47
3.4.2 相关信息筛选\t49
3.4.3 泛化性考量\t53
3.4.4 效果验证\t58
3.5 本章小结\t61
参考文献\t62
第4章 回报函数设计\t64
4.1 回报函数设计:面向强化学习的编程\t64
4.2 稀疏回报问题\t65
4.2.1 孤独无援的主线回报\t65
4.2.2 稀疏回报问题的本质\t66
4.3 辅助回报\t67
4.3.1 子目标回报\t67
4.3.2 塑形回报\t70
4.3.3 内驱回报\t76
4.3.4 回报取值的注意事项\t77
4.4 回报函数设计的常见陷阱\t78
4.4.1 鲁莽\t79
4.4.2 贪婪\t80
4.4.3 懦弱\t82
4.5 最优回报问题\t83
4.6 基于学习的回报函数\t84
4.6.1 经典方法\t84
4.6.2 前沿方法\t85
4.7 本章小结\t87
参考文献\t88
第5章 算法选择\t92
5.1 算法选择:拿来主义和改良主义\t92
5.1.1 DRL算法的发展脉络\t92
5.1.2 一筛、二比、三改良\t94
5.1.3 从独当一面到众星捧月\t96
5.2 牢记经典勿忘本\t97
5.2.1 DQN\t98
5.2.2 DDPG\t99
5.2.3 A3C\t102
5.3 关注SOTA算法别留恋\t105
5.3.1 TD3\t105
5.3.2 SAC\t107
5.3.3 PPO\t110
5.4 其他算法\t112
5.5 本章小结\t113
参考文献\t113
第6章 训练调试\t119
6.1 训练调试:此事要躬行\t119
6.2 训练前的准备工作\t120
6.2.1 制定训练方案\t120
6.2.2 选择网络结构\t124
6.2.3 随机漫步\t128
6.2.4 数据预处理\t129
6.3 训练进行时\t131
6.3.1 反脆弱:拥抱不确定性\t131
6.3.2 调节超参数\t134
6.3.3 监控训练状态\t143
6.4 给初学者的建议\t146
6.5 本章小结\t148
参考文献\t149
第7章 性能冲刺\t154
7.1 性能冲刺:为DRL注入强心剂\t154
7.2 课程学习\t155
7.2.1 源任务及其分类\t155
7.2.2 应用方式\t157
7.3 额外监督信号\t162
7.3.1 有监督预训练\t163
7.3.2 辅助任务\t164
7.4 进化策略\t169
7.4.1 基本原理\t169
7.4.2 关键细节\t170
7.4.3 应用方式\t174
7.5 本章小结\t175
参考文献\t176