强化学习中的重要性采样(Importance Sampling)

1. 前言
  重要性采样(Importance Sampling)其实是强化学习中比较重要的一个概念,但是大部分初学者似乎对这一点不是很懂,甚至没有听过这个概念。其实这是因为目前深度强化学习中大多数方法都是以Q-Learning为基础的,而Q-Learning又恰恰不需要重要性采样,所以导致很多人接触不到这个概念。因此本文将首先从本质出发介绍重要性采样的原始含义,然后讲述重要性采样在强化学习中扮演的角色,最后解释一下为什么Q-Learning、DQN、DDPG这些方法不需要重要性采样。
2. 重要性采样
2.1 重要性采样要解决的问题
  重要性采样是统计学中的一种采样方法,主要用在一些难以直接采样的数据分布上。我们首先看一个问题:假设随机变量X有一个很复杂的概率密度函数p(x),现在我们的最终目标是求X关于某个函数f(x)的期望E=Exp(x)[f(x)]
  求解E最理想的办法是将上面的期望展开变成积分的形式——xp(x)f(x)dx,然后求解积分。如果随机变量X的概率分布p(x)和函数f(x)已知且比较简单,那么这样是可行的,直接通过数学计算即可。但是如果p(x)f(x)比较复杂,无法通过数学计算直接求解积分,就需要其他办法了。比如p或f是通过神经网络拟合出来的,我们只能把x输入到神经网络后得到p(x)和f(x),而不知道这两个函数的具体表达式,那么就无法直接计算积分。
此时又分随机变量X是否可以采样这两种情况,如果随机变量X是可以采样的,那么我们可以通过蒙特卡罗法曲线救国,根据大数定律,采样足够多的样本来近似计算EN1xip(x),i=1Nf(xi);但是还有另一种常见的情况:随机变量X不可采样,我们此时都得不到X的具体值,更何况将样本x输入到p和f里得到p(x)和f(x)。因此,重要性采样的出现就是为了解决这种很难在原始分布p(x)下采样的问题。
2.2 重要性采样的做法
  既然此时随机变量X无法直接从原始分布p(x)下采样,那么我们可以另辟蹊径,从一个简单、可采样、定义域与p(x)相同的概率分布~(x)中进行采样。由于我们的最终目标是求E=Exp(x)[f(x)],那么我们可以进行简单的推导:

E=Exp(x)[f(x)]=xp(x)f(x)dx=xp~(x)p~(x)p(x)f(x)dx=Exp~(x)[p~(x)p(x)f(x)](1)
此时可以发现,我们将原始问题转化成了求概率分布~(x)下p~(x)p(x)f(x)的期望,而此时概率分布~(x)
是我们寻找的一个简单、可采样的分布,且
p(x)f(x)
都可以将样本
x
输入到
p
f
中得到。那么我们依然可以通过蒙特卡洛法,从
~(x)
中采样大量的样本来近似计算

EN1xip~(x),i=1Np~(xi)p(xi)f(xi)(2)


 
 
3. 强化学习中的重要性采样

上面说到重要性采样是因为原始数据分布
p(x)
难以直接采样的,从而借助一个简单、可采样的分布
~(x)
来计算期望
E
,但是强化学习中使用重要性采样不是因为
p(x)
难以采样,而是不想通过
p(x)
去采样。我们知道强化学习算法有两个策略:一个用于决策的behavior policy
μ
,一个用于更新的target policy
π
,当
μ
π
一样时就是on-policy算法,不一样时就是off-policy算法。现在我们看一下贝尔曼方程:

Q(s,a)=s,rp(s,rs,a)[r+γV(s)]=Es,rp(s,rs,a)[r+γEaπ[Q(s,a)]](3)

