Files
easy-rl/docs/errata.md
2023-07-12 20:53:48 +08:00

265 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 纸质版勘误修订表
**如何使用勘误?首先找到你的书的印次,接下来对着下表索引印次,该印次之后所有的勘误都是你的书中所要注意的勘误,印次前的所有勘误在当印次和之后印次均已印刷修正。为方便读者,所有修订内容都列举在此。其中部分修订是为了更便于读者理解,并非原文有误。**
## 第1版第6次印刷2023.06
* 前勒口作者简介:
* 王琦:
* 上海交通大学计算机系人工智能教育部重点实验室博士生 → 上海交通大学人工智能教育部重点实验室博士生
* 21页倒数第一段第2行**多臂赌博机multi-armed bandit**→ **多臂赌博机multi-armed banditMAB**
* 137页第一段第1行虽然式 (5.19) 看起来有点儿复杂,但实现起来是比较简单的 → 式 (5.19) 看起来复杂,但其实现比较简单
* 156页第二段第1行第一个好处是→ 第一个好处是提高采样效率。
* 156页第二段第6行第二个好处是→ 第二个好处是增加样本多样性。
## 第1版第5次印刷2023.01
* 前勒口作者简介:
* 王琦:
* 中国科学院大学硕士 → 上海交通大学计算机系人工智能教育部重点实验室博士生,中国科学院大学硕士
* 曾获中国大学生计算机设计大赛二等奖 → 曾获“中国光谷·华为杯”第十九届中国研究生数学建模竞赛二等奖、中国大学生计算机设计大赛二等奖
* 杨毅远:
* 整体替换为牛津大学计算机系博士生清华大学硕士Datawhale成员。主要研究方向为时空数据挖掘、智能传感系统、深度学习。曾获全国大学生智能汽车竞赛总冠军、中国国家奖学金、北京市优秀毕业生、克拉伦登学者等荣誉发表SCI/EI论文多篇。
* 10页图1.11上面一段第2行图1.12左边的智能体 → 图1.11左边的智能体
* 23页图1.23下面一段:我们可以通过 pip 来安装 Gym 库。 → 我们可以通过 pip 来安装 Gym 库,由于 Gym 库 0.26.0 及其之后的版本对之前的代码不兼容,所以我们安装 0.26.0 之前的 Gym比如 0.25.2。
```bash
pip install gym==0.25.2
```
* 31页第三段开发exploitation→ 利用exploitation
* 35页的图2.2 和 41页的图2.5a添加从 $s_1$ 到 $s_4$ 的箭头,替换成下图:
![](res/Markov_chain.png ':size=350')
* 38页式(2.7)下面一段第1行$s^{\prime}$ 可以看成未来的所有状态 → $s^{\prime}$ 可以看成未来的某个状态
* 38页式(2.7)下面一段第2行未来某一个状态的价值 → 未来某个状态的价值
* 52页第二段修改为
    举一个例子来说明预测与控制的区别。首先是预测问题。在图 2.16a的方格中智能体可以采取上、下、左、右4个动作。如果采取的动作让智能体走出网格则其会在原位置不动并且得到 -1 的奖励。除了将智能体从 $\mathrm{A}$ 和 $\mathrm{B}$ 移走的动作外,其他动作的奖励均为 0。智能体在 $\mathrm{A}$ 采取任意一个动作,都会移动到 $\mathrm{A}^{\prime}$ ,并且得到 +10 的奖励。智能体在 $\mathrm{B}$ 采取任意一个动作,都会移动到 $\mathrm{B}^{\prime}$ ,并且得到 +5 的奖励。如图 2.16b所示现在我们给定一个策略在任何状态中智能体的动作模式都是随机的也就是上、下、左、右的概率均为 0.25。预测问题要做的就是,求出在这种决策模式下的价值函数。图 2.16 c是折扣因子为 $\gamma=0.9$ 时对应的价值函数。
