针对深度多智能体强化学习的稳定经验回放(Experience replay)

522 阅读6分钟

针对深度多智能体强化学习的稳定经验回放(Experience replay)

Stabilising Experience Replay for Deep Multi-Agent Reinforcement Learning


Experience replay提出的思想就是为了让agent从过去经历的中进行学习,从而提高了data effiency。replay memory 可以稳定学习,防止网络过度拟合最近的经验,提高样本效率。

摘要:

因为独立Q-learing引入的不稳定性(nonstationary)使其与深度Q-learning所依赖的experience replay memory 不兼容,提出两种方法来解决

  • 方法一:使用多智能体采样重要性的变化来衰减过时(obsolete)的数据
  • 方法二:将每个智能体的值函数设置在一个指纹(fingerprint)上,消除从replay memory 中采样数据的时间歧义

介绍:

  • 使用独立Q-learning(IQL)来消除多智能体不同观测值的歧义问题:每个智能体独立学习自己的策略,将其他智能体视为环境的一部分。 但从每个智能体来看,环境变得并不稳定
  • Experience replay:不仅有助于稳定深度神经网络的训练,还可以通过重用Experience tuple来提高采样效率
  • 但是!IQL与Experience replay结合起来有问题:IQL引入的非平稳性意味着:在智能体的replay memory中生成数据的动态不再反映它当前动态。虽然没有replay memory也可以学习 ,但是有replay memory却有问题的,因为他会持续的混淆obsolete experience 因此本文提出两种方法
    • 将replay memory中的experience视为 off-environment data,通过用每个元组中联合动作的概率来放大每个replay memory中的元组,可以根据当时使用的策略,计算元组在后续被采样训练时的重要性采样矫正。由于较旧的数据倾向于生成较低的重要性权重,因此这种方法会在数据obsolete时使其衰减,从而防止nonstationary replay memory可能产生的混乱。
    • 每个智能体学习一种策略来避免IQL的nonstationary ,该策略以其他智能体策略的估计为条件,而其他智能体的策略是由他们行为的观察值推断出来的。虽然在这个更大的空间中学习q函数似乎是不可能的,特别是当每个智能体的策略是一个深度神经网络时,我们表明这样做是可行的,因为每个智能体只需要一个低维指纹的条件,这足以消除中replay memory经验元组的采样的歧义。

基础知识:

  • 单智能体强化学习的贝尔曼方程:image-20230623093122460

    损失函数:image-20230623093902590

    策略π的动作价值函数Q表示为Qπ(s,u)=E[Rtst=s,ut=u]Q^π(s,u)=E[R_t|s_t=s,u_t=u];递归表示的Q函数 Q(s,u)=maxπQπ(s,u)Q^*(s,u)=max_πQ^π(s,u)是实时奖励r(s,u)和过渡函数P(ss,u)P(s'|s,u)的函数;使用基于样本的TT近似来迭代改进Q函数;replay memory存储元组<s,u,r,s><s,u,r,s'>;公式2中的yiDQN=ri+γmaxuiQ(si;ui;θ)y{_i^{DQN}=r_i+γmax_{u'_i}Q(s'_i;u'_i;θ^-)} 其中θθ^−是目标网络的参数

  • 多智能体强化学习

    完全合作的环境:n个智能体被定义为aA={1,,n}a∈A=\{1,…,n\} ;G=<S,U,P,r,Z,O,n,γ> 表示游戏环境,S为状态,U为动作,P为状态转移概率,r为奖励,Z为观察值,O为观察函数,n为智能体数量,γ为折扣率;所有的agent的action形成联合action uU=UnU^n ;状态转移概率定义为 P(s'|s,u);所有agent共享相同的奖励函数r(s,u);每个agent的观察值z∈Z由观察函数O(s,a)得出;τaτ_a表示动作观察历史,每次状态转移后,将动作uau_a和新的观察值O(s,a)加入到τaτ_a中,形成τaτ_a’;粗体u表示联合量,- a表示除a以外的智能体,即u=[uau_aua_{-a}];uau_a表示智能体a的动作;单引号' 表示下一时间的,ˆ表示放大空间的

    • 在深度强化学习中一般通过循环神经网络或LSTM对Q函数进行建模,可以通过让每个agent使用基于自己的观察和动作训练的递归神经网络执行DQN来实现;

    • 而独立Q-learning(IQL)使用基于样本的T近似来迭代改进q函数,每个agent学习自己的q函数,该函数仅以状态和自己的行为为条件。此外,由于环境是部分可观察的,因此IQL可以在每个agent以它自己的动作观察历史τaτ_a为条件来进行训练,即Qa(τa,ua)Q_a(τ_a, u_a)


方法:(两种方法都解决了nonstationary问题)

  • 方法一:多智能体重要性抽样

    • 由于IQL将其他智能体的策略视为环境的一部分,因此可以使用非环境重要性采样来稳定经验回放。由于我们知道智能体在每个训练阶段的策略,我们确切地知道环境变化的方式,从而可以通过重要性加权对其进行校正。

      • 完全可观察的多智能体环境

        • Q值函数:image-20230622163501058

          损失函数:image-20230622164421934

          转移函数:image-20230622171229108

          Gˆ的Bellman方程:image-20230622171935857

          把rˆ和Pˆ带回的GˆBellman方程:image-20230622172554266

        • 公式3中nonstationary成分为πa(uas)=iaπi(uis)π_{-a}(u_{-a}|s)=\prod_{i∈-a}π_i(u_i|s),它随着其他智能体的策略、时间的变化而变化,因此要在replay memory中记录它,于是就replay memory存储元组就变成放大转移元组<s,ua,r,π(<s,u_a,r,π(uas),s>(tc)_{-a}|s),s'>^{(t_c)};公式4中其中tit_i为第i个样品采样时间(存入时刻),trt_r为replay时刻,在计算loss时加入重要性权重πatr(uas)πati(uas)\frac{π{^{t_r}_{-a}}(u_{-a}|s)}{π{^{t_i}_{-a}}(u_{-a}|s)}

          定义放大状态空间sˆ={s,τa}sˆ=\{s,τ_{-a}\},该状态空间既包括原始状态s,也包括其他智能体的动作观察历史τa_{-a} ;还定义了观察函数Oˆ(sˆ,a)=O(s,a) : 观察值不变 ;新的奖励函数rˆ(sˆ, u) =ua\sum_{u_{-a}}πa(_{- a}(ua_{−a}|τa)r(s,_{−a})r(s, u);新的转移函数:公式5;Gˆ=<Sˆ,U,Pˆ,rˆ,Z,Oˆ,n,γ>

  • 方法二:多智能体指纹

    • 将观察值变为 O(s)={O(s),ϵ,e}O'(s)=\{O(s),\epsilon,e\} 其中训练迭代数e,探索率ϵ\epsilon;以此消除时间上的歧义

      训练轮数可以很好地体现数据的新旧,而随训练退火的探索率可以使拟合的结果变得平滑,更好地反映其他agent策略在训练过程中的变化。


结论

  • 单个使用方法都很好:使用重要性抽样方法(XP+IS)在使用前馈模型时略优于XP。指纹方法(XP+FP)显著提高了前馈模型的性能。
  • 两种方法结合没有太大的提高:重要性采样与指纹结合(XP+ IS +FP)没有额外的好处。
  • 相比之下指纹更好:指纹可以获得比使用重要性抽样时更大的数据集,可以在不同的历史经验之间进行学习转移,这可以显著提高性能。