贝尔曼方程中需要计算的期望
Eaπ[Q(s,a)]
是基于概率分布
π
的,如果在更新时不满足
aπ
这个条件就需要使用重要性采样了,而off-policy算法是使用另一个策略
μ
来进行决策的(使用
μ
来进行决策是因为要进行探索,比如
ϵgreedy
,经典的探索与利用的平衡问题),所以很多情况下无法满足
aπ
这个条件,就需要重要性采样来弥补了,否则计算出的
Q
值不符合其定义。对于贝尔曼方程中的
Es,rp(s,rs,a)
我们其实不需要考虑,因为
p(s,rs,a)
是环境内部的状态转移概率,智能体得到的反馈信息一定是从
p(s,rs,a)
采样得到的。
4. 为什么Q-Learning、DQN、DDPG等算法可以不用重要性采样

按理说off-policy算法使用了μ和π两个不同的策略,应该通过重要性采样来修补,但是目前大多数主流的off-policy算法都没有使用重要性采样,这也是让很多人疑惑的一点。首先我们看公式(3)中的贝尔曼方程,它计算的期望
Eaπ[Q(s,a)]
是基于概率分布
π
的,要求在更新
Q(s,a)
时必须满足
aπ
这个条件,不满足的话就需要重要性采样。这里要注意的是,贝尔曼方程是在更新的过程中使用的,那么就要求
aπ
这个条件是指在更新时满足,而不是在决策时满足。通俗来讲,就是说贝尔曼方程要求你在更新时从
π
中采样
a
,然后用
Q(s,a)
去更新
Q(s,a)
,如果不满足该条件则需要重要性采样,但是在更新完毕之后,真正决策的时候,是不需要一定满足这个条件的。这也是网上很多人说得“要更新的
(s,a)
与采样
a
的策略无关”,但其实他们都没有从本质解释,这个问题的本质需要围绕贝尔曼方程与概率分布来解释,需要服从分布的是
a
,而不是
a
。综上所述,需不需要重要性采样,我们只需要考虑在更新时是否满足
aπ
这个条件,一定要记住“更新时”、“
aπ
”这两点。

 
 
4.1 Q-Learning

一般而言,大多数off-policy算法的 target policy
π
是一个纯greedy的策略,每次都选择
Q
值最大的动作; behavior policy
μ
ϵgreedy
策略,每次有
ϵ
的概率随机选择动作,这些算法使用贝尔曼方程更新的都是 target policy
π
,behavior policy
μ
只是用来在决策时进行探索的。我们先来看一下Q-Learning的更新公式:
Q(s,a)=Q(s,a)+α(r+γamaxQ(s,a)Q(s,a))(4)

可以发现Q-Learning使用的是1-step TD target,通过
maxQ(s,a)
来更新
Q(s,a)
,即
a=argmaxQ(s,a)
,而
a
依然是从 target policy
π
中采样的,即满足
aπ
,那么就不需要重要性采样。

但是要注意的是,如果使用的是n-step TD,就需要重要性采样了。我们可以先看一下
Q
值的具体定义:
Q(s,a)=Eπ[k=0γkrt+k+1st=s,at=a](5)

通过该定义我们知道后续所有的动作都必须从
π
中采样,满足
at+k+1π
,这样才能保证后续的所有
rt+k+1
都是由
π
得到的,才能正确反应的 target policy
π
的收益。那么我们再来看一下n-step target是怎么计算的:
Gtn=k=0n1γkrt+k+1+γnV(st+n)(6)

计算n-step target
Gtn
使用的是已经生成的样本中的
rt+k+1
,而这些
rt+k+1
是由智能体通过behav-ior policy
μ
和环境不断交互产生的,即
at+k+1μ
,不符合公式(5)中
Q
值的定义,此时就需要重要性采样了。

需要注意的是:前面在1-step TD那里不用公式(3)中的贝尔曼方程,而使用公式(5)中
Q(s,a)
的定义来理解也是行得通的——即后续所有的
rt+k+1
都是由
π
得到的。

 
 
4.2 DQN

首先我们来看一下DQN的损失函数:

