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

@@ -153,7 +153,6 @@ $$
$Q_{\pi}(s, \pi(s))$ 还满足如下的关系:
$$
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_{\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)
$$
所以我们在学习的时候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)$ 当作目标,我们要去拟合的目标是一直在变动的,这是不太好训练的。