Abstract
强化学习理论在动物行为上,深入到心理和神经科学的角度,关于在一个环境中如何使得智能体优化他们的控制,提供了一个正式的规范。为了利用强化学习成功的接近现实世界的复杂度的环境中,然而,智能体遇到了一个难题:他们必须从高维感知输入中得到环境的有效表征,然后利用这些来将过去的经验应用到新的场景中去。显著地,人类和其他动物看起来可以通过一个和谐的智能体和层次感知处理系统的有效组合进而解决这个问题。前者通过丰富的神经数据解释了由多巴胺能神经产生的相位信号和时序差分强化学习算法之间的显著并行得到验证。于此同时,强化学习智能体在一些领域已经取得了很多的成果,之前他们的应用基本上被限制在领域内,即:手工设计的有用的特征,全部观测到的领域,低维的状态空间等等。此处,我们利用最近发展迅速的深度神经网络来开发一种新颖的智能体,即深度Q网络, 利用端到端的强化学习, 可以直接从高维感知输入中学习到成功的策略。我们在具有挑战性的经典Atari 2600游戏,测试了该智能体。实验证明,该深度Q网络智能体,仅仅接收像素和游戏得分作为输入,利用相同的算法,网络设计和超参数可以超过之前任何的算法,达到和专业游戏玩家的水平。该工作建立了高维感知输入和动作之前的连接,能够处理各种具有挑战性的任务。
阅读者总结:这篇论文提出了DQN网络的具体实现过程,主要改进了两个方面:1)采用随机放回的方式;2)采用一种新的迭代更新方法,使得参数向着定期目标更新。因此这篇论文是《Playing Atari with Deep Reinforcement Learning》的改进版
Introduce
我们设计去创建了一个单一的算法,它能够广泛的处理各种挑战性任务—一般的人工智能,无法达到这个效果。为了实现这一目标,我们开发了一种新的agent,a deep Q-network(DQN),它能够将强化学习与人工神经网络(称为深层神经网络)相结合。值得注意的是(notably),最近深层神经网络的进展,使用了几层节点来逐步建立更抽象的数据表示,使得人工神经网络能够直接从原始感官数据中学习诸如对象分类之类的概念。我们使用了一种特别成功的架构,即深卷积网络,它使用分层的层叠卷积滤波器来模拟感受野的影响,这种效应是由Hubel和Wiesel在早期视觉皮层的前馈处理方面的开创性工作所启发的,从而利用图像中的局部空间相关性,以及增强对自然变化的鲁棒性,如视角或尺度的变化。
我们考虑的任务中,agents通过一系列的observations,actions and rewards, 考虑agent和环境交互的任务。该agent的目标是:为了得到最大的积累reward,而选择actions。正式的(More formally), 我们使用一个深层卷积神经网络来近似最优动作值-函数(the optimal action-value function):
这是在进行观察(s)和采取行动(a)之后,由行为策略π = P ( a ∣ s ),最大回报。
强化学习著名的问题是:当用一个非线性函数估计,如:一个神经网络来表示动作-值函数时,就会导致不稳定或者不收敛。这个不稳定主要有几个原因导致的:序列观察的相关性(the correlations present in the sequence of observations), 对Q值的小更新可能会显著的改变策略,从而改变数据分布,以及动作-值(Q)和目标值之间的关系。我们利用新颖的Q-Learning的变体来解决这些不稳定问题,主要用到了两个ideas:
我们使用了一种生物学启发机制, 被称为经验回放(experience replay), 对数据进行随机化处理,从而消除观察序列中的相关性,使得在数据分布上平滑变化(详见下文)。
我们使用了一个迭代更新来调整动作-值(Q),使之朝向只定期更新的目标值(target values),从而减少与目标的联系。
fig1.卷积神经网络示意图。方法中对体系结构的细节进行了说明。神经网络的输入由预处理图生成的84x84x4图像组成,然后是三个卷积层(注:蛇形蓝线表示每个filter(卷积核)在输入图像上滑动)和两个完全连接的层,每个有效操作有一个单独的输出。每个hide layer(隐含层)后面都有一个整流器非线性
为了评估我们的DQN代理,我们利用了Atari 2600平台,该平台提供了各种各样的任务(n=49), 这些任务都是为人类玩家设计的。我们使用相同的网络架构、超参数值(见扩展数据表1)和学习过程,以高维数据(60赫兹, 210x160彩色视频)为输入,为了证明我们的方法能够在各种游戏中稳健地学习成功的策略,这些策略完全基于感官输入,并且只有非常少的先验知识(也就是说,仅仅输入数据是视觉图像,以及每个游戏中可用的动作数,而不是它们的对应关系;参见方法)。值得注意的是,我们的方法能够以稳定的方式使用强化学习信号和随机梯度下降来训练大型神经网络——如两个学习指标的时间演化所示(代理的每集平均得分和平均预测Q值;详见图2和补充讨论)。值得注意的是,我们的方法能够以稳定的方式使用强化学习信号和随机梯度下降来训练大型神经网络——如两个学习指标的时间演化所示(agent的每片段平均得分和平均预测Q值;详见图2和补充讨论)。
接下来,我们研究了DQN所学的表示法,这些表示法通过使用一种称为“t-SNE”25(图4)的高维数据可视化技术,在游戏空间入侵者的背景下支撑了anget的成功性能(参见补充视频1)。正如预期的那样,t-SNE算法倾向于将感知相似状态的DQN表示映射到附近的点。有趣的是,我们还发现t-SNE算法为DQN状态表示生成了类似的嵌入,这些状态在期望回报方面很接近,但是感知上的不同(图4,右下、左上和中),与网络能够从高维感官输入中学习支持适应性行为的表示的概念相一致。此外,我们还证明了DQN学习到的表示能够泛化为从策略生成的数据,而不是在模拟中,我们将其作为输入呈现给人类和anget玩游戏时所经历的网络游戏状态,记录最后一个隐藏层的表示,并可视化了t-SNE算法生成的嵌入(扩展数据图1和补充讨论)。扩展数据图2提供了由DQN学习的表示如何允许其准确地预测状态和动作值的附加说明。
值得注意的是,DQN擅长的游戏在性质上有着极大的差异,从侧翻射击(River Raid)到拳击游戏(Boxing)和三维赛车游戏(Enduro)。事实上,在某些游戏中,DQN能够发现一个相对长期的策略(例如,突破:anget学习最佳策略,即首先在墙的一侧挖一个隧道,让球绕着墙的背面发送,从而摧毁大量的积木;关于DQN在训练过程中的表现发展,请参见补充视频2)。尽管如此,对于包括DQN在内的所有现有anget来说,需要更多时间扩展的计划策略的游戏仍然是一个重大的挑战(例如Montezuma的复仇)。
在这项工作中,我们证明了一个单一的体系结构可以在一系列不同的环境中成功地学习控制策略,只接收像素和游戏分数作为输入,并且在每个游戏中使用相同的算法、网络结构和超参数,只知道人类玩家的输入。与之前的研究不同,我们的方法采用了“端到端”强化学习,该学习使用奖励在卷积网络中不断地塑造表征,使其朝向有利于价值估计的环境的显著特征。这一原理利用了神经生物学的证据,即知觉学习中的奖赏信号可能会影响灵长类动物视觉皮层的表征特征。值得注意的是,强化学习与深层网络体系结构的成功集成,关键在于我们采用了一种回放算法,该算法涉及最近经历的转换的存储和表示。越来越多的证据表明,海马体可能支持哺乳动物大脑中这种过程的物理实现,在离线期间,最近经历的轨迹经过时间压缩重新激活(例如,提供一种假定的机制,通过与基底神经节的相互作用可以有效地更新价值函数。在未来,探索将经验重演的内容偏向于显著事件的潜在用途是很重要的,这种现象是经验性观察到的海马重放的特征,并与强化学习中的“优先扫除”概念有关。综上所述,我们的工作说明了利用最先进的机器学习技术和受生物启发的机制来创建能够学习掌握各种挑战性任务的代理的力量。
————————————————
METHODS
Preprocessing. 直接处理原始的Atari 2600帧(图片像素为210 x 160,调色板有128个颜色),可能在计算和内存需求方面要求很高。我们为了降低输入的维度,采取了一个基础的预处理步骤,用Atari 2600仿真器来进行人为处理。首先,为了编码单张图像,我们采用当前编码帧和前一帧每一个像素点色彩值的最大值。移除闪烁是很有必要的,因为一些物体仅仅出现在奇数帧,而有一些则只出现在偶数帧,由于有限数量的sprites Atari 2600导致的artefact会立马显现。其次,我们然后从RGB帧中提取Y通道,也就是经常说的亮度,并将其重新缩放为84 x 84。下面描述的算法1中的函数Φ将此预处理应用于m个最近的帧并将它们堆叠起来以生成Q函数的输入,其中m = 4,尽管该算法对m的不同值鲁棒(例如,3或5)。
Code availability. 源代码可以在以下网址获得:https://sites.google.com/a/deepmind.com/dqn (仅用于非商业用途)。
Model architecture. 利用神经网络,有好几种不同的方法来参数化Q。因为Q映射了历史-动作对到它们的Q值,历史和动作已经在之前的方法中被用于神经网络的输入。这种结构的主要缺点是:一个单独的前向传播需要计算每一个动作的Q值,导致计算代价和动作的数量成比例上升。我们则使用这样的一个结构,即:每一个可能的动作有一个单独的输出,仅仅将状态表征输入给神经网络。输出对应了每一个动作为每一个状态预测的Q值。这种结构的优势是:在一个给定的状态下,对于所有可能动作的Q值的计算,在网络中仅仅需要一个前向传播即可。
图1中展示的结构,给出如下的描述:传入给神经网络的输入是预处理映射完毕后的84 x 84 x 4的图像。第一个隐层:卷积核大小为8 x 8,然后有32个filter,步长为4,后面跟一个非线性整流器。第二个隐层:卷积核大小为4 x 4,然后有64个filter,步长为2,后面跟一个非线性整流器。第三个卷积层:64个filter,卷积核大小为3 x 3,步长为1,后面也跟着一个非线性整流器。最后的隐层:一个全连接层,由512个整流单元构成。输出层:一个全连接层,每一个有效地动作对应一个输出。在我们考虑的游戏中,有效动作的数量从4~18之间变换。
Training details. 我们对49个Atari 2600游戏进行了实验,其中所有其他可比方法的结果都可用。在每个游戏上训练了不同的网络:所有游戏都使用了相同的网络架构、学习算法和超参数设置(参见扩展数据表1),这表明我们的方法足够鲁棒,可以在只包含最少的先验知识的情况下处理各种游戏(见下文)。虽然我们在未修改的游戏上评估了我们的智能体,但我们仅在训练期间对游戏的奖励结构进行了一项更改。由于游戏与游戏之间的分数等级差异很大,我们将所有正奖励剪裁为1,将所有负面奖励剪裁为-1,而保持0奖励不变。以这种方式削减奖励限制了误差导数的规模,并使在多个游戏中使用相同的学习率更容易。同时,它可能会影响我们的智能体的性能,因为它无法区分不同量级的奖励。对于有生命计数器的游戏,Atari 2600模拟器还会发送游戏中剩余的生命数,然后用于在训练期间标记一个回合的结束。
在这些实验中,我们使用了RMSProp(参见http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf)算法,小批量大小为32。训练期间的行为策略是ε-greedy,其中ε在前一百万帧中从1.0线性退火到0.1,之后固定为0.1。我们总共训练了5000万帧(即总共大约38天的游戏体验),并使用了100万最近的回放缓存帧。
按照之前玩Atari 2600游戏的方法,我们还使用了一种简单的跳帧技术。更准确地说,智能体在第k帧而不是每一帧上查看并选择动作,并且在跳过的帧上重复其最后一个动作。因为向前运行模拟器一步需要比让智能体选择一个动作少得多的计算,所以这种技术允许智能体玩大约k倍的游戏而不会显著增加运行时间。我们在所有游戏中都使用k = 4。
所有超参数和优化参数的值都是通过对Pong、Breakout、Seaquest、Space Invaders和Beam Rider游戏进行非正式搜索来选择的。由于计算成本高,我们没有执行系统的网格搜索。这些参数然后在所有其他游戏中保持固定。所有超参数的值和描述在扩展数据表1中提供。
我们的实验设置相当于使用以下最少的先验知识:输入数据包括视觉图像(促使我们使用卷积深度网络)、特定于游戏的分数(没有修改)、动作数量,尽管不是它们的对应关系(例如,向上"按钮"的规范)和生命计数。
Evaluation procedure. 通过使用不同的初始随机条件('noop';参见扩展数据表1)和ε-greedy策略(ε=0.05),通过玩每个游戏30次,每次最多5分钟来评估经过训练的智能体。采用此程序是为了最大程度地减少评估过程中过拟合的可能性。随机智能体用作基准比较,并选择10 Hz的随机动作,每六帧重复一次,在中间帧上重复其最后一个动作。10 Hz大约是人类玩家可以选择"开火"按钮的最快频率,并且将随机智能体设置为该频率可避免在少数游戏中出现虚假基准分数。我们还评估了选择动作的随机智能体的性能60 Hz(即每一帧)。这产生的影响很小:仅在六个游戏(Boxing、Breakout、CrazyClimber、Demon Attack、Krull和Robotank)中将归一化DQN的性能改变了5%以上,并且在所有这些游戏中,DQN的性能都远远超过了专家级人类。
专业人类测试员使用与智能体相同的模拟器引擎,并在受控条件下进行游戏。不允许人类测试员暂停、保存或重新加载游戏。与最初的Atari 2600环境一样,模拟器以60 Hz运行并且音频输出被禁用:因此,感官输入等同于人类玩家和智能体之间。人类性能是在每场比赛大约2小时的练习后,从每场比赛的大约20个回合持续最多5分钟获得的平均奖励。
Algorithm. 我们考虑智能体与环境交互的任务,在这种情况下是Atari模拟器,在一系列动作、观察和奖励中。在每个时间步骤,智能体从一组合法的游戏动作A={1, ... , K}中选择一个动作at。动作被传递给模拟器并修改其内部状态和游戏分数。一般来说,环境可能是随机的。智能体不会观察到模拟器的内部状态;相反,智能体观察来自模拟器的图像,它是表示当前屏幕的像素值向量。此外,它还会收到一个表示游戏分数变化的奖励rt。请注意,一般来说,游戏分数可能取决于整个先前的动作和观察序列;可能只有在经过数千个时间步骤之后才能收到有关动作的反馈。
因为智能体只观察当前屏幕,任务被部分观察并且许多仿真器状态在感知上是混叠的(也就是说,仅从当前屏幕xt不可能完全了解当前情况)。因此,动作和观察序列st=x1,a1,x2,…,at-1,xt被输入到算法中,然后算法根据这些序列学习游戏策略。假设模拟器中的所有序列都在有限数量的时间步骤内终止。这种形式主义导致了一个庞大但有限的马尔可夫决策过程(MDP),其中每个序列都是一个不同的状态。因此,我们可以对MDP应用标准的强化学习方法,只需使用完整的序列st作为时间 t 的状态表征。
智能体的目标是通过以最大化未来奖励的方式选择动作来与模拟器交互。将时间 t 的未来折扣回报定义为
,其中T是游戏终止的时间步骤。我们将最优动作价值函数Q*(s, a)定义为在看到一些序列 s 然后采取一些动作 a 之后,遵循任何策略可实现的最大期望回报,Q*(s, a) = maxπE[Rt|st=s,at=a,π],其中π是映射序列到动作(或动作分布)的策略。
最优动作价值函数遵循一个重要的恒等式,称为Bellman方程。这是基于以下直觉:如果对于所有可能的动作a'已知序列s'在下一时间步骤的最优值Q*(s, a),那么最优策略是选择动作a'最大化r+γQ*(s', a')的期望值:
许多强化学习算法背后的基本思想是通过使用Bellman方程作为迭代更新来估计动作值函数,
。这样的值迭代算法收敛到最优动作-价值函数,当i→∞时,Qi→Q*。在实践中,这种基本方法是不切实际的,因为动作-价值函数是针对每个序列单独估计的,没有任何泛化。相反,通常使用函数逼近器来估计动作值函数Q(s,a; θ)≈Q*(s,a)。在强化学习社区中,这通常是线性函数逼近器,但有时会使用非线性函数逼近器,例如神经网络。我们将权重为θ的神经网络函数逼近器称为Q-network。Q-network可以通过在迭代 i 时调整参数θi来训练,以减少Bellman方程中的均方误差,其中最优目标值为r+γ maxa'Q*(s',a')用近似目标值代替,使用先前迭代中的参数。这导致一系列损失函数Li(θi)在每次迭代 i 时发生变化,
请注意,目标取决于网络权重;这与用于监督学习的目标形成对比,后者在学习开始之前就已确定。在优化的每个阶段,我们在优化第 i 个损失函数Li(θi)时将上次迭代的参数
保持固定,从而产生一系列明确定义的优化问题。最后一项是目标的方差,它不依赖于我们当前正在优化的参数θi,因此可以忽略。根据权重对损失函数进行微分,我们得出以下梯度:
与计算上述梯度中的全部期望不同,通过随机梯度下降来优化损失函数通常在计算上是权宜之计。熟悉的Q-learning算法可以通过在每个时间步骤之后更新权重,使用单个样本替换期望值并设置
请注意,该算法是无模型的:它直接使用来自模拟器的样本解决强化学习任务,而无需明确估计奖励和转换动态P(r,s'|s,a)。它也是异略的:它学习贪婪策略a = argmaxa'Q(s,a'; θ),同时遵循确保对状态空间进行充分探索的行为分布。在实践中,行为分布通常由遵循贪婪策略的ε-greedy策略选择,概率为1-ε,并选择概率为ε的随机动作。
Training algorithm for deep Q-networks. 算法1给出了训练深度Q网络的完整算法。智能体根据基于Q的ε-greedy策略选择和执行动作。因为使用任意长度的历史作为神经网络的输入可能很困难,我们的Q函数取代由上述函数Φ产生的历史的固定长度表征工作。该算法通过两种方式修改了标准在线Q学习,使其适用于训练大型神经网络而不会发散。
首先,我们使用一种称为经验回放的技术,其中我们将智能体在每个时间步骤的经验et = (st, at, rt, st+1)存储在数据集Dt = {e1, ... , et}中,该数据集汇集了许多回合(当达到终止状态时,回合结束)进入回放缓存。在算法的内部循环期间,我们将Q学习更新或小批量更新应用于从存储样本池中随机抽取的经验样本(s, a, r, s') ~ U(D)。这种方法比标准的在线Q学习有几个优点。首先,经验的每一步都可能用于许多权重更新,从而提高数据效率。其次,由于样本之间的强相关性,直接从连续样本中学习效率低下;随机化样本打破了这些相关性,因此减少了更新的方差。第三,在同策学习时,当前参数决定了参数训练的下一个数据样本。例如,如果最大化动作是向左移动,那么训练样本将以来自左侧的样本为主;如果最大化动作然后向右切换,则训练分布也将切换。很容易看出可能会出现不需要的反馈循环,参数可能会陷入不良的局部最小值,甚至灾难性地发散。通过使用经验回放,行为分布在其许多先前状态上平均,平滑学习并避免参数的振荡或发散。注意,在通过经验回放学习时,需要异策学习(因为我们当前的参数与用于生成样本的参数不同),这激发了Q学习的选择。
在实践中,我们的算法只将最后N个经验元组存储在回放缓存中,并在执行更新时从D随机均匀采样。这种方法在某些方面是有限的,因为回放缓存不区分重要的转换,并且由于有限的内存大小N,总是用最近的转换覆盖。类似地,均匀采样对回放缓存中的所有转换给予同等的重要性。更复杂的采样策略可能会强调我们可以从中学到最多的转换,类似于优先扫描。
旨在进一步提高我们的神经网络方法稳定性的在线Q学习的第二个修改是使用单独的网络在Q学习更新中生成目标yj。更准确地说,每次C更新我们克隆网络Q以获得目标网络
并使用生成Q学习目标yj以用于后续C更新到Q。与标准在线Q学习相比,这种修改使算法更稳定,其中增加Q(st, at)的更新通常也会增加所有 a 的Q(st+1, a)并因此也增加目标yj,可能导致策略振荡或发散。使用较旧的参数集生成目标会在对Q进行更新的时间与更新影响目标yj的时间之间增加延迟,从而更不可能出现发散或振荡。
我们还发现从更新r + γ maxa' Q(s', a';
) - Q(s, a; θi)中裁剪误差项到-1到1之间很有帮助。因为绝对值损失函数|x|对于x的所有负值具有导数-1,对于x的所有正值具有导数1,将平方误差剪裁到-1和1之间对应于使用(-1, 1)区间外误差的绝对值损失函数。这种误差裁剪形式进一步提高了算法的稳定性。