Files
easy-rl/docs/errata.md
2025-02-09 16:20:59 +08:00

379 lines
28 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版第9次印刷2024.01
* 17页第一段倒数第4行有 Q 学习Q-learning、Sarsa 等 → 有 Q 学习Q-learning、Sarsa 、深度Q网络deep Q-networkDQN
* 17页第一段倒数第3行价值评估 → 价值函数
* 25页第一段倒数第2行游戏就结束了我们就输了。 → 游戏就结束了。
* 67页表 2.1的第2行第2列贝尔曼方程 → 贝尔曼期望方程
* 135页第一段1~2行我们来看一下 **PPO1** 算法,即近端策略优化惩罚算法。它先初始化一个策略的参数 $\theta^{0}$。在每一个迭代中 → 我们先看一下近端策略优化惩罚算法,其先初始化一个策略的参数 $\theta^{0}$,在每一个迭代中
* 135页第二段第2行这里会遇到一个问题就即 $\beta$ 要设置为多少?→ 这里会有一个问题:$\beta$ 要设置为多少。
* 135页倒数第一段如果我们觉得计算 KL 散度很复杂,那么还有一个 PPO2 算法PPO2 即近端策略优化裁剪算法。→ 如果我们觉得计算 KL 散度很复杂,可以使用近端策略优化裁剪算法。
* 136页式(5.19) 改为:
$$
\begin{aligned}
J_{\mathrm{PPO}}^{\theta^k}(\theta) \approx \sum_{\left(s_t, a_t\right)} \min & \left(\frac{p_\theta\left(a_t \mid s_t\right)}{p_{\theta^k}\left(a_t \mid s_t\right)} A^{\theta^k}\left(s_t, a_t\right),\right. \\
& \left.\operatorname{clip}\left(\frac{p_\theta\left(a_t \mid s_t\right)}{p_{\theta^k}\left(a_t \mid s_t\right)}, 1-\varepsilon, 1+\varepsilon\right) A^{\theta^k}\left(s_t, a_t\right)\right)
\end{aligned}
\tag{5.19}
$$
* 136页倒数第2段如果介于 $1+\varepsilon \sim 1-\varepsilon$ → 如果介于 $1-\varepsilon \sim 1+\varepsilon$
* 140页第一段最前面加上本章介绍基于价值的典型强化学习算法——**深度Q网络deep Q-networkDQN**。
* 140页第三段第一行深度 Q 网络deep Q-networkDQN→ 深度 Q 网络。
* 165页第一段第2行归一化normalization。归一化的过程 → 零均值化。零均值化的过程
* 165页第一段第4行归一化 → 零均值化
* 165页第二段第2行归一化 → 零均值化
* 165页第二段第3行归一化 → 零均值化
## 第1版第8次印刷2023.11
* 封面(后)推荐辞:李宏毅老师职称改为:台湾大学教授
* 推荐辞:李宏毅老师职称改为:台湾大学教授
* 主要符号表在 $r$ 后面添加 4 行:
* $\mathcal{S}$ 所有非终止状态的集合
* $\mathcal{S}^{+}$ 所有状态的集合
* $\mathcal{A}(s)$ 在状态 $s$ 可执行动作的集合
* $\mathcal{R}$ 所有可能奖励的集合
* 前勒口作者简介:
* 王琦:
* 主要研究方向为深度学习、数据挖掘 → 主要研究方向为强化学习、计算机视觉
* 36页式(2.4) 改为:
$$
G_t=r_{t+1}+r_{t+2}+ r_{t+3}+ r_{t+4}+\cdots+ r_T \tag{2.4}
$$
* 36页式(2.4) 以下部分改为:其中,$T$ 是最终时刻。对于持续性任务(比如长期运行的机器人),$T=\infty$。如果使用式 (2.4) 的定义,当每个时刻获得的都是正奖励时,回报会趋于无穷。因此,我们需要引入**折扣回报discounted return**
$$
G_t=r_{t+1}+\gamma r_{t+2}+\gamma^2 r_{t+3}+\gamma^3 r_{t+4}+\cdots \tag{2.5}
$$
其中,$\gamma$ 是折扣因子,越往后得到的奖励,折扣越多。这说明我们更希望得到现有的奖励,对未来的奖励要打折扣。当我们有了回报之后,就可以定义状态的价值了,就是**状态价值函数state-value function**。对于马尔可夫奖励过程,状态价值函数被定义成回报的期望,即
$$
\begin{aligned}
V^t(s) & =\mathbb{E}\left[G_t \mid s_t=s\right] \\
& =\mathbb{E}\left[r_{t+1}+\gamma r_{t+2}+\gamma^2 r_{t+3}+\cdots \mid s_t=s\right]
\end{aligned}
\tag{2.6}
$$
其中,$G_t$ 是之前定义的折扣回报。我们对 $G_t$ 取了一个期望,期望就是从当前状态开始,可能获得多大的价值。因此期望也可以看成未来可能获得奖励的当前价值表现,即当我们进入某一个状态后,现在有多大的价值。
* 96页
* 图3.33(a)、图3.33(b)的第2行
* $s \in S^{+}, a \in A(s)$ → $s \in \mathcal{S}^{+}, a \in \mathcal{A}(s)$
* 终点 → 终止状态
* 图3.33(a)、图3.33(b)的第7行观测 → 得到
## 第1版第7次印刷2023.10
* 36页第三段改为其中$T$ 是最终时刻,$\gamma$ 是折扣因子,越往后得到的奖励,折扣越多。这说明我们更希望得到现有的奖励,对未来的奖励要打折扣。但式 (2.4) 定义有些问题,当任务为持续性任务时,$T=\infty$如果智能体每个时刻都收到正的奖励回报也就会趋于无穷。当我们有了回报之后就可以定义状态的价值了就是状态价值函数state-value function。对于马尔可夫奖励过程状态价值函数被定义成回报的期望
* 147页图6.7左下角:动作值 → 动作价值图6.7替换成下图:
![](res/6-7.png ':size=650')
* 217页倒数第一段
* 黄金状态gold state → 目标状态goal state
* 黄金状态 → 目标状态
* 218页第一段黄金状态 → 目标状态
* 218页倒数第一段黄金状态 → 目标状态
* 221页倒数第一段我们称之为黄金状态gold state→ 目标状态goal state
* 222页第一段黄金状态 → 目标状态
## 第1版第6次印刷2023.06
* 前勒口作者简介:
* 王琦:
* 上海交通大学计算机系人工智能教育部重点实验室博士生 → 上海交通大学人工智能教育部重点实验室博士生
* 21页倒数第一段第2行**多臂赌博机multi-armed bandit**→ **多臂赌博机multi-armed banditMAB**
* 23页倒数第二段上面加上一段文字
此外,为了显示图形界面,我们还需要安装 pygame 库。
```bash
pip install pygame
```
* 27页第二段改为Gym 库已注册的环境可以通过以下代码查看。
* 27页第三段和第四段改为Gym 库中的每个环境都定义了观测空间和动作空间。观测空间和动作空间可以是离散的(取值为有限个离散的值),也可以是连续的(取值为连续的值)。
* 28页第一个代码框的第1行观测空间 = Box(2,) → 观测空间 = Box([-1.2 -0.07], [0.6 0.07], (2,), float32)
* 28页第二段改为在 Gym 库中,环境的观测空间用 env.observation\_space 表示,动作空间用 env.action\_space 表示。离散空间用 gym.spaces.Discrete 类表示,连续空间用 gym.spaces.Box 类表示。对于离散空间Discrete (n) 表示可能取值的数量为 n对于连续空间Box类实例成员中的 low 和 high 表示每个浮点数的取值范围。MountainCar-v0 中的观测是长度为 2 的 numpy 数组,数组中值的类型为 float。MountainCar-v0 中的动作是整数,取值范围为 {0,1,2}。
* 28页第三段改为接下来实现智能体来控制小车移动对应代码如下。
* 28页第二个代码框第1行和倒数第1行BespokeAgent → SimpleAgent
* 28页倒数第一段改为SimpleAgent 类的 decide()方法用于决策learn() 方法用于学习,该智能体不是强化学习智能体,不能学习,只能根据给定的数学表达式进行决策。
* 29页第一个代码框第1行play_montecarlo → play
* 29页第一个代码框第2行初始化 → 初始值
* 29页第一个代码框第6行显示图形界面图形界面可以用 env.close() 语句关闭 → 显示图形界面
* 29页第二段改为上面代码中的 play() 函数可以让智能体和环境交互一个回合,该函数有 4 个参数。env 是环境类。agent 是智能体类。render 是 bool 型变量,其用于判断是否需要图形化显示。如果 render 为 True则在交互过程中会调用 env.render() 以显示图形界面,通过调用 env.close() 可关闭图形界面。train 是 bool 型变量,其用于判断是否训练智能体,在训练过程中设置为 True让智能体学习在测试过程中设置为 False让智能体保持不变。该函数的返回值 episode\_reward 是 float 型的数值,其表示智能体与环境交互一个回合的回合总奖励。
* 29页第三段并在交互过程中进行图形化显示可用 env.close()语句关闭图形界面 → 并显示图形界面
* 29页倒数第一个代码框的第1行改为env.seed(3) # 设置随机种子,让结果可复现
* 29页倒数第一个代码框第2行play_montecarlo → play
* 29页倒数第一个代码框的倒数第1行改为此语句可关闭图形界面 → 关闭图形界面
* 30页第一段改为为了评估智能体的性能需要计算出连续交互 100 回合的平均回合奖励,代码如下。
* 30页第二个代码框第1行play_montecarlo → play
* 30页第三个代码框-102.61 → -106.63
* 30页第三段改为SimpleAgent 类对应策略的平均回合奖励在 $-$110 左右,而对于小车上山任务,只要连续 100 个回合的平均回合奖励大于 $-$110就可以认为该任务被解决了。
* 30页第四段改为测试智能体在 Gym 库中某个任务的性能时,出于习惯使然,学术界一般最关心 100 个回合的平均回合奖励。对于有些任务,还会指定一个参考的回合奖励值,当连续 100 个回合的奖励大于指定的值时,则认为该任务被解决了。而对于没有指定值的任务,就无所谓任务被解决了或没有被解决<sup>[6]</sup>。
* 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页第二段修改为
&ensp;&ensp;&ensp;&ensp;举一个例子来说明预测与控制的区别。首先是预测问题。在图 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页第一段修改为
&ensp;&ensp;&ensp;&ensp;策略最简单的表示是查找表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节上面添加以下文字:
&ensp;&ensp;&ensp;&ensp;策略梯度算法是基于策略的方法,其对策略进行了参数化。假设参数为 $\theta$ 的策略为 $\pi_{\theta}$,该策略为随机性策略,其输入某个状态,输出一个动作的概率分布。策略梯度算法不需要在动作空间中最大化价值,因此较为适合解决具有高维或者连续动作空间的问题。
* 140页6.1节上面一段的第1行深度 Q 网络Deep Q-networkDQN→ 深度 Q 网络deep Q-networkDQN
* 140页6.1节上面添加以下文字:
&ensp;&ensp;&ensp;&ensp;深度 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}
$$
&ensp;&ensp;&ensp;&ensp;深度 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}
$$
&ensp;&ensp;&ensp;&ensp;通常在简单任务上使用全连接神经网络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行均方差损失 → 均方误差损失