L=E(s,a,r,s)D[(r+γmaxQtarget(s,a;θ)Q(s,a;θ))2](7)


其中
D
是Replay Buffer,
θ
是Target Net——
Qtarget
的参数。现在我们来做一个简单的定义:令
πonline
表示
Q
对应的贪心策略,
μonline
表示
Q
对应的
ϵgreedy
策略,
πtarget
表示
Qtarget
对应的贪心策略。因此很多人就会产生下面主要的两个疑惑:

1DQN使用了经验回放,整个
D
中的样本是由不同时刻的策略采样得到的,并不是同一个策略得到的,为什么不需要重要性采样。
2更新
Q
时使用的
a
是从
Qtarget
对应的
πtarget
中选择的,与
Q
对应的
πonline
不是同一个策略,为什么不需要重要性采样。

首先我们来回答第一个问题,虽然DQN使用了经验回放导致采样的
(s,a,r,s)D
是不同时刻下的不同策略生成的,但是我们前面说到,是否使用重要性采样需要在更新时满足
aπ
,这与经验中的
(s,a,r,s)
无关,因此经验回放并不需要重要性采样。

接下来我们回答第二个问题,由于DQN是基于Q-Learning的,我们可以把它的更新方式写成和Q-Learning类似的形式:

Q(s,a;θ)=Q(s,a;θ)+α(r+γmaxQtarget(s,a;θ)Q(s,a;θ))(8)


和Q-Learning一样,DQN计算出
y=r+γmaxQtarget(s,a;θ)
作为
Q(s,a;θ)
更新的target,让
Q(s,a;θ)
不断朝着target更新。此时我们可以发现,公式(8)中的
a
是从
πtarget
中采样的,也就是说,
Q(s,a;θ)
衡量的最终目标是
πtarget
对应的累积折扣奖励,因此在这里的
πtarget
才是 target policy
π
,而不是
πonline
,而
a
始终是从
πtarget
中采样的,因此不需要重要性采样。再多解释一点,虽然
Q(s,a;θ)
衡量的最终目标是
πtarget
对应的累积折扣奖励,但是由于梯度下降等因素使得
Q(s,a;θ)
的更新存在误差,在更新的过程中还未完全拟合至目标值target,从而导致
πonline
的出现,这也是为什么将
Qtarget
固定一段时间的原因,因为要让
Q(s,a;θ)
拟合至目标值target,但是
πonline
的出现并不需要重要性采样来弥补,因为
a
始终是从
πtarget
中采样的。

 
 
4.3 DDPG

首先我们来看一下DDPG的Critic——
Q(s,a;θ)
的损失函数:

Lcritic=E(s,a,r,s)D[(r+γQtarget(s,πtarget(s;η);θ)Q(s,a;θ))2](9)


和DQN类似,每次更新时的
a
始终是从
πtarget(s;η)
得到的,不需要重要性采样。

对于Actor——
π(s;η)
,我们知道Actor-Critic方法是要通过Critic来评估Actor并进行更新。那么要想通过
Q(s,a;θ)
来更新
π(s;η)
,就需要保证对应的
a
是从
π(s;η)
中采样得到的,否则
Q(s,a;θ)
评估的就不是
π(s;η)
的好坏了。我们看一下
π(s;η)
的损失函数:

Lactor=EsD[Q(s,π(s;η))](10)


满足
aπ(s;η)
,因此不需要重要性采样。

 
 
5. 总结

重要性采样其实原本是统计学中的一种方法,它主要是围绕概率分布这一数学概念开展的,因此大家在结合强化学习理解的时候从分布的角度去理解会更好,分布在强化学习中也是一个十分重要的概念。对于强化学习中重要性采样的用途、Q-Learning等算法为什么不需要重要性采样等问题,只要牢牢扣紧分布这个主题,那么就很容易理解了。
 
 
 
 
posted @ 2025-06-22 16:06  有何m不可  阅读(314)  评论(0)    收藏  举报