Deep Reinforcement Learning with Double Q-learning(Double DQN)论文学习和公式推导

最近刚开始使用DQN,也会用DDQN,但是背后的原理不理解,所以读了这篇论文,下面以翻译并附带一些解释和公式推导的方式讲讲我个人的理解,有疑问可以多交流。

Abstract

Q-learning算法会在某些情况下存在对action values的过估计(overestimation)问题,但这种过估计是否普遍存在,是否影响性能,是否可避免,以前尚不清楚。作者在本文回答了这些问题,且证明了用于解决表格式问题(状态动作是一个一个离散的)的Double Q-learning算法背后的思想可以推广用于大规模函数逼近。作者提出了一种改进的DQN算法,减少了过估计现象。

 

Q-learning有时学到不切实际的高action value,原因是在估计action value时包含了max操作。以前的工作中,overestimation被归因于不够灵活的函数逼近(Thrun and Schwartz, 1993)和噪声(van Hasselt, 2010, 2011)。本文作者统一了这些观点,证明了当action value不准确时,无论逼近误差来源如何,都会产生overestimation问题。在实际学习过程中,不精确的价值估计是经常见到的,所以overestimation问题会经常出现。

overestimation是否会产生负面影响是未知的,但过度乐观的价值(overoptimistic value )本身不一定是问题,如果所有value均匀地提高了,那每个动作的相对好坏并不会改变,对应的策略也不会受到影响。但是如果overestimation不是均匀产生,那它可能会对学习到的策略产生负面影响。

为了检验实践中overestimation是否大规模出现,作者研究了最新的DQN算法(Mnih et al., 2015)。从某种程度上讲(针对前面提到的逼近函数不够灵活和噪声),DQN的设计是最佳方案,因为神经网络提供了灵活的函数逼近功能,并且有较低的渐近逼近误差,同时环境(Atari 2600)的确定性也防止了噪声的影响。在即使在这样有利的条件下,DQN依然存在overestimation问题(这也就说明了前面Thrun and Schwartz和van Hasselt的观点都是片面的)。

本文证明了Double Q-Learning 算法背后的思想(最初在表格形式的环境中提出)可以推广到任意函数逼近,包括神经网络。将该思想应用到DQN上提出Double DQN,并证明了该算法不仅可以估计出更准确的value,而且在游戏中获得了更高的分数。这也反映出DQN中的overestimation确实导致policy变差,减少overestimation有益于学习到更好的policy。

 

Background

对于state和action数量过大的问题,由于参数量巨大,Q-learning无法学习到所有状态下所有动作的Q值,所以引入参数\theta,用Q\left ( s,a;\theta \right )近似Q\left ( s,a \right ),以此来用少量的参数\theta拟合实际的价值函数,公式(1)是参数\theta的更新公式,公式(2)是目标Y{_{t}}^{Q}的定义。

公式(1)和(2)的推导:

目标是确定参数\theta最小化近似函数Q\left ( S,A;\theta \right )和实际函数Q\left ( S,A \right )之前的均方误差(MSE),令均方误差为J\left ( \theta \right )

                                                                           J\left ( \theta \right )= \mathbb{E}\left [ \left ( Q\left ( S,A \right )-Q\left ( S,A;\theta \right ) \right )^{2} \right ]

\theta需要朝着J\left ( \theta \right )梯度负方向调整来最小化J\left ( \theta \right )

                                                                            \begin{aligned} \Delta \theta &= -\frac{1}{2}\alpha \nabla_{\theta }J\left ( \theta \right )\\ &=\alpha \mathbb{E}\left [\left ( Q\left ( S,A \right )-Q\left ( S,A;\theta \right ) \right )\nabla_{\theta }Q\left ( S,A;\theta \right ) \right ] \end{aligned}

\alpha是更新步长,可以理解为学习率,使用随机梯度进行更新来近似该期望(取一批样本计算平均值当作期望),

                                                                            \Delta \theta=\alpha \left ( Q\left ( S,A \right )-Q\left ( S,A;\theta \right ) \right )\nabla_{\theta }Q\left ( S,A;\theta \right )

由于真实的价值函数Q\left ( S,A \right )是未知的,上述公式无法直接使用,因此需要找到真实价值函数的替代TD\left ( 0\right )使用的是R_{t+1}+\gamma Q\left ( S_{t+1},A_{t+1};\theta_{t} \right )作为替代,而基于TD\left ( 0\right )的Q-learning进一步改进,用当前策略(greedy策略)去选择下一状态的动作,

                                     \begin{aligned} R_{t+1}+\gamma Q\left ( S_{t+1},A_{t+1};\theta_{t} \right ) &=R_{t+1}+\gamma Q\left ( S_{t+1},\underset{a_{t+1}}{\textup{argmax}}\ Q\left ( S_{t+1},a_{t+1} ;\theta_{t} \right );\theta _{t}\right ) \\ &=R_{t+1}+\underset{a_{t+1}}{\textup{max}}\ \gamma Q\left ( S_{t+1},a_{t+1};\theta_{t} \right ) \end{aligned}

