《强化学习:原理与Python实现》更新与勘误

(2021年10月第1版第7次印刷)

Gym 0.25版本更新了API,GitHub代码已相应更新。代码以GitHub上为准。

行数计算方法

本勘误文档中,行数计算“第i行”(i=0,1,2,)是从0开始计数的。小节标题、公式、内联代码、注意、本章要点记入行数,章标题、图、表、代码清单及它们的题注不计入行数。空行不计入行数。

第17页第6行

作者注: “轨道”又称为“轨迹”。本书中这两个词混用。

第22页图2-2b)中图注

vπ(𝘴)

改为

vπ(𝘴)

第29页正文第2行

γ<14β1α

改为

γ14β1α

第30页

作者注:用线性规划求解最优状态价值的详细证明可见《Markov Decision Processes: Discrete Stochastic Dynamic Programming》(Martin Puterman)的第6.9节。证明大致如下:当c(𝘴)为Markov决策过程的初始状态分布时,原问题和对偶问题的目标都是Markov决策过程的平均回合奖励,原问题的最优解是最优状态价值。对c(𝘴)做灵敏度分析可知,无论c(𝘴)取什么分布,对偶问题均有解(这利用到对偶问题的可行域就是带折扣的状态动作对组成的分布所在的空间),所以原问题的最优解都是不变的。也就是说,Markov决策过程的最优状态价值和初始状态分布无关。进一步,可以在原问题中放宽𝘴c(𝘴)=1这个限制,原问题的解依然不变,只是优化目标进行了放缩。

第48页3.5节

作者注:Gym 0.19版本将FrozenLake-v0改为FrozenLake-v1。

作者注:Gym 0.22删除了DiscreteEnv类,所以env.unwrapped.nS和env.unwrapped.nA不再可用。建议用env.observation_space.n替换env.unwrapped.nA,用env.action_space.n替换env.unwrapped.nA。

第66页4.3节

作者注:Gym 0.20版本将Blackjack-v0改为Blackjack-v1。

第74页正文第0行、第2行

monte_carlo_importance_resample

改为

monte_carlo_importance_sample

第91页算法5-13参数部分

参数:资格迹参数πβ

改为

参数:资格迹参数λβ

第92页算法5-14参数部分

参数:资格迹参数β

改为

参数:资格迹参数λβ

第105页算法6-5第2.1步

增加

初始化资格迹z0

第114页第5行

算法6-10

改为

算法6-9

第118页

作者注:

砖瓦编码是一种历史悠久的特征构造方法,可用于回归、分类等问题。目前学术界倾向于用神经网络代替砖瓦编码来构造特征。由于砖瓦编码和强化学习没有直接关联,本书没有用过多的篇幅介绍砖瓦编码。

实际使用砖瓦编码时,不需要精确计算砖瓦的数量,常随意的大致估计砖瓦的数量作为特征数。如果设置的特征数大于真实的砖瓦数量,那么有些特征永远不会取到,有些浪费;如果设置的特征数小于真实的砖瓦数量,那么有多个砖瓦需要共享特征,具体逻辑可以见代码清单6-3中“冲突处理”部分。这些浪费和冲突往往不会造成明显的性能损失。

第118页砖瓦数计算:每个大网格的网格宽度刚好是整个取值范围的1/8。所以,第0层大网格每个维度有8个大网格;第1~7层由于有偏移,每个维度需要有9个大网格才能覆盖整个取值范围。第117页图6-3b的情况略有不同:这个图中每个维度的取值范围不是大网格的长度的整数倍。所以有些层偏移后,不需要更多的大网格也可以覆盖整个取值范围。

第131页算法7-3第2.3步

2.3(初始化回报和权重)

改为

2.3(初始化回报)

第142页算法8.3第2.3.2步

作者注:这里的更新式子遵循了论文原文而没有考虑累积折扣。推导出现折扣是正确的;更新时考虑折扣也是正确和合理的。

第144页第18行

E𝘚t,𝘈tπ(θθ)[aπk(𝘚t,𝘈t)]

改为

E𝘚t,𝘈tπ(θθ)[aπ(θθk)(𝘚t,𝘈t)]

第161页第4~5行

作者注:“动作价值网络和策略网络往往采用矢量形式的输出”指的是动作空间是离散动作空间的情况。如果动作空间是连续动作空间,往往用Gaussian形式的策略,详见GitHub代码。包括SAC算法在内的使用策略梯度的算法采用Gaussian形式策略后,策略被限制为了单峰(unimodal)形式。如果需要策略具有多峰(multimodal)形式,可以使用混合Gaussian模型(Gaussian Mixture Model,GMM)。

第161页8.6节

作者注:这个案例的动作空间是离散的。同时,本章介绍的算法,包括但不限于PPO、SAC等算法,也可用于动作空间是连续空间的情况。

第180页9.3节

作者注:Gym 0.21版本将Pendulum-v0改为Pendulum-v1。

第188页10.1节

作者注:Gym 0.21版本修改了Atari游戏环境的安装方式。