* 55页第2段的第1行$p(2 \mid 6, \mathrm{u})=2$ → $p(2 \mid 6, \mathrm{u})=1$
* 96页删除图3.33上面一段文字事实上Q 学习算法被提出的时间更早Sarsa 算法是 Q 学习算法的改进。
* 96页删除图3.33上面一段文字的参考文献:邱锡鹏. 神经网络与深度学习 [M]. 北京:机械工业出版社, 2020.
* 105页删除参考文献[5] 邱锡鹏. 神经网络与深度学习 [M]. 北京:机械工业出版社, 2020.
* 116页图4.10替换成下图:
![](res/4-10.png ':size=550')
* 116页图4.10的标题替换为:理想情况下动作概率的变化
* 116页图4.10下面一段的第5行我们可能只采样到动作b或者只采样到动作c → 我们可能只采样到动作b和动作c
* 116页图4.11替换成下图:
![](res/4-11.png ':size=550')
* 116页图4.11的标题替换为:实际情况下动作概率的变化
* 121页图4.14上面一段的第4行每个动作计算梯度 $\nabla \ln \pi\left(a_{t} \mid s_{t}, \theta\right)$ → 每个动作计算梯度 $\nabla \log \pi\left(a_{t} \mid s_{t}, \theta\right)$
* 121页图4.14上面一段的倒数第1行$\nabla \ln \pi\left(a_{t} \mid s_{t}, \theta\right)$ → $\nabla \log \pi\left(a_{t} \mid s_{t}, \theta\right)$
* 121页图4.14替换成下图:
![](res/4-14.png ':size=550')
* 123页倒数第2段的第2行$\ln \pi\left(a_{t} \mid s_{t}, \theta\right)$ → $\log \pi\left(a_{t} \mid s_{t}, \theta\right)$
* 124页图4.19替换成下图:
![](res/4-19.png ':size=550')
* 127页5.1节的标题:从同策略到异策略 → 重要性采样
* 131页式(5.8)$\nabla \log p_\theta\left(a_t^n \mid s_t^n\right)$ → $\nabla \log p_\theta\left(a_t \mid s_t\right)$
* 131页式(5.8)下面一段的倒数第2行$\nabla \log p_\theta\left(a_t^n \mid s_t^n\right)$ → $\nabla \log p_\theta\left(a_t \mid s_t\right)$
* 131页式(5.9)$\nabla \log p_\theta\left(a_t^n \mid s_t^n\right)$ → $\nabla \log p_\theta\left(a_t \mid s_t\right)$
* 132页式(5.11) 和 式(5.12)$\nabla \log p_\theta\left(a_t^n \mid s_t^n\right)$ → $\nabla \log p_\theta\left(a_t \mid s_t\right)$
* 133页5.2节第二段的第1行到第3行注意由于在 PPO 中 $\theta'$ 是 $\theta_{\text{old}}$,即行为策略也是 $\pi_{\theta}$,因此 PPO 是同策略的算法。如式(5.15) 所示PPO 实际上做的事情就是这样,在异策略的方法里优化目标函数 $J^{\theta^{\prime}}(\theta)$。→ 如式(5.15)所示PPO 需要优化目标函数 $J^{\theta^{\prime}}(\theta)$。
* 133页5.2节第二段的倒数第1行加入以下内容**注意,虽然 PPO 的优化目标涉及到了重要性采样,但其只用到了上一轮策略 $\theta^{\prime}$ 的数据。PPO 目标函数中加入了 KL 散度的约束,行为策略 $\theta^{\prime}$ 和目标策略 $\theta$ 非常接近PPO 的行为策略和目标策略可认为是同一个策略,因此 PPO 是同策略算法。**
* 134页式(5.16)下面一段第2行最大化式 (5.16) → 最大化式 (5.15)
* 165页第一段的第4行到第5行归一化的向量为 $[3,-1,2]^{\mathrm{T}}$ → 归一化的向量为 $[3,-1,-2]^{\mathrm{T}}$
* 165页第二段的第1行向量 $[3,-1,2]^{\mathrm{T}}$ 中的每个元素 → 向量 $[3,-1,-2]^{\mathrm{T}}$ 中的每个元素
* 189页图9.4替换成下图:
![](res/9-4.png ':size=550')
* 203页倒数第二段的第一行clipped dobule Q-learning → clipped double Q-learning
## 第1版第4次印刷2022.11
## 第1版第3次印刷2022.07
前勒口作者简介:
* 王琦:
* 中国科学院大学硕士在读 → 中国科学院大学硕士
* 杨毅远:清华大学硕士在读 → 清华大学硕士
* 江季:北京大学硕士在读 → 北京大学硕士
## 第1版第2次印刷2022.06
* 1页图1.1删除参考文献SUTTON R S, BARTO A G. Reinforcement learning: An introduction (second edition)[M]. London: The MIT Press, 2018
* 7页的图1.9和8页的图1.10加参考文献Sergey Levine的课程“Deep Reinforcement Learning”
* 19页图1.19删除参考文献David Silver 的课程“UCL Course on RL”
* 24页第一段下面的代码下面加入注解
> 上面这段代码只是示例其目的是让读者了解强化学习算法代码实现的框架并非完整代码load_agent 函数并未定义,所以运行这段代码会报错。
* 33页图2.1删除参考文献SUTTON R S, BARTO A G. Reinforcement learning: An introduction(second edition)[M]. London:The MIT Press, 2018
* 36页式(2.4)上面一段第2行和第3行**回报return**是指把奖励进行折扣后所获得的奖励。回报可以定义为奖励的逐步叠加,即 → **回报return**可以定义为奖励的逐步叠加,假设时刻$t$后的奖励序列为$r_{t+1},r_{t+2},r_{t+3},\cdots$,则回报为
* 36页式(2.4)下面一段第1行这里有一个折扣因子→ 其中,$T$是最终时刻,$\gamma$ 是折扣因子,
* 100页第2段的第2行0、1、2、3 这 4 个数对应上、下、左、右 → 0、1、2、3 这 4 个数对应上、右、下、左
* 108页图4.4替换成下图:
![](res/4-4.png ':size=550')
* 151页第2段的倒数第1行均方误差mean square error→ 均方误差mean square errorMSE
* 201页第3段的倒数第2行均方误差mean squared errorMSE→ 均方误差
* 223页第1段的第4行删除参考文献周志华. 机器学习 [M]. 北京:清华大学出版社, 2016
* 241页第1段的第3行和第4行均方误差mean square errorMSE→ 均方误差
## 第1版第1次印刷2022.03
* 2页2.1.2节的标题:马尔可夫过程/马尔可夫链 → 马尔可夫链
* 17页第一段的倒数第4行策略梯度 → 策略梯度policy gradientPG
* 34页2.1.2节的标题:马尔可夫过程/马尔可夫链 → 马尔可夫链
* 34页2.1.2节的第2段的第1行也称为**马尔可夫链Markov chain**。 → 也称为**马尔可夫链Markov chain**。马尔可夫链是最简单的马尔可夫过程,其状态是有限的。
* 35页的图2.2 和 41页的图2.5a替换成下图
![](res/Markov_chain.png ':size=350')
* 47页2.3.5节的第3行称为备份图backup diagram → 称为备份图backup diagram或回溯图
* 61页2.3.12节的第1小节的第2段的第1行$\pi(s|a)$ → $\pi(a|s)$
* 62页式(2.55) 前第2行$H$ 是迭代次数 → $H$ 是让 $V(s)$ 收敛所需的迭代次数
* 62页式(2.57) 改为
$$
\pi(s)=\underset{a}{\arg \max } \left[R(s, a)+\gamma \sum_{s^{\prime} \in S} p\left(s^{\prime} \mid s, a\right) V_{H+1}\left(s^{\prime}\right)\right]
$$
* 70页第一段修改为
    策略最简单的表示是查找表look-up table即表格型策略tabular policy。使用查找表的强化学习方法称为**表格型方法tabular method**如蒙特卡洛、Q学习和Sarsa。本章通过最简单的表格型方法来讲解如何使用基于价值的方法求解强化学习问题。
