update
This commit is contained in:
@@ -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)$ 当作目标,我们要去拟合的目标是一直在变动的,这是不太好训练的。
|
||||
|
||||
Reference in New Issue
Block a user