Fast deep reinforcement learning using online adjustments from the past


论文原文链接(是2018年发表在nips上的论文)
摘要: 我们提出了短暂价值调整(EVA):是一种允许深度强化学习的agent快速适应其回放缓冲经验的方法。EVA从接近当前状态的replay buffer中用一个通过规划经验元祖得到的值函数估计值的神经网络来转移预测的值。EVA结合了一些最近的想法,将episodic memory 式的结构结合到强化学习agent中:基于插槽的存储,基于内容的检索,和基于记忆的规划,我们展示了EVA在演示任务和Atari游戏上的性能。

1、介绍

  互补学习系统结合了两种学习机制:第一种学习快,具有高度适应性,但是不善于一般化,,另一种学习缓慢,因此更善于概括许多例子,对两种系统的需求反应了学习算法在样本效率和计算复杂度之间的典型权衡。我们认为大多数现在的深度强化学习系统属于后者:从Bellman反演中将基于梯度的更新和增量更新结合使系统善于收敛,正如许多成功的证据[Mnih et al.,2015, Silver et al., 2016, Moravcík et al., 2017],但是这个方法在一个环境中需要花许多步来实现这一壮举。
  RL方法通常分为无模型的方法和基于模型的强化学习方法。在实践中,无模型的方法通常在执行时速度很快,但是根据经验进行更新的计算开销很大。而基于模型的方法更新更新速度快,但是执行起来开销很大(因为需要动态规划)。最近,人们有兴趣将情景记忆式的内容纳入强化学习算法中 [Blundell et al., 2016a,Pritzel et al., 2017],这可能会提高灵活性和学习速度,其动力来自被称为episode控制的神经网络文献[Dayan and Daw, 2008,Gershman and Daw, 2017]。Episode控制使用eipsode memory代替环境的学习模型,目的是对于无模型和基于模型这两种方法进行不同的权衡。
  根据CLS [McClelland et al.,1995],的观测,我们将对一种混合方法感兴趣。在这种方法中,我们将构建一个具有两种系统的Agent:一种慢的且general的(mode-free),另外一种快并且自适应的(就像episodic control),类似于以前对agent的建议,我们的agent的快速大的,可适应的系统使用episodic memories去记忆并且随后模仿先前经历过的有回报的状态行为序列。这可以看作是一种基于记忆的计划形式 [Silver et al., 08],在这中形式中,相关的经验被回忆起来,以作为决策的依据。在这篇文章中计划可以被看作是对过去的经验的再次评估,以前的经验使用现有的只是去改善无模型的值的评估。
  对于许多深度强化学习中,replay buffer至关重要 [Mnih et al., 2015,Espeholt et al., 2018]。replay buffer存储了以前被观察到的经验的元组:状态,动作,奖励,下一个状态。然后使用这些存储的经验元组来训练使用梯度下降法的值函数逼近器。通常情况下,在环境中对来自于repaly buffer的数据进行一步梯度下降时采取的每一步动作,会伴随对replay data的更大的依赖会导致性能不稳定因此,我们建议replay buffer可能经常包含能够积极促进agent的策略的信息,但是不能充分集成到agent的决策制定中。我们认为出现这种情况有三个原因:1)对于值函数的缓慢和全局的梯度更新导致杂乱的梯度和学习动力的稳定性,2)replay buffer的大小有限并且经验元组定期删除(因此下降梯度下降学习的机会),3)从经验元组的训练忽视了agent经验的自然轨迹:一个元组发生是在另一个发生之后,并且这种关于下一个状态的值的信息应该被快熟的集成到当前状态的值中。
  本文探索了一种深度强化学习agent同时进行的一种方法:1)缓慢地学习值函数逼近器的参数,2)在一个episode中快速地局部调整值函数。值函数的自适应通过规划以前的经验轨迹(时间上相邻元组序列)实现了,这些轨迹基于来自于值函数逼近器的评估。这个过程提供了一种估计值函数的补充方法。
  有趣的是我们的方法在现有基于回放的深度强化学习agent上只需要非常小的修改:除了存储当前状态和下一个状态(这些状态一般很大:网络的所有输入),我们建议也存储轨迹信息(指向下一个继任的元组)和当前隐藏活动的一层(通常小于状态)。利用这些信息,我们的方法利用基于隐藏表示的基于记忆的经验累积来适应价值函数预测。值函数的调整在用于执行执行一个动作之后也不会被存储(因为它是短暂的)。我们把这种方法叫做临时值调整(EVA)。

