This commit is contained in:
johnjim0816
2022-05-31 01:21:05 +08:00
3 changed files with 83 additions and 5 deletions

View File

@@ -16,7 +16,7 @@
购买链接:[京东](https://item.jd.com/13075567.html) | [当当](http://product.dangdang.com/29374163.html)
勘误表https://datawhalechina.github.io/easy-rl/#/errata
勘误修订https://datawhalechina.github.io/easy-rl/#/errata
豆瓣评分https://book.douban.com/subject/35781275/
@@ -83,6 +83,23 @@ PDF版本是全书初稿人民邮电出版社的编辑老师们对初稿进
</tbody>
</table>
## 引用信息
```
王琦杨毅远江季Easy RL强化学习教程人民邮电出版社https://github.com/datawhalechina/easy-rl, 2022.
```
```bibtex
@book{wang2022easyrl,
title = {Easy RL强化学习教程},
publisher = {人民邮电出版社},
year = {2022},
author = {王琦,杨毅远,江季},
address = {北京},
isbn = {9787115584700},
url = {https://github.com/datawhalechina/easy-rl}
}
```
## 致谢

View File

@@ -1,7 +1,7 @@
# DQN
传统的强化学习算法会使用表格的形式存储状态值函数 $V(s)$ 或状态动作值函数 $Q(s,a)$,但是这样的方法存在很大的局限性。例如:现实中的强化学习任务所面临的状态空间往往是连续的,存在无穷多个状态,在这种情况下,就不能再使用表格对值函数进行存储。值函数近似利用函数直接拟合状态值函数或状态动作值函数,减少了对存储空间的要求,有效地解决了这个问题。
为了在连续的状态和动作空间中计算值函数 $Q^{\pi}(s,a)$,我们可以用一个函数 $Q_{\phi}(\boldsymbol{s},\boldsymbol{a})$ 来表示近似计算,称为`价值函数近似(Value Function Approximation)`
为了在连续的状态空间中计算值函数 $Q^{\pi}(s,a)$,我们可以用一个函数 $Q_{\phi}(\boldsymbol{s},\boldsymbol{a})$ 来表示近似计算,称为`价值函数近似(Value Function Approximation)`
$$
Q_{\phi}(\boldsymbol{s}, \boldsymbol{a}) \approx Q^{\pi}(s, a)
$$
@@ -10,11 +10,21 @@ $$
* $\boldsymbol{s},\boldsymbol{a}$ 分别是状态 $s$ 和动作 $a$ 的向量表示,
* 函数 $Q_{\phi}(\boldsymbol{s}, \boldsymbol{a})$ 通常是一个参数为 $\phi$ 的函数,比如`神经网络`,输出为一个实数,称为`Q 网络(Q-network)`
深度Q网络Deep Q-NetworkDQN算法的核心是维护 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)
$$
DQN采用贝尔曼方程来迭代更新 $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)
$$
通常在简单任务上使用全连接神经网络fully connected neural network来拟合 $Q^{\pi}$但是在较为复杂的任务上如玩雅达利游戏会使用卷积神经网络来拟合从图像到价值函数的映射。由于DQN的这种表达形式只能处理有限个动作值因此其通常用于处理离散动作空间的任务。
## State Value Function
**Q-learning 是 `value-based` 的方法。在 value-based 的方法里面,我们学习的不是策略,我们要学习的是一个 `critic(评论家)`。**评论家要做的事情是评价现在的行为有多好或是有多不好。假设有一个演员(actor) $\pi$ ,评论家就是来评价这个演员的策略 $\pi$ 好还是不好,即 `Policy Evaluation(策略评估)`
> 注:「李宏毅深度强化学习」课程提到的 Q-learning其实是 DQN(Deep Q-network)
> 注:「李宏毅深度强化学习」课程提到的 Q-learning其实是 DQN。
>
> DQN 是指基于深度学习的 Q-learning 算法,主要结合了`价值函数近似(Value Function Approximation)`与神经网络技术,并采用了目标网络和经历回放的方法进行网络的训练。
>
@@ -379,6 +389,7 @@ A: 整体来说DQN 与 Q-learning 的目标价值以及价值的更新方式
* [百面深度学习](https://book.douban.com/subject/35043939/)
* [机器学习(北理工)](https://www.icourse163.org/course/BIT-1449601164)
* 苗光辉. 面向部分可观测环境的值迭代深度网络模型研究[D].北京理工大学,2018.
* [天授文档](https://tianshou.readthedocs.io/zh/latest/index.html)

View File

@@ -1,20 +1,29 @@
# 纸质版勘误表
# 纸质版勘误修订
如何使用勘误?首先找到你的书的印次,接下来对着下表索引印次,该印次之后所有的勘误都是你的书中所要注意的勘误,印次前的所有勘误在当印次和之后印次均已印刷修正。
**如何使用勘误?首先找到你的书的印次,接下来对着下表索引印次,该印次之后所有的勘误都是你的书中所要注意的勘误,印次前的所有勘误在当印次和之后印次均已印刷修正。为方便读者,所有修订内容都列举在此。其中部分修订是为了更便于读者理解,并非原文有误。**
## 第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$ 后面的数字改为下标,即
$$
@@ -28,6 +37,7 @@ 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
@@ -52,6 +62,25 @@ for i_ep in range(cfg.train_eps):
```
* 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) 改为
$$
@@ -68,6 +97,19 @@ V^{\pi}(s) &\le Q^{\pi}(s,\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$ 了(其他进程也会更新模型)
@@ -78,14 +120,22 @@ $$
* 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行均方差损失 → 均方误差损失