* 76页式(3.1) 中 $G$ 和 $r$ 后面的数字改为下标,即
$$
\begin{array}{l}
G_{13}=0 \\
G_{12}=r_{13}+\gamma G_{13}=-1+0.6 \times 0=-1 \\
G_{11}=r_{12}+\gamma G_{12}=-1+0.6 \times(-1)=-1.6 \\
G_{10}=r_{11}+\gamma G_{11}=-1+0.6 \times(-1.6)=-1.96 \\
G_9=r_{10}+\gamma G_{10}=-1+0.6 \times(-1.96)=-2.176 \approx-2.18 \\
G_8=r_9+\gamma G_9=-1+0.6 \times(-2.176)=-2.3056 \approx-2.3
\end{array}
$$
* 89页图3.25的倒数第4行如果$(s_t,a_t)$没有出现 → 如果$(s_t,a_t)$ 出现
* 101页中间一段下面的代码和102页最上面的代码的缩进有问题改为
```python
rewards = []
ma_rewards = [] # 滑动平均奖励
for i_ep in range(cfg.train_eps):
ep_reward = 0 # 记录每个回合的奖励
state = env.reset() # 重置环境, 重新开始(开始一个新的回合)
while True:
action = agent.choose_action(state) # 根据算法选择一个动作
next_state, reward, done, _ = env.step(action) # 与环境进行一次动作交互
agent.update(state, action, reward, next_state, done) # Q学习算法更新
state = next_state # 存储上一个观察值
ep_reward += reward
if done:
break
rewards.append(ep_reward)
if ma_rewards:
ma_rewards.append(ma_rewards[-1]*0.9+ep_reward*0.1)
else:
ma_rewards.append(ep_reward)
```
* 103页图3.37上面一段:具体可以查看 GitHub 上的源码 → 具体可以查看本书配套代码
* 106页4.1节上面添加以下文字:
    策略梯度算法是基于策略的方法,其对策略进行了参数化。假设参数为 $\theta$ 的策略为 $\pi_{\theta}$,该策略为随机性策略,其输入某个状态,输出一个动作的概率分布。策略梯度算法不需要在动作空间中最大化价值,因此较为适合解决具有高维或者连续动作空间的问题。
