This commit is contained in:
qiwang067
2022-09-14 10:23:16 +08:00
parent e836fbd8a8
commit 8f045e2c8c
3 changed files with 1 additions and 5 deletions

View File

@@ -199,7 +199,6 @@ $$
我们再来看一下动态规划方法和蒙特卡洛方法的差异。动态规划也是常用的估计价值函数的方法。在动态规划方法里面我们使用了自举的思想。自举就是我们基于之前估计的量来估计一个量。此外动态规划方法使用贝尔曼期望备份Bellman expectation backup通过上一时刻的值 $V_{i-1}(s')$ 来更新当前时刻的值 $V_i(s)$ ,即 我们再来看一下动态规划方法和蒙特卡洛方法的差异。动态规划也是常用的估计价值函数的方法。在动态规划方法里面我们使用了自举的思想。自举就是我们基于之前估计的量来估计一个量。此外动态规划方法使用贝尔曼期望备份Bellman expectation backup通过上一时刻的值 $V_{i-1}(s')$ 来更新当前时刻的值 $V_i(s)$ ,即
$$ $$
V_{i}(s) \leftarrow \sum_{a \in A} \pi(a \mid s)\left(R(s, a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) V_{i-1}\left(s^{\prime}\right)\right) V_{i}(s) \leftarrow \sum_{a \in A} \pi(a \mid s)\left(R(s, a)+\gamma \sum_{s^{\prime} \in S} P\left(s^{\prime} \mid s, a\right) V_{i-1}\left(s^{\prime}\right)\right)
$$ $$
将其不停迭代,最后可以收敛。如图 3.12 所示,贝尔曼期望备份有两层加和,即内部加和和外部加和,计算两次期望,得到一个更新。 将其不停迭代,最后可以收敛。如图 3.12 所示,贝尔曼期望备份有两层加和,即内部加和和外部加和,计算两次期望,得到一个更新。

View File

@@ -244,7 +244,6 @@ $$
分配合适的分数这一技巧可以表达为 分配合适的分数这一技巧可以表达为
$$ $$
\nabla \bar{R}_{\theta} \approx \frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_{n}}\left(\sum_{t^{\prime}=t}^{T_{n}} r_{t^{\prime}}^{n}-b\right) \nabla \log p_{\theta}\left(a_{t}^{n} \mid s_{t}^{n}\right) \nabla \bar{R}_{\theta} \approx \frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_{n}}\left(\sum_{t^{\prime}=t}^{T_{n}} r_{t^{\prime}}^{n}-b\right) \nabla \log p_{\theta}\left(a_{t}^{n} \mid s_{t}^{n}\right)
$$ $$
原来的权重是整场游戏的奖励的总和,现在改成从某个时刻 $t$ 开始,假设这个动作是在 $t$ 开始执行的,从 $t$ 一直到游戏结束所有奖励的总和才能代表这个动作的好坏。 原来的权重是整场游戏的奖励的总和,现在改成从某个时刻 $t$ 开始,假设这个动作是在 $t$ 开始执行的,从 $t$ 一直到游戏结束所有奖励的总和才能代表这个动作的好坏。

View File

@@ -153,7 +153,6 @@ $$
$Q_{\pi}(s, \pi(s))$ 还满足如下的关系: $Q_{\pi}(s, \pi(s))$ 还满足如下的关系:
$$ $$
Q_{\pi}(s, \pi(s)) \leqslant \max _{a} Q_{\pi}(s, a) Q_{\pi}(s, \pi(s)) \leqslant \max _{a} Q_{\pi}(s, a)
$$ $$
@@ -222,8 +221,7 @@ $$
接下来讲一些在 深度Q网络 里一定会用到的技巧。第一个技巧是**目标网络target network**。我们在学习Q函数的时候也会用到时序差分方法的概念。我们现在收集到一个数据比如在状态 $s_t$ 采取动作 $a_t$ 以后,得到奖励 $r_t$ ,进入状态 $s_{t+1}$。根据Q函数我们可知 接下来讲一些在 深度Q网络 里一定会用到的技巧。第一个技巧是**目标网络target network**。我们在学习Q函数的时候也会用到时序差分方法的概念。我们现在收集到一个数据比如在状态 $s_t$ 采取动作 $a_t$ 以后,得到奖励 $r_t$ ,进入状态 $s_{t+1}$。根据Q函数我们可知
$$ $$
Q_{\pi}\left(s_{t}, a_{t}\right)
Q_{\pi}\left(s_{t}, a_{t}\right)
=r_{t}+Q_{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right) =r_{t}+Q_{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)
$$ $$
所以我们在学习的时候Q 函数输入 $s_t$、$a_t$ 得到的值,与输入 $s_{t+1}$、$\pi (s_{t+1})$ 得到的值之间,我们希望它们相差 $r_t$ 这与时序差分方法的概念是一样的。但是实际上这样的输入并不好学习,假设这是一个回归问题,如图 6.9 所示,$Q_{\pi}\left(s_{t}, a_{t}\right) $ 是网络的输出,$r_{t}+Q_{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)$ 是目标,目标是会变动的。当然如果我们要实现这样的训练,其实也没有问题,就是在做反向传播的时候, $Q_{\pi}$ 的参数会被更新,我们会把两个更新的结果加在一起(因为它们是同一个模型 $Q_{\pi}$ 所以两个更新的结果会加在一起)。但这样会导致训练变得不太稳定,因为假设我们把 $Q_{\pi}\left(s_{t}, a_{t}\right) $ 当作模型的输出, 把$r_{t}+Q_{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)$ 当作目标,我们要去拟合的目标是一直在变动的,这是不太好训练的。 所以我们在学习的时候Q 函数输入 $s_t$、$a_t$ 得到的值,与输入 $s_{t+1}$、$\pi (s_{t+1})$ 得到的值之间,我们希望它们相差 $r_t$ 这与时序差分方法的概念是一样的。但是实际上这样的输入并不好学习,假设这是一个回归问题,如图 6.9 所示,$Q_{\pi}\left(s_{t}, a_{t}\right) $ 是网络的输出,$r_{t}+Q_{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)$ 是目标,目标是会变动的。当然如果我们要实现这样的训练,其实也没有问题,就是在做反向传播的时候, $Q_{\pi}$ 的参数会被更新,我们会把两个更新的结果加在一起(因为它们是同一个模型 $Q_{\pi}$ 所以两个更新的结果会加在一起)。但这样会导致训练变得不太稳定,因为假设我们把 $Q_{\pi}\left(s_{t}, a_{t}\right) $ 当作模型的输出, 把$r_{t}+Q_{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)$ 当作目标,我们要去拟合的目标是一直在变动的,这是不太好训练的。