DQN:深度强化学习实现人类层次的控制

本文出自于 Human-level control through deep reinforcement learning,主要提出了DQN:深度神经网络和强化学习的结合技术。


我们利用最近在训练深度神经网络方面的相关进展,开发出一种新的人工智能代理,被称为深度Q-network,它可以使用端到端的强化学习,直接从高维度传感输入中学习到成功的策略。本文在经典的Atari 2600游戏挑战性领域中测试了这个代理,深度Q-network代理只接收到像素和游戏分数作为输入,使用相同的算法、网络架构和超参数,在49款游戏中超越之前所有算法的性能,并能达到与专业游戏测试人员相当的水平。这项工作弥合了高维度传感输入和动作之间的鸿沟,从而产生了第一个能够在各种挑战性任务中进行学习优异的人工智能。



一、简介

  1. Deep Q-network:能够将深度神经网络与强化学习进行结合。我们考虑一类任务,代理可以通过一系列观察、行动和奖励来进行交互,代理的目标是以某种方式选择actions,来最大化累积未来reward。我们使用深度卷积神经网络来接近最优 action-value函数,在做过一个observation(s)和采取一个action(a)后,由一个行为策略 π = P ( a s ) \pi=P(a|s) 来实现每个时间戳t的最大化奖赏累积。

Q ( s , a ) = max π Ξ [ r t + γ r t + 1 + γ 2 r t + 2 + . . . s t = s , a t = a , π ] Q^*(s,a)=\max \limits_\pi \Xi[r_t+\gamma r_{t+1}+\gamma ^2 r_{t+2}+...|s_t=s,a_t=a,\pi],
强化学习
2. 当一个非线性函数逼近器例如一个神经网络被用来表示action-value函数(也称作Q函数)时,强化学习被认为是不稳定的甚至是发散的。这种不稳定性有几个原因:在观察序列中所出现的相关性,对Q的小部分更新可能会显著改变策略从而改变数据分布,在action-values(Q)和目标值中的相关性。我们使用一种新的Q-learning变体来解决这些不稳定性,它使用了两个关键思想。首先我们使用一种受生物学启发的机制 experience replay 来随机化数据,从而消除观察序列中的相关性,平滑数据分布的变化。其次,我们使用一种迭代式更新来调整 action-values(Q)为只定期更新的目标值,从而降低了与目标的相关性。
3. 我们使用一个深度卷积神经网络来参数化一个近似值函数 Q ( s , a ; θ i ) Q(s,a;\theta_{i}) ,其中 θ i \theta_i 是第i次迭代中Q-network的参数。为了更好地执行experience replay,我们存储了在每个时间戳t的数据集 D t = {   e 1 , . . . , e t } D_t=\left \{\ e_1,...,e_t \right \} 中代理的经验 e t = ( s t , a t , r t , s t + 1 ) e_t=(s_t,a_t,r_t,s_{t+1}) 。在学习过程中,我们对样本或小批量的经验应用Q-learning更新,经验是从存储的样本池中均匀随机地抽取。在第i次迭代中的Q-learning更新使用以下的loss函数:
L i ( θ i ) = Ξ ( s , a , r , s ) U ( D ) [ ( r + γ max a Q ( s , a ; θ i ) Q ( s , a ; θ i ) ) 2 ] L_i(\theta_i)=\Xi_{(s,a,r,{s}')\sim U(D)}[(r+\gamma \max \limits_{{a}'}Q(s',a';\theta_{i}^-)-Q(s,a;\theta_i))^2]
​其中, γ \gamma 是决定代理范围的折现因子, θ i \theta_i 是第i次迭代过程中Q-network的参数, θ i {\theta_i}^- 是第i次迭代过程中被用来 计算目标的网络参数,目标网络参数 θ i \theta_i^- 只能被每C步中的Q-network参数来进行更新,并在个别更新之间保持固定。