上述推导结果就是论文里的公式(2),再用上述结果替代真实的Q\left ( S,A \right ),就得到了论文里的公式(1)。

 

Deep Q Network

对于DQN网络\theta就是多层神经网络的参数,参数对于n维状态空间,包含m个动作的问题,DQN可以就相当于从\mathbb{R}_{n}\mathbb{R}_{m}的映射函数,Mnih et al. (2015)等人提出的DQN有两个重要的部分,一是使用target network,另一个是experience replay。target network结构和policy network一样,参数为\theta^-,每隔\tau步将policy network的参数复制到target network,然后保持不变直到下次复制。target network用来估计目标,公式(2)里的目标就变为公式(3),

experience replay就是将观察到的状态转换样本存储起来,并随机均匀取样来更新网络参数。

 

Double Q-learning

在Q-learning和DQN的参数更新目标中(公式2和3),max操作使用相同的value来选择动作并评估动作,拿公式(2)举例子,公式中a的选择是通过\underset{a}{\textup{argmax}}\ Q\left ( S_{t+1},a ;\theta_{t} \right )得到的,即令Q\left ( S_{t+1},a ;\theta_{t} \right )最大的a;而选择a后Q值的估算也是通过Q\left ( S_{t+1},a ;\theta_{t} \right )得到的,都使用了参数为\theta _{t}的动作值函数Q,所以说动作的选择和评估使用了相同的value。而正是这个原因,使得overestimated value更容易被选择,从而导致overestimation。为了避免这种情况,将动作的选择和评估分离(decouple),这就是Double Q-learning的思想。具体的实现方法是:设置两个结构相同价值函数,每次将样本随机分配给某一个价值函数学习,从而学到两组权重,\theta\theta^{'},在每次更新时,一组权重用来确定贪婪策略(选择动作),另一组权重用于评估动作(计算Q值得到更新目标)。为了更清晰的比较,本文作者将公式(2)(Q-learning的目标)拆分重写为

Double Q-learning的目标可以表示为公式(4),

其实这个拆分在上面的推导过程中已经用到了,这里应该很好理解了,Q-learning中动作的选择和评估都是使用的权重\theta_{t},而Double Q-learning中动作的选择和评估分别使用了权重\theta_{t}\theta_{t}^{'}

 

Overoptimism due to estimation errors

Q-learning的overestimation问题首先由Thrun and Schwartz (1993)研究,他们发现如果action value包含在\left[-\epsilon ,\epsilon \right]内均匀分布的随机误差,则每个目标被过估计到\gamma \epsilon \frac{m-1}{m+1}m是动作数量。此外,Thrun and Schwartz给出了一个具体的示例,其中这些overestimation甚至导致了此优策略,并在使用函数逼近的测试问题中显示了overestimation。后来,van Hasselt (2010) 提出,即使使用表格表示形式,环境中的噪声也可能导致overestimation,并提出了Double Q-learning。

作者将在本节证明,无论是环境噪声,函数逼近,不稳定,还是其他来源,任何类型的估计误差都可能导致向上偏差(upward bias)。在实践中,由于真实值是未知的,任何方法都会在学习过程中产生一些不准确的地方。上面提到的Thrun and Schwartz(1993)的结果给出了特定设置下Q-learning的overestimation上限,还需要进一步推导出Q-learning的overestimation下限

作者给出了定理1,这里大概解释一下:在状态s下所有最优action value都相等,即对任意动作a,Q_{*}\left ( s,a \right )=V_{*}\left ( s \right ),也就是说s状态下最优Q值与动作无关。令Q_{t}V_{*}\left ( s \right )无偏估计\sum_{a} \left (Q_{t}\left ( s,a \right )-V_{*}\left ( s \right ) \right )=0,平均误差为0但不是每个动作的Q值误差都为0,\frac{1}{m}\sum_{a} \left (Q_{t}\left ( s,a \right )-V_{*}\left ( s \right ) \right )^{2}=C,C> 0,m是状态s下可执行动作数量,m\geq 2。在上述条件下,\textup{max}_{a}\ Q_{t}\left ( s,a \right )\geq V_{*}\left ( s \right )+\sqrt{\frac{C}{m-1}},这就是Q-learning的tight下限(不等式能放缩次数越多,不等式越松弛,作者也证明了这个不等式是tight)。在相同的条件下,Double Q-learning估计的绝对误差下限为0。

Deep Reinforcement Learning with Double Q-learning(Double DQN)论文学习和公式推导_第1张图片

证明:记动作a的Q值的绝对误差为\epsilon _{a}=Q_{t}\left ( s,a \right )-V_{*}\left ( s \right ),每个动作的误差构成一个集合\left \{ \epsilon _{a} \right \},假设\textup{max}_{a}\ \epsilon _{a}< \sqrt{\frac{C}{m-1}}\left \{ \epsilon _{a} \right \}中的正误差记为\left \{ \epsilon _{i}^{+} \right \},大小为n严格负误差记为\left \{ \epsilon _{i}^{-} \right \},大小为m-n(注意作者用了positive和strictly negative,也就是说在正误差集合里可以取到0,负误差集合里不能取到0)。

如果n=m,即没有负的误差,已知平均绝对误差\sum _{a}\epsilon _{a}=0,且绝对误差都非负,所以所有的\epsilon _{a}都必须取0。而条件中已经说了不是每个误差都为0,\sum _{a}\epsilon _{a}^{2}=mC,此时就与条件矛盾,所以n\leq m-1。由于\sum _{i=1}^{n}\epsilon _{i}^+\leq n\textup{max}\epsilon _{i}^{+}<n\sqrt\frac{C}{m-1},且\sum _{a}\epsilon _{a}=0,可以推出\sum _{j=1}^{m-n}\left|{\epsilon _{j}^-}\right|<n\sqrt\frac{C}{m-1}m-n个绝对值加起来小于n\sqrt\frac{C}{m-1},那么单个绝对值的最大值一定小于n\sqrt\frac{C}{m-1},即\textup{max}_{j}\left|\epsilon _{j}^{-}\right|<n\sqrt\frac{C}{m-1},然后有

                                                                \begin{aligned} \sum _{j=1}^{m-n}\left ( \epsilon _{j}^{-} \right )^{2} &=\sum _{j=1}^{m-n}\left|\epsilon _{j}^{-} \right|\left|\epsilon _{j}^{-} \right| \\ &\leq \sum _{j=1}^{m-n}\left|\epsilon _{j}^{-} \right|\cdot \textup{max}_{j}\left|\epsilon _{j}^{-} \right| \\ &=\textup{max}_{j}\left|\epsilon _{j}^{-} \right| \cdot \sum _{j=1}^{m-n}\left|\epsilon _{j}^{-} \right| \\ &<n\sqrt\frac{C}{m-1}n\sqrt\frac{C}{m-1} \end{aligned}

此时可以推出\sum _{a=1}^{m}\left ( \epsilon _{a} \right )^2< mC(这一步中间过程论文里有我就省略了),然而推出的这个结果与条件\sum _{a}\epsilon _{a}^{2}=mC矛盾。此时在假设\textup{max}_{a}\ \epsilon _{a}< \sqrt{\frac{C}{m-1}}下,无论n=m还是n\leq m-1都不成立,所以这个该假设不成立,即\textup{max}_{a}\ \epsilon _{a}\geq \sqrt{\frac{C}{m-1}}。当

\epsilon _{a}=\sqrt{\frac{C}{m-1}},a=1,...,m-1,and \ \epsilon _{m}=-\sqrt{\left ( m-1 \right )C}时(\textup{max}_{a}\ \epsilon _{a}取到下限),满足条件\sum _{a}\epsilon _{a}^{2}=mC\sum _{a}\epsilon _{a}=0,也就是说这个不等式不能再放缩了,即下限\textup{max}_{a}\ \epsilon _{a}\geq \sqrt{\frac{C}{m-1}}是tight的。

以上是Q-learning的overestimation下限推导,而Double Q-learning的overestimation下限\left| Q_{t}^{'}\left ( s,\textup{argmax} _{a}Q_{t}\left ( s,a \right ) \right) -V_{*}\left ( s \right )\right|=0

证明:取Q_{t}\left ( s,a_{1} \right )=V_{*}\left ( s \right )+\sqrt{C\frac{m-1}{m}}Q_{t}\left ( s,a_{i} \right )=V_{*}\left ( s \right )+\sqrt{C\frac{1}{m\left ( m-1 \right )}},\textup{for}\ i>1,满足定理1中的假设条件\sum _{a}\epsilon _{a}^{2}=mC\sum _{a}\epsilon _{a}=0,此时只需Q_{t}^{'}\left ( s,a_{1} \right )=V_{*}\left ( s \right )那么误差就是0,因为a_{1}的Q值最大所以argmax操作取出a_{1},所以只需令Q_{t}^{'}\left ( s,a_{1} \right )=V_{*}\left ( s \right ),其他Q_{t}^{'}\left ( s,a_{i} \right ),\textup{for}\ i>1可以取任意值,只要保证通过Q函数取出来的a_{1}的价值估计是正确的,误差就是0。

其实推导完也就懂了为什么Double Q-learning能够减少overestimation,就是在评估动作时使用了新的Q^{'}函数,不受已知条件限制。

定理1也表明,即使价值评估平均误差为0,任何来源的误差都会造成评估最大价值高于真实最优价值。根据定理1中的结论,Q-learning的\textup{max}_{a}\ \epsilon _{a}\geq \sqrt{\frac{C}{m-1}},虽然随着动作数m的增大下限减小,但这仅仅代表的是下限,真正取到下限是要满足特定条件的,而实际操作中,随着m的增大,overestimation整体上在不断增加。

Deep Reinforcement Learning with Double Q-learning(Double DQN)论文学习和公式推导_第2张图片

作者也给出了实验证明,上图中横坐标为动作数,纵坐标为估计的Q值与最优值的误差(重复100次取平均),橙色为Q-learning,蓝色为Double Q-learning,可以看出随着动作数增加,Q-learning误差逐渐增大,而Double Q-learning基本无偏。

Deep Reinforcement Learning with Double Q-learning(Double DQN)论文学习和公式推导_第3张图片

证明了Double Q-learning能够减少overestimation后,现在将其应用到函数逼近上。作者做了三组实验,分别对应上图中三行图片,第一行Q_{*}\left ( s,a \right )=\sin \left ( s \right ),后两行Q_{*}\left ( s,a \right )=2\textup{exp}\left ( -s^{2} \right ),状态在\left [-6,6\right ]连续取值,每个状态下有10个离散的动作,为简单起见,真实的最优Q值仅取决于状态,也就是在每个状态下所有动作均有相同的真实最优Q值。

先分析左边的三行图,紫色的线代表每个状态真实的最优Q值,绿线为状态s下单个动作Q值的估计Q_{t}\left ( s,a \right ),绿点为采样点,直接从真实数据中采样,不含噪声,也就是样本中的Q值就是实际最优的Q值。总共有10个动作,每个动作仅仅在13个采样点中的11上采样,这样在未采样的点上可以更好反映函数逼近的效果,实际中也常会遇到这样的样本数据不足的问题。第一行和第二行实验使用6阶多项式去拟合Q_{*}\left ( s,a \right ),第三行实验使用9阶多项式。可以看出左图第二行在采样点上的逼近也不精确,是由于多项式阶数低不够灵活;左图第三行可以看出,虽然在采样点上逼近都很好,但在未采样的的地方误差很大,应该是过拟合了。

再看中间三行图,每幅图中10条绿线是10个动作分别对应的动作值函数,黑色虚线是每个状态下最大动作值。可以看出最大动作值基本都比左边图中的真实最优Q值大,也就是出现了overestimation。

最后看右边三行图,橙线是中间图中黑色虚线与左边图中紫线作差的结果,即\textup{max}_{a}\ Q_{t}\left ( s,a \right )-\textup{max}_{a}\ Q_{*}\left (s,a \right ),蓝线是使用了Double Q-learning的估计效果,蓝线的平均值更接近0,这表明Double Q-learning确实可以减少Q-learning在函数逼近中的overestimation问题。

通过实验,发现不够灵活的函数逼近对Q值的估计不精确,但是足够灵活的函数逼近在未知状态中会产生更大误差,导致更高的overestimation,DQN就是一种非常灵活的函数逼近,使用了神经网络来逼近价值函数。而overestimation最终会阻止学习到最优策略,作者后面也通过Atari上的实验证明了这点,且通过Double Q-learning减少overestimation最终策略也会得到改善。

 

Double DQN

Double DQN思想就是将目标中的max操作分解为使用不同的网络来进行动作选择和动作评估,以此来减少overestimation。而DQN中本来就使用了policy network和target network两个网络,所以无需再引入新的网络,只需改进DQN算法中的目标设计,即将公式(3)中的目标改为下面公式中的目标,

target network的更新方式并不改变,仍然是每隔固定步数从policy network复制。后面一部分就是作者做的DQN和Double DQN的对比实验了,比较简单易懂这里就不赘述了,里面倒是有一句话我很喜欢:“Good solutions must therefore rely heavily on the learning algorithm — it is not practically feasible to overfit the domain by relying only on tuning.

 

Discussion

本文共有五个贡献。首先说明了为什么Q-learning会出现overestimation。其次通过实验分析,证明了overestimation在实践中比以前认识到的更加普遍和严重。第三,证明了可以通过Double Q-learning减少overestimation,使学习更稳定可靠。第四,基于DQN提出了Double DQN,无需新的网络结构或参数。最后证明Double DQN可以学习到更好的策略,在Atari 2600上获得state-of-the-art结果。

 

 

你可能感兴趣的:(强化学习,深度学习)