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的具体实现细节与改进方法,由于本人目前对此并没有深入研究,但从这篇论文的介绍来看其基本原理与实现过程已经非常清晰明了
其实在这种情况下,DQN算法中对动作值的评估存在过高的估计值,这一问题与Q-learning算法所面临的问题具有相似性,因此Q-Learning是如何解决这一核心问题的方法就是采用Double Q-Learning策略,这也是我们今天介绍Double DQN算法所依据的基础理论来源之一.然而,关于Double Q-Learning的具体实现细节与改进方法,由于本人目前对此并没有深入研究,但从这篇论文的介绍来看其基本原理与实现过程已经非常清晰明了
(1)首先:为什么 DQN 会出现高估的情况呢?
在论文第2页中提出的定理1旨在 解释该问题。为了进一步阐述这一内容,我可以从个人理解的角度重新阐述:假设最优策略矩阵Q被定义为
注:此处"被定义为"替代了原文中的"为",既保持了原意又增加了专业性

,我们的估计值为

,对于DQN,策略为选用最大 Q 的动作为输出,就使得

,然后论文中假设了 Q 的估计值

是对

作为无偏估计,
我对这个概念还存在一些疑惑,
因为在DQN算法中,
V(s)被设定为最大Q值而非通过贝尔曼方程直接得到的结果(此时V(s)应被视为Q值的期望),
因此我们只能假定。

是对

的无偏估计,那后边怎么证明高估呢??只能说

有可能比

大,而不能解释为必然。我是这么理解的,当

小于

时,就会存在一定的误差,然后使得

继续增加,而当

偶然出现大于

时,由于更新操作

存在max操作,导致下一个状态的高估会传导至当前的状态,继而引起当前状态的高估,再继续向前传导。比如举个例子:
在训练过程中,状态s呈现了高估现象;随后其上一时刻的目标值也会高于真实值,并进而导致预测值同样偏高;这一情况会持续传递至更早的时刻。
(2)基于实验结果来看,DQN 确实存在高估的问题。如图1所示,在四个不同的游戏场景中(仅排除Double DQN的情况),其他的游戏同样会表现出高估现象,并且这种情况表现得较为常见。

图1 DQN 和 Double DQN 的 Q 估计值与真实值曲线图
(3)高估有什么影响?
如图二所示...上部区域表现为Q值...下部区域表现为得分...从图中可以看到当DQN发生过度估计时,在这些区域中会出现一定的下降趋势进而推断高估会对策略的效果产生负面作用。

图2 DQN 与 Double DQN 的估计值和游戏得分
2 如何解决呢?
论文中直接提到了解决方案, 但并未对为何这样做较为优秀进行过多阐述, 可以先介绍文中的解决方案, 然后阐述我对这一方案的理解.
将原有 DQN 的 target :

改为如下所示的

:

其中

为当前与环境交互的网络的参数,

为暂存的 target 网络的参数。
3 效果
如图1所示和如图2所示已经展示了部分效果,在测试过程中作者还引入了许多其他的游戏进行评估。其中大部分的游戏表现都有所提升因此,在此不做进一步阐述
4 为什么会有用呢??
在论文中提供了一个简明的例子来阐述其有效性及其背后的原理,在这一部分中我们主要关注的是状态空间的一维化处理方式以及相关的价值函数逼近方法。为了验证这种处理策略的有效性,在实验阶段我们采用了以下步骤:首先定义了一个理想的目标函数Q^*并使用多项式模型对其进行近似表示;随后通过应用Q-learning方法计算得到的Q估计值的最大值与最优策略下的最大值进行了对比;结果表明所得到的结果具有显著优势。在此基础上我们进一步分析了后续状态的价值评估机制:随后的状态V由随机选取的动作及其对应的Q值决定(如动作选择遵循i+5或i-5的策略),这种设计虽然简化了计算过程但仍能保证算法的有效收敛性
我个人认的理解:
我们仅考虑让一个估计量逐步趋近于真实值的过程中,在初始阶段可能会围绕真实值上下波动。经过多次迭代后最终会收敛至真实值附近。然而,在实际应用中max运算会导致高估预测值传递到下一个状态从而使得后续状态的预测也被推高到过高的水平。为了规避这一问题我们需要避免将高估预测传递给下一个状态。为此Double DQN采用了一种更为严谨的方法即通过分别利用两个网络来实现这一目标:第一层网络用于选择具有最高价值的动作而第二层网络则负责记录该动作的价值评估。只有当两个网络所选动作对应的Q值得最大时这种现象才会发生但由于两者独立工作其同步概率相对较低从而能够有效降低过拟合带来的误差进而提升整体算法性能
5 还有什么改进办法吗(个人理解)?
必须确保迭代公式中的目标变量始终是一个无偏估计量才能有效解决问题。因此我们不能直接采用max操作来计算目标变量。然而我们可以通过替代方法例如是否可以利用V(s)来评估目标变量接着V(s)可以通过贝尔曼方程进一步推导然而这样做就需要同时获取每个动作发生的概率信息例如是否可以采用两套神经网络其中一套负责预测各个动作的概率分布另一套则用于估计Q值函数这样的组合可能会让我们逐渐接近于A3C算法的思想或者我们可以考虑采用Dueling DQN的方法即将Q函数分解为价值函数V和策略优势函数A并且强制使A的期望归零从而使得V能够被用来作为target

然后更新Q。
6 最后
这篇内容较为复杂, 主要涉及动机(motivation)与原理(principle). 为什么会存在这样的问题? 如何应对这一类的问题? 这种方法是否奏效? 我也有一些个人见解, 但缺乏理论支撑. 希望看到该博客的可以多多交流