二、方法

  1. 我们使用相同的网络架构、超参数值和通过接受高维度数据作为输入来进行学习,从而去证实我们的方法在不同的游戏中学习到成功的策略。我们的方法能够使用一个强化学习信号和采用稳定方式的随机梯度下降,来训练神经网络。除了学习过的代理,我们还报告了在受控条件下进行的专业游戏测试人员的得分,以及随机一致选择actions的策略。我们的DQN方法在43款游戏中表现优于现有的最佳强化学习方法,并且没有包含其他方法所使用的额外先验知识。实验中我们通过禁用它们并展示其对性能的有害影响,证实了DQN代理的各个核心组件的重要性–replay memory、单独的目标Q-network、深度卷积网络架构。
  2. 我们证明了DQN所学习到的表示能够泛化到策略生成的数据,而不是它自己的,在模拟中我们将人与代理之间的游戏体验作为网络游戏状态的输入,记录了最后一个隐藏层的表示,并可视化了由t-SNE算法生成的嵌入。
  3. 在这项工作中,我们证实了一个单一的架构可以在一系列不同的环境中成功地学到控制策略,这些环境只有非常少的先验知识,只接收像素和游戏分数作为输入,然后在每个游戏上使用相同的算法、网络架构和超参数,只知道人类玩家将拥有的输入。和先前的工作对比来看,我们的方法包含端到端强化学习,利用奖励机制在卷积网络中不断塑造特征表示,使其朝着有利于价值评估的环境显著特征发展。这一原理利用了神经生物学证据,即感知学习过程中的奖励信号可能会影响灵长类视觉皮层的特征表示。强化学习与深度网络架构的成功集合在一定程度上依赖于我们对replay算法的集成,该算法涉及最近经验转换的存储和表示。我们的工作展示了利用最先进的机器学习技术和生物启发机制来创建能够学习掌握各种挑战性任务的代理的作用。

三、实施步骤

  1. 预处理:我们应用了一个基本的预处理步骤,旨在减少输入维度和处理一些人工错误。首先,为了对一个单一帧进行编码,我们对被编码的帧和前一帧上的每个像素颜色值取最大值,这种方法可以消除出现在游戏中的闪烁,一些对象只出现在偶数帧,而其他对象只出现在奇数帧。其次,我们从RGB帧中提取Y通道,然后调整它到84 X 84。
  2. 模型架构:因为Q将 history-action 对映射到它们的标量估计值Q值,并且history和action已经被一些先前的方法用作神经网络的输入。我们使用一种体系架构,其中每个可能的action都有一个单独的输出单元,只有状态表示是神经网络的输入,输出对应于输入状态的各个action的预测Q值。这种体系架构的主要优点能够计算给定状态下的所有可能动作的Q值,而只需要通过网络进行一次正向传递。该网络模型由三个卷积层和两个全连接层组成,网络输入由通过预处理过程生成的84 x 84 x 4 图像组成,第一个卷积核结构为32*8*8(步长为4),第二个卷积核结构为64*4*4(步长为2),第一个卷积核结构为64*3*3(步长为1),全连接的隐藏层由512个非线性单元组成,输出层是一个全连接层,每个有效操作都有一个对应的输出。模型架构
  3. 训练细节:当我们在未修改过的游戏上进行评估时,我们只在训练期间对游戏的reward结构做了改变。当分数的范围从一个游戏到另一个游戏发生大的变化时,我们把所有积极的reward置为1,所有消极的reward置为-1,保持reward为0的不改变。通过这种方式获取奖励限制了误差导数的范围,并使在多个游戏中使用相同的学习速率更加容易。与此同时,它也影响了我们代理的性能,因为它无法区分不同规模的rewards。我们的实验设置相当于使用了以下最小先验知识:由视觉图像组成的输入数据、游戏评分、动作数量和存活数。

