知识基础DQN参考我的博文:https://tianjuewudi.gitee.io/2021/07/16/qiang-hua-xue-xi-shi-jian-jiao-xue/#toc-heading-19
DQN复习
? 我们利用神经网络来代替表格法,我们可以输入S并输出多个Q,每个Q对应一个A。神经网络只需要储存有限的网络参数,我们的任务就是不断调整这些参数,使得输入输出符合我们的预期,而且状态可以泛化,相似的状态输出也差不多。 ? DQN有两大创新点,一个是经验回放,一个是固定Q目标。经验回放是指探索的数据特征形成一组组数据,并且可以随机打乱,使得神经网络可以重复多次地进行学习。这样可以打乱样本的关联性,而且能提高样本利用率。固定Q目标是指我们把Q值固定一段时间来训练参数,我们需要另外一个一样的网络(target Q网络),Q网络的作用是产生一个Q预测值,直接用来决策。而target Q是产生一个Q目标值,我们通过这个目标值的
Q
t
+
1
Q_{t+1}
Qt+1?计算Q网络
Q
t
Q_{t}
Qt?,target Q往往固定一段时间来使Q网络得到充分训练。
DQN的缺陷
使用了 max 操作,Q-learning、DQN算法都会过高估计(overestimate)Q值。
DDQN与DQN的异同
DDQN和DQN一样,也有一样的两个Q网络结构。下面是DQN的更新公式
Q
m
(
S
t
,
a
t
)
=
Q
m
(
S
t
,
a
t
)
+
η
?
(
R
t
+
1
+
γ
max
?
a
Q
t
(
S
t
+
1
,
a
)
?
Q
m
(
s
t
,
a
t
)
)
Q_m(S_{t},a_t) = Q_m(S_{t},a_t)+ \eta * (R_{t+1} + γ \max_a Q_t(S_ {t+1} ,a) - Q_m(s_t,a_t))
Qm?(St?,at?)=Qm?(St?,at?)+η?(Rt+1?+γamax?Qt?(St+1?,a)?Qm?(st?,at?)) DDQN采用的是一种使更新公式更稳定的方法:
a
m
=
a
r
g
max
?
a
Q
m
(
s
t
+
1
,
a
)
a_m = arg \max_a Q_m(s_{t+1},a)
am?=argamax?Qm?(st+1?,a)
Q
m
(
S
t
,
a
t
)
=
Q
m
(
S
t
,
a
t
)
+
η
?
(
R
t
+
1
+
γ
Q
t
(
S
t
+
1
,
a
m
)
?
Q
m
(
s
t
,
a
t
)
)
Q_m(S_{t},a_t) = Q_m(S_{t},a_t)+ \eta * (R_{t+1} + γ Q_t(S_ {t+1} ,a_m) - Q_m(s_t,a_t))
Qm?(St?,at?)=Qm?(St?,at?)+η?(Rt+1?+γQt?(St+1?,am?)?Qm?(st?,at?))
也就是说DDQN与DQN的不同之处在于用来更新Q网络的Target Q中
Q
(
S
t
+
1
,
a
)
Q(S_{t+1},a)
Q(St+1?,a)的选择方式,DQN直接用Target Q网络中t+1时刻可选Q的最大值用来更新,而DDQN用的是根据Q网络t+1时刻的最大Q来选择对应的action,然后用这个action来对应决定Target Q网络中的Q值,这样更新的Q值就会小于等于DQN更新的Q值,改善overestimate的问题。
|