* 140页6.1节上面一段的第1行深度 Q 网络Deep Q-networkDQN→ 深度 Q 网络deep Q-networkDQN
* 140页6.1节上面添加以下文字:
    深度 Q 网络算法的核心是维护 Q 函数并使用其进行决策。$Q_{\pi}(s,a)$ 为在该策略 $\pi$ 下的动作价值函数,每次到达一个状态 $s_t$ 之后,遍历整个动作空间,使用让 $Q_{\pi}(s,a)$ 最大的动作作为策略:
$$
a_{t}=\underset{a}{\arg \max } ~Q_{\pi}\left(s_{t}, a\right) \tag{6.2}
$$
    深度 Q 网络采用贝尔曼方程来迭代更新 $Q_{\pi}(s,a)$
$$
Q_{\pi}\left(s_{t}, a_{t}\right) \leftarrow Q_{\pi}\left(s_{t}, a_{t}\right)+\alpha\left(r_{t}+\gamma \max _{a} Q_{\pi}\left(s_{t+1}, a\right)-Q_{\pi}\left(s_{t}, a_{t}\right)\right) \tag{6.3}
$$
    通常在简单任务上使用全连接神经网络fully connected neural network来拟合 $Q_{\pi}$,但是在较为复杂的任务上(如玩雅达利游戏),会使用卷积神经网络来拟合从图像到价值函数的映射。由于深度 Q 网络的这种表达形式只能处理有限个动作值,因此其通常用于处理离散动作空间的任务。