四、算法

  1. 我们考虑了一个代理与环境进行互动的任务场景,在这种情况下有着一系列动作、观察和奖励。在每个时间戳内代理方都会从游戏动作集合中选择一个动作 a t a_t ,这个动作被传递到模拟器并修改它的内部状态和游戏分数。通常情况下这个环境可能是随机的,游戏分数可能依赖于整个先前动作和观察的序列,关于某个动作的反馈可能只有在经过数千个时间步骤后才会被收到。模拟器中的所有序列都假定在有限的时间步骤内终止,这种形式产生了一个大型但是有限的马尔科夫决策过程(MDP),其中每个序列都是一个不同的状态。因此,我们可以对MDPs应用标准的强化学习方法,只需要使用完整序列 s t s_t 作为时刻t的状态表示。
  2. 代理的目标是通过以某种方式选择动作与模拟器进行互动,来最大化未来奖励。最优的action-value函数遵循着一个重要的恒等式,被称为Bellman方程,它基于以下判断:如果在下一个时间戳内序列 s s' 的最优值 Q ( s , a ) Q^*(s',a') 对于所有可能的动作都是已知的,那么最优策略是去选择动作 a a' 来最大化期待值 r + γ Q ( s , a ) r+\gamma Q^*(s',a') Q ( s , a ) = Ξ s [ r + γ max a Q ( s , a ) s , a ] Q^*(s,a)=\Xi_s'[r+\gamma \max \limits_a' Q^*(s',a')|s,a] 。许多强化学习算法的基本思想是利用Bellman方程作为迭代更新来估计action-value函数。
  3. 在强化学习方式中,利用一个线性函数逼近器来估计action-value函数是很常见的,然而有时候一个非线性函数逼近器例如神经网络也被使用。我们将一个权重为 θ \theta 的神经网络函数逼近器定义为一个Q-network,一个Q-network可以通过调整第i次迭代的参数 θ i \theta_i 来被训练,从而减少Bellman方程中的均方误差,最优目标值 r + γ max a Q ( s , a ) r+\gamma \max_a' Q(s',a') 可以被近似的目标值 y = r + γ max a Q ( s , a ; θ i ) y=r+\gamma \max_a' Q(s',a';\theta_i^-) 所替代,其中参数 θ i \theta_i ^- 来自一些先前的迭代。这产生了每次迭代所改变的损失函数 L i ( θ i ) L_i(\theta_i) 序列,其用公式表达为: L i ( θ i ) = Ξ s , a , r [ ( Ξ s [ y s , a ] Q ( s , a ; θ i ) ) 2 ] = Ξ s , a , r , s [ ( y Q ( s , a ; θ i ) ) 2 ] + Ξ s , a , r [ Ψ s [ y ] ] L_i(\theta_i)=\Xi_{s,a,r}[(\Xi_{s'}[y|s,a]-Q(s,a;\theta_i))^2]=\Xi_{s,a,r,s'}[(y-Q(s,a;\theta_i))^2]+\Xi_{s,a,r}[\Psi_s'[y]]
  4. 在优化过程的每一阶段,我们保存前一个迭代的参数 θ i \theta_i^- ,修正了在优化第i个损失函数 L i ( θ i ) L_i(\theta_i) 所产生的一系列定义良好的优化问题。利用随机梯度下降法来对损失函数进行优化,通常是一种计算方便的方法。在该框架中,我们可以恢复我们所熟悉的Q-learning算法,在每一步之后更新权重,用单个样本替代期望值,然后设置 θ i = θ i 1 \theta_i^-=\theta_{i-1} 。这个算法是model-free,它解决了强化学习任务且没有明确估计奖赏和过渡动态;它也是off-policy,学习到贪心策略且遵守一个行为分布来确保足够的状态空间探索。实际上,这种行为分布通过一个 ε \varepsilon -greedy策略来被选择,用概率 1 ε 1-\varepsilon 来遵循贪心策略,用概率 ε \varepsilon 来选择一个随机动作。
  5. 深度Q-network的训练算法:代理通过在Q上的一个 ε \varepsilon -策略来选择和执行动作,该算法在一个固定长度的由函数 ϕ \phi 生成的历史表示上工作。首先,我们使用experience replay来存储每个时间戳的代理经验 e t = ( s t , a t , r t , s t + 1 ) e_t=(s_t,a_t,r_t,s_{t+1}) ,将多个集汇总到一个replay memory中。然后,我们从存储的样本池中随机抽取经验样本,应用Q-learning更新或者小批量的更新。通过使用experience replay,该行为分布在其之前的许多状态上取平均值,平滑了学习过程,避免了参数的振荡或者发散。为了进一步提高我们的神经网络方法的稳定性,对在线Q-learning的第二个修改是在Q-learning更新中使用一个单独的网络生成目标 y i y_i Q-learning训练方法
发布了31 篇原创文章 · 获赞 40 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/librahfacebook/article/details/98474301