为什么Q-learning不用重要性采样(importance sampling)?

为什么Q-learning不用重要性采样(importance sampling)?

文章目录

  • 为什么Q-learning不用重要性采样(importance sampling)?
    • 前言:
    • 参考链接:
    • 理解过程:
      • 1step-Q-learning的定义公式:
      • 2step-Q-learning:
    • 总结:
      • 联系方式

前言:

前几天在整重要性采样,然后提到的一个模糊的概念就是:

在异策略(off-policy)方法中,行动策略 μ \mu μ即用来产生样本的策略,所产生的轨迹概率分布相当于重要性采样中的 q [ z ] q[z] q[z],用来评估和改进的策略 π \pi π所对应的轨迹概率分布为 p [ z ] p[z] p[z],因此利用行动策略 μ \mu μ所产生的累积函数返回值来评估策略 π \pi π时,需要在累积函数返回值前面乘以重要性权重。

在Q-learning中刚好行动策略为 ϵ \epsilon ϵ- s o f t soft soft,目标策略为贪婪策略 π \pi π,明明策略不一样了,为啥就不用重要性采样了呢?

且Q-learning, DQN, DDPG等,都没有用到重要性采样。
这究竟是什么鬼东西?

为了搞明白这个点,我在知乎上搜了一下,问了师弟和群友,在群友的指点下,终于知道了关键所在。

参考链接:

  1. https://www.zhihu.com/question/302634995/answer/745028841
  2. https://www.zhihu.com/question/302634995/answer/719233389

理解过程:

我们先看一下Q learning的update公式:
在这里插入图片描述

1step-Q-learning的定义公式:

Q ( s , a ) = E s ′ ∼ p ( s , a ) [ r ( s , a , s ′ ) + m a x a ′ Q ( s ′ , a ′ ) ] Q(s,a)=E_{s'\sim p(s,a)}[r(s, a, s')+max_{a'}Q(s', a')] Q(s,a)=Esp(s,a)[r(s,a,s)+maxaQ(s,a)]

白话翻译:

关于Q值-V值的定义,以及互相之间的关系,可以看这篇文章:强化学习入门 第一讲 MDP

对于状态s,采取动作a的Q值,由于采取了动作a后,会有不同的s’,因此有一个状态转移概率p(s’|s,a),这样就得给所有的s’求期望。
而概率 p ( s ′ ∣ s , a ) p(s'|s,a) p(ss,a)是由环境决定的,与动作策略无关,即p(s’|s,a)不存在重要性因子。到这一步,其实已经能明确了,对于Q(s,a)来说,变量只有p。

再往前推一步,transition(s, a, r, s’)中的(s, a)是根据behavior policy采样得到的,为什么Q(s, a)和r(s, a)就和behavior policy无关了?
其实这里跟哪个policy来的没关系,因为在这里我们其实可以理解为是人为指定,或者从经验池中随机采样了这组(s, a)。
更新Q(s, a)时,它对自己的更新不会因为它是来自target or behavior policy而存在任何影响;而 r ( s ′ ∣ s , a ) r(s' | s, a) r(ss,a)当我们指定更新哪个(s, a)的时候,就只取决于环境如何定义reward function了,于是 r ( s ′ ∣ s , a ) r(s' | s, a) r(ss,a)也已经确定下来了,同样也是跟来自target or behavior policy无关。
那么至于最后的 m a x a ′ Q ( s ′ , a ′ ) max_{a'}Q(s', a') maxaQ(s,a)因为target policy是greedy的,且这里也是通过greedy选择了Q在s’下对应最大价值的a’,所以这一块的数据仍然是相同策略,不用加入importance sampling。

2step-Q-learning:

看了好几个知乎答主的回答,都在说多步更新应该加重要性系数,但也有人说,在DQN-DDPG这类算法中,我们的目标策略是确定的,而重要性采样是两个随机分布的关系,你整一个确定性策略,比例不是0,就是1/p,这没意思啊。所以下面的推导花了我一天时间,其实并没有什么用。难过

—更新,看了群友推荐的一篇文章,果然off-policy的Q-learning都不适合用重要性采样。

Q ( s , a ) = E s ′ ∼ p ( s , a ) , s ′ ′ ∼ p ( s ′ , π ( s ′ ) ) [ r ( s , a , s ′ ) + γ r ( s ′ , a ′ , s ′ ′ ) + γ 2 m a x a ′ ′ Q ( s ′ ′ , a ′ ′ ) ] Q(s,a)=E_{s'\sim p(s,a), s''\sim p(s',\pi(s'))}[r(s, a, s')+\gamma r(s', a', s'')+\gamma ^2 max_{a''}Q(s'', a'')] Q(s,a)=Esp(s,a),sp(s,π(s))[r(s,a,s)+γr(s,a,s)+γ2maxaQ(s,a)]
期望转成求和的形式就容易看出来了:
Q ( s , a ) = ∑ s ′ P ( s ′ ∣ s , a ) [ r ( s ′ ) + ∑ a ′ π ( a ′ ∣ s ′ ) ∑ s ′ ′ P ( s ′ ′ ∣ s ′ , a ′ ) ( γ ∗ r ( s ′ ′ , s ′ , a ′ ) + γ 2 m a x a ′ ′ Q ( s ′ ′ , a ′ ′ ) ] Q(s,a)=\sum_{s'}P(s'|s,a)[r(s')+\sum_{a'}\pi(a'|s')\sum_{s''}P(s''|s',a')(\gamma*r(s'',s',a')+\gamma^2max_{a''}Q(s'',a'')] Q(s,a)=sP(ss,a)[r(s)+aπ(as)sP(ss,a)(γr(s,s,a)+γ2maxaQ(s,a)]

这个期望涉及的概率为 p ( s ′ ∣ s , a ) ∗ π ( s ′ ) ∗ p ( s ′ ′ ∣ s ′ , a ′ ) p(s'|s,a)*\pi(s')*p(s''|s',a') p(ss,a)π(s)p(ss,a) ,注意其中的 π \pi π 如果还是使用Q网络贪婪策略整出来的动作a’,那么就不需要重要性采样。
但如果 ϵ \epsilon ϵ- s o f t soft soft 作为behavior策略产生 a ′ a' a ,就需要乘上重要性因子。毕竟目标策略是贪婪策略。

下面举一个具体的例子:
我们简化这个实验:

  1. 所有的状态转移概率P(s’|s,a)都为1;
  2. 动作维度为2,分别称作 a 1 a^1 a1 a 2 a^2 a2
  3. 采样策略(behavior policy)为均匀分布,即所有的 p ( a 1 ∣ s ) = 0.5 p(a^1|s)=0.5 p(a1s)=0.5 p ( a 2 ∣ s ) = 0.5 p(a^2|s)=0.5 p(a2s)=0.5
  4. 目标策略为贪婪策略,即 P ( a r g m a x a Q ( s , a ) ∣ s ) = 1 P(argmax_aQ(s, a)|s)=1 P(argmaxaQ(s,a)s)=1,非最大Q值的动作为0,假设目前所有的 Q ( s , a 1 ) Q(s,a^1) Q(s,a1)是最大值,即 p ( a 1 ∣ s ) = 1 p(a^1|s)=1 p(a1s)=1 p ( a 2 ∣ s ) = 0 p(a^2|s)=0 p(a2s)=0关于argmax的物理含义可以看这篇博客
  5. 当前步的状态为 s 1 1 s_1^1 s11,动作为 a 1 1 a_1^1 a11 a 1 2 a_1^2 a12
    为什么Q-learning不用重要性采样(importance sampling)?_第1张图片

总结:

通过上面的一系列表述,其实单步Q-learning,因为r的出现和策略无关,就是单纯的受环境的影响,这个不需要重要性采样;
而多步的,我目前感觉也不应该用,我看别人代码里面也没有加这玩意儿。
有其他理解的同学,欢迎指导分享!

联系方式

ps: 欢迎做强化的同学加群一起学习:
深度强化学习-DRL:799378128
欢迎关注知乎帐号:未入门的炼丹学徒
CSDN帐号:https://blog.csdn.net/hehedadaq

你可能感兴趣的:(DRL,学习笔记,Q-learning,强化学习,RL,重要性采样,off-policy)