* 140页后的公式编号需要进行更新。
* 145页式(6.6) 下面一段的第1行所以状态 $s_b$ 的奖励等于 → 所以状态 $s_a$ 的奖励等于
* 149页式(6.15) 改为
$$
\begin{aligned}
V^{\pi}(s) &\le Q^{\pi}(s,\pi'(s)) \\
&=E\left[r_{t}+V^{\pi}\left(s_{t+1}\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right]\\
&\le E\left[r_{t}+Q^{\pi}\left(s_{t+1}, \pi^{\prime}\left(s_{t+1}\right)\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\
&=E\left[r_{t}+r_{t+1}+V^{\pi}\left(s_{t+2}\right) |s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\
& \le E\left[r_{t}+r_{t+1}+Q^{\pi}\left(s_{t+2},\pi'(s_{t+2}\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\
& = E\left[r_{t}+r_{t+1}+r_{t+2}+V^{\pi}\left(s_{t+3}\right) |s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\
& \le \cdots\\
& \le E\left[r_{t}+r_{t+1}+r_{t+2}+\cdots | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\
& = V^{\pi'}(s)
\end{aligned}
$$
* 154页6.5节第1段的第5行每一笔数据就是记得说我们之前 → 每一笔数据是一个四元组(状态、动作、奖励、下一状态),即我们之前
* 156页6.6节第1段的第2行一开始目标 Q 网络 → 一开始目标网络 $\hat{Q}$
* 156页式(6.22) 下面一段的第1行在状态 $s_{i+1}$ 会采取的动作 $a$ 就是可以让 Q → 在状态 $s_{i+1}$ 会采取的动作 $a$ 就是可以让 $\hat{Q}$
* 176页第1行全连接网络 → 全连接神经网络
* 176页第1行下面的代码块初始化 Q 网络,为全连接网络 → 初始化 Q 网络为全连接神经网络
* 187页图9.2的标题:深度 Q 网络 → 深度 Q 网络的两种评论员
* 187页9.3节的标题:演员-评论员算法 → 优势演员-评论员算法
* 187页倒数第1行$Q_{\pi_{\theta}}\left(s_{t}^{n}, a_{t}^{n}\right)-V_{\pi_{\theta}}\left(s_{t}^{n}\right)$。→ 优势函数$A^{\theta}\left(s^{n}_{t}, a^{n}_{t}\right)$,即 $Q_{\pi_{\theta}}\left(s_{t}^{n}, a_{t}^{n}\right)-V_{\pi_{\theta}}\left(s_{t}^{n}\right)$。因此该算法称为优势演员-评论员算法。
* 188页图9.3的标题:演员-评论员算法 → 优势演员-评论员算法
* 188页删除9.4节的标题,目录对应的部分也需要修改
* 188页9.4节的第一段的第1行原始的演员-评论员算法 → 原始的优势演员-评论员算法
* 188页式(9.5)的上面一行:可得 → 可得时序差分误差
* 189页删除第4行到第5行的文字因为 $r_{t}^{n}+V_{\pi}\left(s_{t+1}^{n}\right)-V_{\pi}\left(s_{t}^{n}\right)$ 被称为**优势函数**,所以该算法被称为优势演员-评论员算法。
* 190页9.5节第2段的第3行也是不好实现的。我们可以实现优势演员-评论员算法就可以。 → 不好实现异步优势演员-评论员算法,但可以实现优势演员-评论员算法。
* 191页第4和第5行要用梯度去更新参数......就把梯度传 → 要用梯度去更新全局网络的参数。每个进程算出梯度以后,要把梯度传
* 191页图9.6的上面一段的倒数第1行变成 $\theta_2$了 → 变成$\theta_2$ 了(其他进程也会更新模型)
* 191页图9.6的上面一段的末尾添加文字虽然A3C看起来属于异策略算法但它其实是一种同策略算法。因为A3C的演员和评论员只使用当前策略采样的数据来计算梯度。因此A3C不存储历史数据其主要通过平行探索parallel exploration来保持训练的稳定性。
* 191页图9.6替换成下图:
![](res/A3C.png ':size=450')
* 191页图9.6加参考文献Arthur Juliani的文章“Simple Reinforcement Learning with Tensorflow Part 8: Asynchronous Actor-Critic Agents (A3C)”
* 195页9.7节的第1段的第1行生产对抗网络 → 生成对抗网络
* 200页第6行它的目标是要让每一场表演都获得观众尽可能多的欢呼声与掌声也就是要最大化未来的总奖励 → 评论员的最终目标是让演员的表演获得观众尽可能多的欢呼声和掌声,从而最大化未来的总收益
* 201页图10.7的上面一段的倒数第1行均方差 → 均方误差mean squared errorMSE
* 201页图10.7的下面一段的第3行之间的一个均方差 → 之间的均方误差
* 202页图10.8的下面一段的第4行时间相关的 OU 噪声 → 时间相关的奥恩斯坦-乌伦贝克Ornstein-UhlenbeckOU噪声
* 203页式(10.1)上面一段的第2行均方差 → 均方误差
* 207页10.4.3节的标题Ornstein-Uhlenbeck 噪声 → OU 噪声
* 207页10.4.3节的第1段的第1行奥恩斯坦-乌伦贝克Ornstein-UhlenbeckOU噪声 → OU 噪声
* 229页第2行很强的序列 → 很长的序列
* 242页13.4.3节上面一段的第1行均方差损失 → 均方误差损失