RL论文阅读【四】Deep Reinforcement Learning with Double Q-learning(Double DQN)

1 废话

今天特地早回来了点,天天一点睡,熬不住啊。把 Double DQN 看完了,收获还是不小的吧,虽然公式早就知道,不过把为什么DQN会高估和怎么解决的思路介绍的比较清楚了。

2 Motivation

其实吧,DQN 存在的高估问题和 Q-learning 是一样的,所以 Q-learning 是如何解决的呢?答案就是 Double Q-learning,所以我们今天的 Double DQN 也就来源于该算法。不过 Double Q-learning 我也没看,反正今天这篇 paper 介绍挺清楚的。

(1)首先:为什么 DQN 会出现高估的情况呢?

论文第二页的定理 1 就是在解释该问题 ,按照我自己的理解再解释一下:假设最优的Q为\hat{Q}(s, a),我们的估计值为Q^{t}(s, a),对于DQN,策略为选用最大 Q 的动作为输出,就使得V^{*}(s) = max_{a}\hat{Q}(s, a),然后论文中假设了 Q 的估计值\sum_{a}Q^{t}(s, a)是对 V^{*}(s)的无偏估计,这我有点不太理解哈,因为我们在 DQN 的计算中已经使得 V(s) 是最大 Q 值了而非是使用贝尔曼方程计算的 Q(这时 V(s) 才应该是 Q 的期望),我认为只能假设 Q^{t}(s, a) 是对 \hat{Q}(s, a) 的无偏估计,那后边怎么证明高估呢??只能说 max_{a}Q^{t}(s, a) 有可能比 max_{a}\hat{Q}(s, a)大,而不能解释为必然。我是这么理解的,当 Q^{t}(s, a) 小于 \hat{Q}(s, a) 时,就会存在一定的误差,然后使得 Q^{t}(s, a) 继续增加,而当 Q^{t}(s, a) 偶然出现大于 \hat{Q}(s, a)时,由于更新操作Q(s, a) = r + \gamma max_{a'}Q(s', a')存在max操作,导致下一个状态的高估会传导至当前的状态,继而引起当前状态的高估,再继续向前传导。比如举个例子:

在训练过程中,状态s出现了高估,然后的前一个状态的 target 就会高于真实值,继而导致预期值也高于真实值,然后再前一个状态的 target 也会高于真实值,由此一直向前传导。

(2)事实上通过实验,DQN 的确是会出现高估的问题的,如图1展示了4个游戏的结果(先不看 Double DQN),在其他的游戏中同样会出现高估的现象,非常普遍。

图1 DQN 和 Double DQN 的 Q 估计值与真实值曲线图

(3)高估有什么影响?

 如图二所示,上面是Q值,下面是得分,可以看出当DQN进行过估计的时候得分也会有一定程度的下降,说以可以理解为高估会对策略产生不利的影响。

图2 DQN 与 Double DQN 的估计值和游戏得分

如何解决呢?

论文直接说了解决方案,但是实际上并没有太多介绍为什么这么做比较好,先说文中的解决方案吧,然后再说一下我的理解。

将原有 DQN 的 target :Y^{DQN}_{t}改为如下所示的 Y_{t}^{DoubleDQN}

Y_{t}^{DoubleDQN} = r + \gamma Q(s, argmax_{a}(Q(s, a, \theta_{t})), \theta'_{t})

其中 \theta_{t} 为当前与环境交互的网络的参数,\theta_{t}' 为暂存的 target 网络的参数。

3 效果

图1和图2已经展示了一定的效果,作者又用了很多别的游戏来测试,大部分效果都是有提升的,这部分就不过多介绍。

4 为什么会有用呢??

paper 中有一个简单的例子尝试说明为什么会有用,这部分也比较多,懒得写了,大概就是用一个一维的状态,设定一个真值Q,在用多项式函数拟合一个 Q,然后验证了用 Q-learning 的方法计算 Q 估计值得到的最大值是比最优 Q 的最大值要大的,然后下一个状态的V值为随机一个动作的Q(paper 中写的选择的动作为 i+5 或 i-5),然后来更新当前的 Q 值(Double Q-learning 的思想)得到的 Q 的估计值的最大值与最优 Q 的最大值是差不多的。但是:你下一个状态的 V 值都用随机的动作的Q值了,你还能叫 Q-learning 吗?还能收敛吗??

我个人认的理解:

我们先只考虑让一个估计值去逼近真实值,那么这个估计值可能会在真实值上下波动,最后趋近去真实值,但是 max 操作使得被高估的预测值会传导至下一个状态,使得下一个状态的预测会趋近于一个高估的值。那么解决办法就是不要让一个高估的值传导至下一个状态,所以 Double DQN 做的就是用一个网络选最大值的动作,另一个网络获得这个动作的值,这样只有两个网络的Q最大值对应的动作相同时,即第一个网络选出来的动作在第二个网络里的Q值刚好也是最大的,但是这样几率就大大减小了,所以会使得效果改善不少。

5 还有什么改进办法吗(个人理解)?

只有在迭代公式中的 target 对于真实值永远是无偏的才能解决该问题。那么就不能使用 max 操作来计算 target,可以使用一个无偏的值,比如能否用 V(s) 来计算 target,然后 V(s) 再用贝尔曼公式计算,但是这样就必须知道执行每个动作的概率了,SO,能否用两个网络,一个网络输出每个动作的概率,然后另一个网络估计Q值,不对啊。。怎么越来越像 AC 了。。。或者使用 Dueling DQN(将 Q 分成了 V 和 A,还强行将 A 的期望拉成 0),用 V 来计算target:Y=r+\gamma V(s')然后更新Q。

 

6 最后

这篇看的比较费脑子,主要是 motivation,原理。为什么出存在这种问题,如何解决这种问题,为什么能解决?我上边也说了好多我的理解,很多直观理解,没有啥理论证明,也希望看到该博客的可以多多交流,不喜勿喷。

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值