From f3880343bb7515113e12dae0ba5e33f0daf86e6a Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Mon, 25 Apr 2022 21:32:06 +0800 Subject: [PATCH 01/24] update ch6 --- docs/chapter6/chapter6.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/chapter6/chapter6.md b/docs/chapter6/chapter6.md index bf9a6b1..095ca31 100644 --- a/docs/chapter6/chapter6.md +++ b/docs/chapter6/chapter6.md @@ -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-Network,DQN)算法的核心是维护 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) From fc1610a594c0ea2eef08199ef6b1dcc432c076f4 Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Mon, 25 Apr 2022 22:47:02 +0800 Subject: [PATCH 02/24] update errata --- docs/errata.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/errata.md b/docs/errata.md index 717a314..b814af8 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -52,6 +52,18 @@ for i_ep in range(cfg.train_eps): ``` * 103页,图3.37上面一段:具体可以查看 GitHub 上的源码 → 具体可以查看本书配套代码 +* 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) +$$ +​ 深度 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) +$$ +​ 通常在简单任务上,使用全连接神经网络(fully connected neural network)来拟合 $Q_{\pi}$,但是在较为复杂的任务上(如玩雅达利游戏),会使用卷积神经网络来拟合从图像到价值函数的映射。由于深度 Q 网络的这种表达形式只能处理有限个动作值,因此其通常用于处理离散动作空间的任务。 + * 149页,式(6.15) 改为 $$ @@ -68,6 +80,8 @@ V^{\pi}(s) &\le Q^{\pi}(s,\pi'(s)) \\ \end{aligned} $$ +* 176页,第1行:全连接网络 → 全连接神经网络 +* 176页,第1行下面的代码块:初始化 Q 网络,为全连接网络 → 初始化 Q 网络为全连接神经网络 * 190页,9.5节第2段的第3行:也是不好实现的。我们可以实现优势演员-评论员算法就可以。 → 不好实现异步优势演员-评论员算法,但可以实现优势演员-评论员算法。 * 191页,第4和第5行:要用梯度去更新参数......就把梯度传 → 要用梯度去更新全局网络的参数。每个进程算出梯度以后,要把梯度传 * 191页,图9.6的上面一段的倒数第1行:变成 $\theta_2$了 → 变成$\theta_2$ 了(其他进程也会更新模型) From 98427838f80a670f6533b3e6c1e24a5e38e78a69 Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Mon, 25 Apr 2022 22:56:23 +0800 Subject: [PATCH 03/24] update --- docs/errata.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/errata.md b/docs/errata.md index b814af8..23414f6 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -54,7 +54,7 @@ for i_ep in range(cfg.train_eps): * 103页,图3.37上面一段:具体可以查看 GitHub 上的源码 → 具体可以查看本书配套代码 * 140页,6.1节上面添加以下文字: -​ 深度 Q 网络算法的核心是维护 Q 函数并使用其进行决策。$Q_{\pi}(s,a)$ 为在该策略 $\pi$ 下的动作价值函数,每次到达一个状态 $s_t$ 之后,遍历整个动作空间,使用让 $Q_{\pi}(s,a)$ 最大的动作作为策略: +  深度 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) $$ From 8abfb02ac391c7b56ad9626bd48dccfe639d863f Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Mon, 25 Apr 2022 23:03:03 +0800 Subject: [PATCH 04/24] update --- docs/errata.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/errata.md b/docs/errata.md index 23414f6..6db6035 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -54,15 +54,17 @@ for i_ep in range(cfg.train_eps): * 103页,图3.37上面一段:具体可以查看 GitHub 上的源码 → 具体可以查看本书配套代码 * 140页,6.1节上面添加以下文字: -  深度 Q 网络算法的核心是维护 Q 函数并使用其进行决策。$Q_{\pi}(s,a)$ 为在该策略 $\pi$ 下的动作价值函数,每次到达一个状态 $s_t$ 之后,遍历整个动作空间,使用让 $Q_{\pi}(s,a)$ 最大的动作作为策略: +    深度 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) +a_{t}=\underset{a}{\arg \max } ~Q_{\pi}\left(s_{t}, a\right) \tag{6.2} $$ -​ 深度 Q 网络采用贝尔曼方程来迭代更新 $Q_{\pi}(s,a)$ : +    深度 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) +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 网络的这种表达形式只能处理有限个动作值,因此其通常用于处理离散动作空间的任务。 +    通常在简单任务上,使用全连接神经网络(fully connected neural network)来拟合 $Q_{\pi}$,但是在较为复杂的任务上(如玩雅达利游戏),会使用卷积神经网络来拟合从图像到价值函数的映射。由于深度 Q 网络的这种表达形式只能处理有限个动作值,因此其通常用于处理离散动作空间的任务。 + +* 140页后的公式编号需要进行更新。 * 149页,式(6.15) 改为 From 39aeb84e9309db3fed07e0e0874d5a718d9effe4 Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Mon, 25 Apr 2022 23:07:46 +0800 Subject: [PATCH 05/24] update --- docs/errata.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/errata.md b/docs/errata.md index 6db6035..6dc0c25 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -4,6 +4,8 @@ ## 第1版第1次印刷(2022.03) +* 2页,2.1.2节的标题:马尔可夫过程/马尔可夫链 → 马尔可夫链 +* 34页,2.1.2节的标题:马尔可夫过程/马尔可夫链 → 马尔可夫链 * 35页的图2.2 和 41页的图2.5(a)替换成下图: ![](res/Markov_chain.png ':size=350') From 346148d43fc1da63585aa455abff24b8cacb4f87 Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Wed, 27 Apr 2022 19:09:42 +0800 Subject: [PATCH 06/24] upate errata --- docs/errata.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/errata.md b/docs/errata.md index 6dc0c25..4a40490 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -11,6 +11,7 @@ ![](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) 改为 $$ From 8c9276c72c9082cdaa264c317b38b0e50abd29b1 Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Fri, 29 Apr 2022 19:26:56 +0800 Subject: [PATCH 07/24] update --- docs/errata.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/errata.md b/docs/errata.md index 4a40490..bfedba8 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -31,6 +31,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 From 5ac96ffd39279ae25f9e4abfdf9b3c7008286297 Mon Sep 17 00:00:00 2001 From: johnjim0816 Date: Fri, 29 Apr 2022 20:09:47 +0800 Subject: [PATCH 08/24] remove Logs.md --- codes/Logs.md | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 codes/Logs.md diff --git a/codes/Logs.md b/codes/Logs.md deleted file mode 100644 index 7dc6497..0000000 --- a/codes/Logs.md +++ /dev/null @@ -1,7 +0,0 @@ -## 记录笔者更新的日志 - -**2021.12.28-1**:将```task.py```中的两个Config类合并为一个,并加以注释便于阅读,从DQN算法开始更新 - -**2021.12.22-3**:将```agent.py```更改为对应的算法名称,便于区分如```dqn```与```dqn_cnn```的情况 -**2021.12.22-2**:简化了代码结构,将原来的```train.py```和```task.py```等合并到```task.py```中 -**2021.12.22-1**:简化了代码结构,将原来的```model.py```和```memory.py```等合并到```agent.py```中,```plot.py```的内容合并到```common.utils.py```中 \ No newline at end of file From d956e8fac528196438aea078693a710d562624bf Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Mon, 2 May 2022 19:08:15 +0800 Subject: [PATCH 09/24] update errate --- docs/errata.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/errata.md b/docs/errata.md index bfedba8..a710477 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -69,7 +69,7 @@ $$     通常在简单任务上,使用全连接神经网络(fully connected neural network)来拟合 $Q_{\pi}$,但是在较为复杂的任务上(如玩雅达利游戏),会使用卷积神经网络来拟合从图像到价值函数的映射。由于深度 Q 网络的这种表达形式只能处理有限个动作值,因此其通常用于处理离散动作空间的任务。 * 140页后的公式编号需要进行更新。 - +* 145页,式(6.6) 下面一段的第1行:所以状态 $s_b$ 的奖励等于 → 所以状态 $s_a$ 的奖励等于 * 149页,式(6.15) 改为 $$ @@ -86,6 +86,7 @@ V^{\pi}(s) &\le Q^{\pi}(s,\pi'(s)) \\ \end{aligned} $$ +* 159页,式(6.22) 下面一段的第1行:$a$ 是让 $\hat{Q}$ 值最大的动作 → $a$ 是让 Q 值最大的动作 * 176页,第1行:全连接网络 → 全连接神经网络 * 176页,第1行下面的代码块:初始化 Q 网络,为全连接网络 → 初始化 Q 网络为全连接神经网络 * 190页,9.5节第2段的第3行:也是不好实现的。我们可以实现优势演员-评论员算法就可以。 → 不好实现异步优势演员-评论员算法,但可以实现优势演员-评论员算法。 From cd240325ca2f0949e6160dde5b8b5e8073bea4f2 Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Mon, 2 May 2022 19:31:04 +0800 Subject: [PATCH 10/24] update errata --- docs/errata.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/errata.md b/docs/errata.md index a710477..f2ea440 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -6,6 +6,7 @@ * 2页,2.1.2节的标题:马尔可夫过程/马尔可夫链 → 马尔可夫链 * 34页,2.1.2节的标题:马尔可夫过程/马尔可夫链 → 马尔可夫链 +* 34页,2.1.2节的第2段的第1行:也称为**马尔可夫链(Markov chain)**。 → 也称为**马尔可夫链(Markov chain)**。马尔可夫链是最简单的马尔可夫过程,其状态是有限的。 * 35页的图2.2 和 41页的图2.5(a)替换成下图: ![](res/Markov_chain.png ':size=350') From 07b9c159257d932f108deb2f6c695acc3dccb205 Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Mon, 2 May 2022 20:35:45 +0800 Subject: [PATCH 11/24] update readme --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 1e92f06..af9c16b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -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/ From 49095334d6cb3f8bc3ee37416d251dfcb3f4eae4 Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Mon, 2 May 2022 20:56:36 +0800 Subject: [PATCH 12/24] update errata --- docs/errata.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/errata.md b/docs/errata.md index f2ea440..9cc8c97 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -1,6 +1,6 @@ -# 纸质版勘误表 +# 纸质版勘误修订表 -如何使用勘误?首先找到你的书的印次,接下来对着下表索引印次,该印次之后所有的勘误都是你的书中所要注意的勘误,印次前的所有勘误在当印次和之后印次均已印刷修正。 +**如何使用勘误?首先找到你的书的印次,接下来对着下表索引印次,该印次之后所有的勘误都是你的书中所要注意的勘误,印次前的所有勘误在当印次和之后印次均已印刷修正。为方便读者,所有修订内容都列举在此。其中部分修订是为了更便于读者理解,并非原文有误。** ## 第1版第1次印刷(2022.03) @@ -19,6 +19,10 @@ $$ \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$ 后面的数字改为下标,即 $$ From 366f80cff8bef7f8b47ddb0c7e136a0cdce2d50b Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Mon, 2 May 2022 21:26:51 +0800 Subject: [PATCH 13/24] update errata --- docs/errata.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/errata.md b/docs/errata.md index 9cc8c97..60fe24f 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -61,6 +61,7 @@ for i_ep in range(cfg.train_eps): ``` * 103页,图3.37上面一段:具体可以查看 GitHub 上的源码 → 具体可以查看本书配套代码 +* 140页,6.1节上面一段的第1行:深度 Q 网络(Deep Q-network,DQN)→ 深度 Q 网络(deep Q-network,DQN) * 140页,6.1节上面添加以下文字:     深度 Q 网络算法的核心是维护 Q 函数并使用其进行决策。$Q_{\pi}(s,a)$ 为在该策略 $\pi$ 下的动作价值函数,每次到达一个状态 $s_t$ 之后,遍历整个动作空间,使用让 $Q_{\pi}(s,a)$ 最大的动作作为策略: From 780812a43cd2b6368aa338b50e0063d064b400ee Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Mon, 2 May 2022 21:50:47 +0800 Subject: [PATCH 14/24] update errata --- docs/errata.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/errata.md b/docs/errata.md index 60fe24f..88b79d0 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -111,8 +111,14 @@ $$ * 201页,图10.7的下面一段的第3行:之间的一个均方差 → 之间的均方误差 +* 202页,图10.8的下面一段的第4行:时间相关的 OU 噪声 → 时间相关的奥恩斯坦-乌伦贝克(Ornstein-Uhlenbeck,OU)噪声 + * 203页,式(10.1)上面一段的第2行:均方差 → 均方误差 +* 207页,10.4.3节的标题:Ornstein-Uhlenbeck 噪声 → OU 噪声 + +* 207页,10.4.3节的第1段的第1行:奥恩斯坦-乌伦贝克(Ornstein-Uhlenbeck,OU)噪声 → OU 噪声 + * 229页,第2行:很强的序列 → 很长的序列 * 242页,13.4.3节上面一段的第1行:均方差损失 → 均方误差损失 From 95de66d795381f5ee416ce67dd4a69ff9dddf1bf Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Thu, 5 May 2022 00:03:18 +0800 Subject: [PATCH 15/24] update errata --- docs/errata.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/errata.md b/docs/errata.md index 88b79d0..9c1c1cf 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -61,6 +61,10 @@ for i_ep in range(cfg.train_eps): ``` * 103页,图3.37上面一段:具体可以查看 GitHub 上的源码 → 具体可以查看本书配套代码 +* 106页,4.1节上面添加以下文字: + +    策略梯度算法是基于策略的方法,其对策略进行了参数化。假设参数为 $\theta$ 的策略为 $\pi_{\theta}$,该策略为随机性策略,其输入某个状态,输出一个动作的概率分布。策略梯度算法不需要在动作空间中最大化价值,因此较为适合解决具有高维或者连续动作空间的问题。 + * 140页,6.1节上面一段的第1行:深度 Q 网络(Deep Q-network,DQN)→ 深度 Q 网络(deep Q-network,DQN) * 140页,6.1节上面添加以下文字: From 8cc5885beb9b3d6b141ddf4970a3b9a979720243 Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Thu, 5 May 2022 09:19:33 +0800 Subject: [PATCH 16/24] update readme --- docs/README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/README.md b/docs/README.md index af9c16b..7aab19f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -83,6 +83,23 @@ PDF版本是全书初稿,人民邮电出版社的编辑老师们对初稿进 +## 引用信息 + +``` +王琦,杨毅远,江季,Easy RL:强化学习教程,人民邮电出版社,https://github.com/datawhalechina/easy-rl, 2022. +``` + +``` +@book{wang2022easyrl, +title = {Easy RL:强化学习教程}, +publisher = {人民邮电出版社}, +year = {2022}, +author = {王琦,杨毅远,江季}, +address = {北京}, +isbn = {9787115584700}, +url = {https://github.com/datawhalechina/easy-rl} +} +``` ## 致谢 From 420defb22c71a02a23e53a103da037919263bb0c Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Fri, 6 May 2022 20:31:14 +0800 Subject: [PATCH 17/24] update errate --- docs/errata.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/errata.md b/docs/errata.md index 9c1c1cf..f57f29a 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -109,6 +109,8 @@ $$ * 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 error,MSE) From 16e231aad9ca05f93b24c30c1f2b5e0da3429bf8 Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Fri, 6 May 2022 23:25:07 +0800 Subject: [PATCH 18/24] update errata --- docs/errata.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/errata.md b/docs/errata.md index f57f29a..1d47ea7 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -99,6 +99,12 @@ $$ * 159页,式(6.22) 下面一段的第1行:$a$ 是让 $\hat{Q}$ 值最大的动作 → $a$ 是让 Q 值最大的动作 * 176页,第1行:全连接网络 → 全连接神经网络 * 176页,第1行下面的代码块:初始化 Q 网络,为全连接网络 → 初始化 Q 网络为全连接神经网络 +* 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$ 了(其他进程也会更新模型) From 04183f6844ccbb1ce5e82a0e875126a4265c75b9 Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Fri, 6 May 2022 23:31:28 +0800 Subject: [PATCH 19/24] update errata --- docs/errata.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/errata.md b/docs/errata.md index 1d47ea7..9978c88 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -99,6 +99,8 @@ $$ * 159页,式(6.22) 下面一段的第1行:$a$ 是让 $\hat{Q}$ 值最大的动作 → $a$ 是让 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节的标题,目录对应的部分也需要修改 From d068c0306152d5c2852c46ee05cfa9d9f401837f Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Fri, 6 May 2022 23:35:11 +0800 Subject: [PATCH 20/24] update errata --- docs/errata.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/errata.md b/docs/errata.md index 9978c88..b48b31c 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -106,7 +106,7 @@ $$ * 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)$ 被称为优势函数,所以该算法被称为优势演员-评论员算法。 +* 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$ 了(其他进程也会更新模型) From e2d3fb6c317717b0090433b1a396894b4a50592d Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Sun, 8 May 2022 10:37:10 +0800 Subject: [PATCH 21/24] update errata --- docs/errata.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/errata.md b/docs/errata.md index b48b31c..e0f4b0a 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -96,7 +96,8 @@ V^{\pi}(s) &\le Q^{\pi}(s,\pi'(s)) \\ \end{aligned} $$ -* 159页,式(6.22) 下面一段的第1行:$a$ 是让 $\hat{Q}$ 值最大的动作 → $a$ 是让 Q 值最大的动作 +* 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 网络的两种评论员 From 29be2ea96670ec13dbdc50700b754cb62dcc94c2 Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Mon, 9 May 2022 23:44:21 +0800 Subject: [PATCH 22/24] update --- docs/errata.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/errata.md b/docs/errata.md index e0f4b0a..5f0ac9a 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -5,6 +5,7 @@ ## 第1版第1次印刷(2022.03) * 2页,2.1.2节的标题:马尔可夫过程/马尔可夫链 → 马尔可夫链 +* 17页,第一段的倒数第4行:策略梯度 → 策略梯度(policy gradient,PG) * 34页,2.1.2节的标题:马尔可夫过程/马尔可夫链 → 马尔可夫链 * 34页,2.1.2节的第2段的第1行:也称为**马尔可夫链(Markov chain)**。 → 也称为**马尔可夫链(Markov chain)**。马尔可夫链是最简单的马尔可夫过程,其状态是有限的。 * 35页的图2.2 和 41页的图2.5(a)替换成下图: From b584b327dab28a991c19ee81310363db1d0f533b Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Sat, 14 May 2022 14:54:51 +0800 Subject: [PATCH 23/24] update readme --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 7aab19f..b8fe176 100644 --- a/docs/README.md +++ b/docs/README.md @@ -89,7 +89,7 @@ PDF版本是全书初稿,人民邮电出版社的编辑老师们对初稿进 王琦,杨毅远,江季,Easy RL:强化学习教程,人民邮电出版社,https://github.com/datawhalechina/easy-rl, 2022. ``` -``` +```bibtex @book{wang2022easyrl, title = {Easy RL:强化学习教程}, publisher = {人民邮电出版社}, From 04ca16ef868f78c09f9e9550c5a9fb6a025b17ce Mon Sep 17 00:00:00 2001 From: qiwang067 Date: Sat, 21 May 2022 21:13:56 +0800 Subject: [PATCH 24/24] update erratea --- docs/errata.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/errata.md b/docs/errata.md index 5f0ac9a..8d38454 100644 --- a/docs/errata.md +++ b/docs/errata.md @@ -97,6 +97,7 @@ 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行:全连接网络 → 全连接神经网络