2、背景

  策略π的动作行为值函数被定义为: Q π ( s , a ) = E π [ t γ t r t s , a ] Q^\pi(s,a)=E_\pi[\sum\limits_t\gamma^tr_t|s,a] [Sutton andBarto, 1998], γ [ 0 , 1 ] \gamma \in [0,1] 是折扣因子,同样的,在策略π下的值函数被定义为 V π ( s , a ) = E π [ t γ t r t s ] V^\pi(s,a)=E_\pi[\sum\limits_t\gamma^tr_t|s] ,他是从状态s开始策略π下的期望回报。
  在基于值函数的无模型强化学习方法中,动作值函数使用一个函数逼近器表示。深度Q网络的agent使用Q学习通过在每一个状态 s t s_t 和第t步中选择最好的行动 a t a_t 去学习动作值函数 Q θ ( s t , a t ) Q_\theta(s_t,a_t) Q θ Q_\theta 用θ作为参数,使用卷积神经网络,,需要用 s t s_t 代表一个2D像素作为输入,输出一个在那个状态下采取的每一个动作的价值向量。agent执行 ϵ g r e e d y \epsilon-greedy 策略去权衡探索和利用,agent以一个 ϵ \epsilon 的概率均匀随机地选择一个动作,以一个大的概率选择动作 a t = a r g m a x a Q ( s t , a ) a_t=argmax_aQ(s_t,a)
  当agent观察到一个转换时,DQN在一个replay buffer中存储元组 ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) ,元组的内容被用来训练。这个神经网络从replay buffer中随机采样的过度子集合中通过最小化网络的输出和Q学习目标函数 y t = r t + γ m a x a Q ~ ( s t + 1 , a ) y_t=r_t+\gamma max_a \tilde Q (s_{t+1},a) 之间的平方误差来训练。目标网络 Q ~ ( s t + 1 , a ) \tilde Q(s_{t+1},a) 是定期更新的值网络的一个老版本,从replay buffer中对目标网络和采样不相关转移的使用对于稳定的训练非常重要。

3、短暂值调整

  EVA是一种增加任意的基于值的异策略agent的方式,通过一个轨迹计算算法实现,该算法通过结合以前经历过的轨迹和参数评估相结合从而快速的产生值评估。我们的agent由三个部分组成:1、一个标准的参数化强化学习者和它的replay buffer,replay buffer被增加是为了保存轨迹信息;2、一个轨迹计算算法,定期在replay buffer的数据的子集合中规划;3、一个小的value buffer,存储了来自于规划的过程评估值。EVA的完整策略隐含在行为值函数中。 Q ( s , a ) = λ Q θ ( s , a ) + ( 1 λ ) Q N P ( s , a ) Q(s,a)=\lambda Q_\theta(s,a)+(1-\lambda)Q_{NP}(s,a)    Q θ Q_\theta 是从参数模型评估的值, Q N P Q_{NP} 是从轨迹计算算法(非参数的)中评估的值。下图展示了这个方法的框图。EVA的参数元素组成了标准的DQN风格的结构, Q θ Q_\theta ,一个前馈卷积神经网络:几个卷积层跟随两个线性层,最终产生动作行为值函数评估。训练在DQN中精确的执行,在第二部分简单的观察到,在DQN的论文中被充分的描述。
在这里插入图片描述

3.1、轨迹选择和规划

  DQN网络的最后一层(第二层)用于将当前观测到的状态(像素)嵌入到低维空间中。注意,这个空间的相似性已经被参数化模型优化为动作行为值评估。在一段时间(在所有报告的试验中的每20个步骤),在全局buffer中的k个最近的邻居根据当前嵌入状态查询(根据它们的 l 2 l_2 距离)。使用存储的轨迹信息,每个邻居的50个子序列步骤也会被检索。这些k个轨迹中的每一个被传递给一个轨迹计算算法(如下所述)所有产生的Q值和它们的被嵌入信息一起存储在value buffer中,下图展示了这一过程的框图,这一过程的非参数性质意味着,虽然这些估计较少依赖于参数模型的准确性,但是它们局部更加相关了。这个局部buffer用于缓存当前状态附近的所有状态的轨迹计算结果。
在这里插入图片描述

3.2、在记忆轨迹中计算价值评估

  通过让replay buffer保存轨迹信息,可以通过时间来传播值,从而生成以轨迹为中心的价值估计 Q N P ( s , a ) Q_{NP}(s,a) 。第一幅图描述了value buffer如何被用来产生行为值的评估。有几种方法来估计这个值函数,我们将描述n步,轨迹中心规划(TCP)和基于内核的RL(KBRL)跟踪计算算法。从replay buffer中对于轨迹的n步评估通过如下公式计算:
在这里插入图片描述
  其中T是轨迹的长度, s t s_t r t t r_{tt} 是轨迹的状态和回报。这些评估利用了replay buffer中的信息。replay buffer中的模型也许不是固定的,这些评估值应该成为纯参数模型评估的补偿。尽管这一过程将会用作一个有用的baseline,n步回报仅仅评估被采样轨迹定义的策略;只有初始参数的自举涉及到最优值函数的评估。理想情况下,所有时间步骤的价值应该评估最优值函数。
在这里插入图片描述
  因此,另外一种评估 Q N P ( s , a ) Q_{NP}(s,a) 的方法是在每个时间步骤中使用bellman策略改善方法,表示在上面的公式。然而第二个公式能够被递归的使用,遍历后向轨迹,这种改善操作要求知道反实际行为的价值。我们称这种方法为轨迹中心规划。我们建议使用参数模型对这些非轨迹价值评估,我们构造了完整的行为条件的价值评估集合,称为轨迹中心规划(TCP)。
在这里插入图片描述
  下面和之前一样也是递归调用:
在这里插入图片描述
  对K个最相近的邻居的中心轨迹评估在超参数λ的基础上被平均,在上面的算法中展示出来。提出对细节算法的补充。

3.3、从中心轨迹到基于核的规划

  上面的方法可能似乎是特别的——为什么完全相信轨迹上的样本并且仅仅对反实际行为采用参数评估?为什么一起分析轨迹?相反是单独对待它们?为了回答这个问题,我们提出了一个轨迹中心方法的一般化,它扩展了基于核的强化学习(KBRL)。KBRL是一个适用于强理论的承诺的非参数方法对于每一个行动a,KBRL存储经验元组 ( s t , r t , s t + 1 ) S (s_t,r_t,s_{t+1})\in S .因为 S a S_a 是有限的(等于存储的转移数量),并且这些状态已经知道转移,我们可以对于所有的合状态 s t + 1 s_{t+1} 进行价值迭代从而获得价值评估(原始状态 s t s_t 不需要,作为bellman方程在一次转移后唯一的评估状态)。我们可以对所有的原始状态通过使用核去比较所有的合状态从而获得一个bellman方程的逼近版本,在下面的方程中呈现出来,我们定义了一个在状态上相似的核 k ( s , s ) k(s,s') (事实上是当前状态的嵌入,上面描述到)这是一个典型的高斯核。KBRL的行为值函数之后使用下面的方式评估:
在这里插入图片描述
  事实上,被存储的原始状态转移到某个合状态并且获得存储的奖励,通过使用一个相似的核 k ( x 0 , x 1 ) k(x_0,x_1) ,我们可以把合状态映射到一个原始状态分布上,这使得状态从S到S的状态替代为S到S‘的转移,这意味着所有的转移仅仅包含以前经历的状态。
  在轨迹中心规划的内容上,KBRL可以被认为是一种处理反实际行为的可供选择的方式:使用附近的转移评估他们的结果。此外,KBRL没有被强迫去处理单个的轨迹,因为它独立的对待所有的转移。
  我们建议对KBRL模型增加一个吸收伪状态 s ^ \hat s ,该状态和其他的伪状态是固定的, k ( s t , s ^ ) = C k(s_t,\hat s)=C 对于所有的状态 s t s_t 一些C大于0。使用这个定义我们可以让KBRL缓慢地结合相似性和参数的反实际行为评估,这个是通过设置伪状态值等于在状态参数值函数估计转台下比较:当 s t s_t 被评估时, Q N P ( s ^ , a ) Q θ ( s ^ , a ) Q_{NP}(\hat s,a)\approx Q_\theta(\hat s,a) ,因此可以通过合适地设置C,我们可以保证当数据密度很低时参数评估将会占主导,注意,这是除了第一个等式描述的值函数之外。
  通过缩小内核带宽和参数与伪状态相似度,可以使KBRL在数值上与以轨迹为中心的规划相同。使用适当的值,这将导致值估计被精确匹配(在轨迹上的)和参数评估(当没有找到时)所主导。这种减少是值得关注的,因为KBRL比以轨迹为中心的规划要昂贵的多。KBRL的计算复杂度是 O ( A N 2 ) O(AN^2) ,轨迹中心规划的计算复杂度是 O ( N ) O(N) ,其中N是存储转移的数量,A是行为空间的基数。因此,我们可以把KBRL的参数增强版本看作是轨迹中心规划的理论基础。在实践中,我们使用TCP轨迹计算算法而不是其他的。

未完待续…

发布了19 篇原创文章 · 获赞 25 · 访问量 2414

猜你喜欢

转载自blog.csdn.net/fly975247003/article/details/102481312