update
This commit is contained in:
@@ -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 所示,贝尔曼期望备份有两层加和,即内部加和和外部加和,计算两次期望,得到一个更新。
|
||||||
|
|||||||
@@ -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$ 一直到游戏结束所有奖励的总和才能代表这个动作的好坏。
|
||||||
|
|||||||
@@ -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)$ 当作目标,我们要去拟合的目标是一直在变动的,这是不太好训练的。
|
||||||
|
|||||||
Reference in New Issue
Block a user