前言
分析这个问题要从重要性采样和target policy的本质出发,本文分为以下三步来介绍DQN为什么不需要重要性采样:重要性采样的目的、target policy和behavior policy的含义、DQN为什么不需要重要性采样。
1 重要性采样的目的
如果我们想计算
f
(
x
)
f(x)
f(x)在分布
x
−
p
(
x
)
x-p(x)
x−p(x)下的期望
G
p
G_p
Gp,那么使用蒙特卡罗的方式就是下式:
G
p
=
∑
x
p
(
x
)
f
(
x
)
G_p = \sum_{x} p(x)f(x)
Gp=x∑p(x)f(x)
但是现在的问题是我们无法在
p
(
x
)
p(x)
p(x)下采样
x
x
x来计算
G
G
G,但是我们可以在另一个分布
x
−
q
(
x
)
x-q(x)
x−q(x)下采样到样本
x
x
x并计算
f
(
s
)
f(s)
f(s)。为了利用
q
(
x
)
q(x)
q(x)分布下采样的样本计算
G
p
G_p
Gp,将
G
p
G_p
Gp的公式转化为下式:
G
p
=
∑
x
q
(
x
)
p
(
x
)
q
(
x
)
f
(
x
)
G_p = \sum_{x} q(x) \frac{p(x)}{q(x)} f(x)
Gp=x∑q(x)q(x)p(x)f(x)
此时,样本
x
x
x是在
q
(
x
)
q(x)
q(x)下采样得到的,根据
x
x
x再计算
p
(
x
)
p(x)
p(x)、
q
(
x
)
q(x)
q(x)和
f
(
x
)
f(x)
f(x)即可得到
G
p
G_p
Gp。其中
p
(
x
)
q
(
x
)
\frac{p(x)}{q(x)}
q(x)p(x)称为重要性采样系数
。
2 target policy和behavior policy的含义
在深度神经网络的框架下对target policy和behavior policy的解释如下:
target policy
:在策略训练完成后,用来实际与环境进行交互测试的策略。
behavior policy
:探索环境并采集训练数据的策略。
为了看的更清楚,我们在DQN中描述,DQN的框架如下:

这个框架只说明了DQN怎么训练,没说怎么测试。测试的时候使用最后一次保存的target Q-function与环境进行交互,而不是Q-function,这可以从easy-RL的DQN代码中看到:https://github.com/datawhalechina/easy-rl/tree/master/projects/codes/DQN
框架中的Q-function是behavior policy,target Q-function是target policy,在每一次迭代中,使用behavior policy收集数据 { s t , a t , r t , s t + 1 } \{s_t,a_t,r_t,s_{t+1}\} {st,at,rt,st+1}并放到buffer中,然后从buffer中采样数据,使用target policy生成学习标签 r i + max a Q ^ ( s i + 1 , a ) r_i+\max_a \hat{Q}(s_{i+1},a) ri+maxaQ^(si+1,a),然后优化behavior policy。依次循环,直到达到最大epoch或误差小于阈值。
3 DQN为什么不需要重要性采样
从期望的角度对DQN的学习目标进行建模,即,使target policy在任一状态
s
s
s和
a
a
a下预测的
Q
(
s
,
a
)
Q(s,a)
Q(s,a)越准越好,但是以谁作为训练目标呢?最准确的方法是通过蒙特卡罗的方式多次采样轨迹得到每个
Q
(
s
,
a
)
Q(s,a)
Q(s,a),但耗时太长;为此提出使用时序差分(TD)的方式逐步优化,逐渐逼近真实的
Q
Q
Q。
KaTeX parse error: Expected 'EOF', got '&' at position 23: …get}(s_t,a_t) &̲ = r_t + \gamm…
上式中,
a
t
+
1
a_{t+1}
at+1是由target policy决策生成。我们知道,target policy是完全的贪心策略(behavior policy是
ϵ
\epsilon
ϵ贪心策略),所以除
a
r
g
m
a
x
a
t
+
1
Q
(
s
t
+
1
,
a
t
+
1
)
argmax_{a_{t+1}} Q(s_{t+1},a_{t+1})
argmaxat+1Q(st+1,at+1)之外的a的
p
(
a
t
+
1
∣
s
t
+
1
)
p(a_{t+1}|s_{t+1})
p(at+1∣st+1)为0,所以,上式简化为:
Q
t
a
r
g
e
t
(
s
t
,
a
t
)
=
r
t
+
γ
max
a
t
+
1
Q
(
s
t
+
1
,
a
t
+
1
)
Q_{target}(s_t,a_t) = r_t + \gamma \max_{a_{t+1}}Q(s_{t+1}, a_{t+1})
Qtarget(st,at)=rt+γat+1maxQ(st+1,at+1)
从这个公式再看,没有一项用到了期望,也就没有分布差异的问题,所以不需要重要性采样。
参考:
[1] 为什么DQN不需要off policy correction? - 俞扬的回答 - 知乎 https://www.zhihu.com/question/394866647/answer/1264965104
[2] easy-RL:https://github.com/datawhalechina/easy-rl/tree/master/projects/codes/DQN