2023年7月29日发(作者:)
多智能体强化学习(⼀)IQL、VDN、QMIX、QTRAN算法详解⽂章⽬录 ⼀个完全合作式的多智能体任务(我们有n个智能体,这n个智能体需要相互配合以获取最⼤奖励)可以描述为去中⼼化的部分可观测马尔可夫决策模型(Dec-POMDP),通常⽤⼀个元组G来表⽰:G=⟨S,U,P,r,Z,O,n,γ⟩ 其中s∈S表⽰环境的真实状态信息。在每⼀个时间步,对于每个智能体a∈A≡{1,…,n}都需要去选择⼀个动作ua∈U去组成⼀个联合动作u∈U≡Un,再将这个联合动作给到环境中去进⾏状态转移:P(s′∣s,u):S×U×S→[0,1]。之后,所有的智能体都会收到⼀个相同的奖励:r(s,u):S×U→R。与单智能体⼀样γ表⽰折扣因⼦。 对于每个单智能体a来说,它接收的是⼀个独⽴的部分可观测的状态z∈Z,不同的智能体a具备不同的观测,但是所有的观测都来⾃环境的真实状态信息,所以可以⽤函数表⽰为:O(s,a):S×A→Z。对于每个智能体a它都有⼀个动作观测历史τa∈T≡(Z×U)∗,基于这个动作-观测的历史来构建随机策略函数
πa(ua∣τa):T×U→[0,1]。联合动作策略π是基于状态信息st构建的联合动作值函数Qπ(st,ut)=Est+1:∞,ut+1:∞[Rt∣st,ut],其中Rt=∑i=0γirt+i是折扣回报。∞IQLIQL论⽂全称为:MultiAgent Cooperation and Competition with Deep Reinforcement Learning 多智能体环境中,状态转移和奖励函数都是受到所有智能体的联合动作的影响的。对于多智能体中的某个智能体来说,它的动作值函数是依据其它智能体采取什么动作才能确定的。因此对于⼀个单智能体来说它需要去了解其它智能体的学习情况。 这篇⽂章的贡献可能就是在于将DQN扩展到分散式的多智能体强化学习环境中吧,使其能够去处理⾼维复杂的环境。 作者采⽤的环境是雅塔丽的Pong环境。作者基于不同的奖励函数设计来实现不同的多智能体环境。在竞争环境下,智能体期望去获取⽐对⽅更多的奖励。在合作的环境下,智能体期望去寻找到⼀个最优的策略去保持上图中的⽩⾊⼩球⼀直在游戏中存在下去。 为了测试分散式DQN算法的性能,作者只通过奖励函数的设计就构建出来了不同的多智能体范式环境:1. 完全竞争式:胜利⽅奖励+1,失败⽅奖励-1,是⼀个零和博弈。2. 完全合作式:在这个环境设定下,我们期望这个⽩⾊⼩球在环境中存在的时间越长越好,如果⼀⽅失去了球,则两⽅的奖励都是-1。3. ⾮完全竞争式:在完全竞争和完全合作式中,失去⼩球的⼀⽅奖励都式-1,对于胜利⼀⽅,作者设置⼀个系数ρ∈[−1,1]来看参数的改变对实验结果的影响。 IQL(Independent Q-Learning)算法中将其余智能体直接看作环境的⼀部分,也就是对于每个智能体a都是在解决⼀个单智能体任务,很显然,由于环境中存在智能体,因此环境是⼀个⾮稳态的,这样就⽆法保证收敛性了,并且智能体会很容易陷⼊⽆⽌境的探索中,但是在⼯程实践上,效果还是⽐较可以的。 独⽴的智能体⽹络结构可以参考下图所⽰:VDNVDN论⽂全称为:Value-Decomposition Networks For Cooperative Multi-Agent Learning 在合作式多智能体强化学习问题中,每个智能体基于⾃⼰的局部观测做出反应来选择动作,来最⼤化团队奖励。对于⼀些简单的合作式多智能体问题,可以⽤中⼼式(centralized)的⽅法来解决,将状态空间和动作空间做⼀个拼接,从⽽将问题转换成⼀个单智能体的问题。这会使得某些智能体在其中滥竽充数。 另⼀种极端⽅式式训练独⽴的智能体,每个智能体各玩各的,也不做通信,也不做配合,直接暴⼒出奇迹。这种⽅式对于每个智能体来说,其它智能体都是环境的⼀部分,那么这个环境是⼀个⾮平稳态的(non-stationary),理论上的收敛性是没法证明的。还有⼀些⼯作在对每个智能体都基于其观测设计⼀个奖励函数,⽽不是都⽤⼀个团队的团队奖励,这种⽅式的难点在于奖励函数的设计,因为设计的不好很容易使其陷⼊局部最优。 VDN中提出⼀种通过反向传播将团队的奖励信号分解到各个智能体上的这样⼀种⽅式。其⽹络结构如下图所⽰: 先看上图中的图1,画的是两个独⽴的智能体,因为对每个智能体来说,观测都是部分可观测的,所以Q函数是被定义成基于观测历史数据所得到的Q(ht,at),实际操作的时候直接⽤RNN来做就可以。图2说的就是联合动作值函数由各个智能体的值函数累加得到的:dQ((h1,h2,…,hd),(a1,a2,…,ad))≈~~∑i=1~Qi(hi,ai)~ 其中d表⽰d个智能体,Qi由每个智能体的局部观测信息得到,Qi是通过联合奖励信号反向传播到各个智能体的Qi上进⾏更新的。这样各个智能体通过贪婪策略选取动作的话,也就会使得联合动作值函数最⼤。 总结来说:值分解⽹络旨在学习⼀个联合动作值函数Qtot(τ,u),其中τ∈T≡Tn是⼀个联合动作-观测的历史轨迹,u是⼀个联合动作。它是由每个智能体a独⽴计算其值函数Qa(τa,ua;θa),之后累加求和得到的。其关系如下所⽰:nQtot(τ,u)=∑i=1Qi(τi,ui;θi) 严格意义上说Qa(τa,ua;θa)称作值函数可能不太准确,因为它并没有严格估计期望回报。 值分解的独⽴的智能体⽹络结构可以参考下图所⽰: 如果在此基础上在加上底层的通信的话可以表⽰为如下形式(其实就是将各个智能体的观测给到所有的智能体): 如果是在⾼层做通信的话可以得到如下形式: 如果是在底层加上⾼层上都做通信的话可以得到如下形式: 如果是集中式的结构的话,可以表⽰为如下形式:QMIX QMIX论⽂全称为:QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning 在之前的值分解⽹络中,拿到了联合动作的Q值之后,我们就可以直接取能够获取最⼤的Qtot(τ,u)所对应的联合动作。这种⽅式就能够实现集中式学习,但是得到分布式策略。并且对全局值函数做argmax与对单个智能体地值函数做argmax能够得到相同的结果:111⎛argmaxuQ1(τ,u)⎞⎜⎟⋮argmax⎝argmaxunQn(τn,un)⎠uQtot(τ,u)=(1) 这样的话,每个智能体a都可以基于Qa以贪婪策略选择动作。由于每个⼦智能体都采⽤贪婪策略,因此这个算法必定会是off-policy的算法,这⼀点是很容易实现的,并且样本的利⽤率会⽐较⾼。在VDN中采⽤的是线性加权,因此上述等式会成⽴,⽽如果是采⽤⼀个神经⽹络来学习融合各个智能体的Q函数的话,上述等式就未必会成⽴了。 在QMIX中也是需要⼀个联合动作值函数的,但是与值分解⽹络的不同之处在于,这个联合动作值函数并不是简单地由各个智能体的值函数线性相加得到的。为了保证值函数的单调性来使得上述等式(1)能够成⽴,作者对联合动作值函数Qtot和单个智能体动作值函数Qa之间做了⼀个约束:∂Qtot∂Qa≥0,∀a∈A∣(2) 设计思想如上所⽰,具体的⽹络结构如下图所⽰: 上述这个复杂的⽹络结构可以拆分为如下三部分:1.
agent networks: 对于每个智能体都要学⼀个独⽴的值函数Qa(τa,ua),单个智能体的⽹络结构采⽤DRQN的⽹络结构,在每个时间步,接收当前的独⽴观测Ot和上⼀个动作μt−1,如上图(c)所⽰。2.
mixing network: 是⼀个全连接⽹络,接收每个智能体的输出Qn(τn,ut)作为输⼊,输出联合动作值函数Qtot(τ,u),对每个⼦智能体的动作值函数做⾮线性映射,并且要保证单调性约束。想要保证公式(2)的单调性约束的话,我们只需要保证mixing network的权重⾮负即可。3.
hypernetworks:
hypernetworks⽹络去产⽣mixing network的权重,超参数⽹络输⼊状态s,输出Mixing⽹络的每⼀层的超参数向量,激活函数来使得输出⾮负,对于Mixing⽹络参数的偏置并没有⾮负的要求。 QMIX的训练⽅式是端到端的训练:naaL(θ)=∑i=1b[(yi−Qtot(τ,u,s;θ))]tot2 其中b表⽰从经验池中采样的样本数量,ytot
=r+γmaxu′Qtot(τ′,u′,s′;θ−),θ−为⽬标⽹络参数。由于公式(1)的存在,对Qtot取argmax的话,就是与智能体数量呈线性增长关系了。 上述算法中,单纯地去考虑前向传播的话,智能体之间其实是没有配合的。仅仅是取每个智能体能够获得的最⼤的值函数。因为对于单个智能体来说,它的最优动作是基于队友智能体的动作下得到的,但是由于整个⽹络是端到端进⾏训练的,所以感觉问题也不⼤。 还有就是在基于单个智能体的动作值函数下得到联合动作值函数的过程中,也就是在Mixing⽹络中有考虑状态st,所以相当于是有考虑全局的信息下去得到⼀个联合动作值函数。QTRANQTRAN论⽂全称为:QTRAN: Learning to Factorize with Transformation for Cooperative Multi-Agent Reinforcement learning代码:/Sonkyunghwan/QTRAN 之前说的VDN和QMIX都是值分解领域的两⼤标杆性⽂章,并且在⼀般的⼯程项⽬实战上VDN和QMIX的效果就还是⽐较好的,不过是在论⽂中的效果有被弱化,更具体地可以参考看⼀下这篇⽂章:。但是这篇QTRAN从理论层⾯还是值得分析⼀下的: 值分解地⽂章其实就是在保证联合动作取argmax的时候能够是对各个智能体的值函数取argmax。VDN中采⽤的是线性求和的⽅式,QMIX中采⽤的是保证单调性。对于⼀些任务,⽐如像联合动作的最优就是各个智能体的单独的最优的值函数,这样的问题可以采⽤这种⽅式,对于不是这类型的问题的话,这种限制就太强了。QTRAN提出了⼀种新的值分解的算法。 不管这个值分解如何分解,其实它们都需要取保证⼀个东西:111⎛argmaxuQ1(τ,u)⎞⎜⎟⋮argmax⎝argmaxunQn(τn,un)⎠uQtot(τ,u)=(1) VDN和QMIX中的线性求和和保证单调性都能够去保证上述条件的成⽴,也就是给了两个充分条件,但不是必要条件。为了之后更好的理论分析,在QTRAN中对上述这个东西做了⼀个定义IGM (Individual-Global-Max):IGM定义:对于⼀个联合动作值函数
Qjt:TN×UN↦R,其中τ∈TN是⼀个联合动作观测的历史轨迹。如果对于独⽴的智能体存在⼀个动作值函数[Qi:T×U↦R]i=1,满⾜如下关系式的话:N⎛argmaxu1Q1(τ1,u1)⎞⎜⎟⋮max⎝argmaxuNQN(τn,uN)⎠arguQjt(τ,u)=(2) 我们就说在轨迹τ下,[Qi]对Qjt满⾜IGM条件。Qjt(τ,u)是能够被[Qi(τi,ui)]分解的,[Qi]是Qjt的分解因⼦。 QTRAN中将原始的[Qi]映射成⼀个新的Qjt′QTRAN直观理解 在VDN和QMIX中是将Qjt通过累加求和和保证单调性的⽅式来分解的,作者这⾥提出⼀种更加鲁棒的分解⽅式,将原始的Qjt映射成Qjt,通过Qjt去分解值函数到各个⼦智能体上,来保证学到的Qjt与真实的动作值函数Q∗⾮常接近。这样在学习真实的动作值函数的时候,没有像VDN和QMIX那样对其加上⼀些累加求和和保证单调性的限制,所以它能学地更好。 但是由于部分可观测地限制,这个Qjt是没有办法⽤来进⾏具体地决策的,所以我们需要去找到Qjt、Qjt和[Qi]三者之间的关系。′′′′′可分解值函数的充分条件 由于不提供累加求和和单调性来保证可分解,QTRAN提出了⼀个满⾜IGM定义的充分条件:当动作值函数Qjt(τ,u)和[Qi(τi,ui)]满⾜下⾯这个关系式时,我们认为它是可分解的:∑0u=u=ui=1Qi(τi,ui)−Qjt(τ,u)+Vjt(τ)={≥0uNN 其中Vjt(τ)=maxuQjt(τ,u)−∑i=1Qi(τi,uˉi)。证明:想要通过上述条件证明出满⾜IGM条件,也就是argmaxuQjt(τ,u)=u时(其中uˉi=argmaxuiQi(τi,ui))才能取到全局最⼤的动作值函数。 当u=u时,由充分条件第⼀条可以得出:Qjt(τ,u)=∑i=1Qi(τi,uˉi)+Vjt(τ)。说明在智能体动作最优的情况下,能够保证全局的也是最优的。 当u=u时,Vjt≥Qjt(τ,u)−∑i=1Qi(τi,ui),⼜因为:NNQjt(τ,u)=≥≥∑∑∑i=1i=1Ni=1NQi(τi,uˉi)+Vjt(τ)Qi(τi,ui)+Vjt(τ)Qi(τi,ui)+Qjt(τ,u)−∑i=1NQi(τi,ui)≥Qjt(τ,u). 说明只有在各个智能体都采取最优动作的时候才能获得联合动作值函数最⼤。IGM条件得证。可分解值函数的必要条件 必要条件说的是,当满⾜IGM条件时,能够把充分条件给推出来。作者在论⽂中说到,存在⼀个仿射函数ϕ(Q)=A⋅Q+B对Q进⾏⼀个映射,其中[aii]∈R+N×N为⼀个对⾓矩阵,并且aii>0。看到这我⼈都傻了,这不就是QMIX吗,换了个马甲我就不认识你啦。。。其实不是,还多个⼀个B,B=[bi]∈RN。 作者将Qi进⾏了⼀个缩放,aiiQi+bi。然后定义:N′Qjt(τ,u):=∑i=1Qi(τi,ui) 这个就是VDN了,不同之处就是多了⼀个修正项B。 其⽹络结构如下: ⽹络结构中主要有三部分:1. 独⽴的动作值⽹络:fq:(τi,ui)↦Qi。对于每个动作值⽹络,输⼊是他⾃⼰的动作观测历史τi,输出动作值函数Qi(τi,⋅)。Qjt各个⼦智能体的动作值函数累加得到。2. 联合动作值⽹络:fr:(τ,u)↦Qjt。如上图所⽰,⽹络的前⾯⼏层参数是共享的,⽤所有的独⽴智能体的动作值函数向量来采样样本,更新联合动作值函数。3. 状态值⽹络:fv:τ↦Vjt。状态值函数类似dueling⽹络,并且这⾥可以引⼊全局的状态信息,它是独⽴于动作轨迹的,但是可以⽤来辅助动作值函数的训练。 此时损失函数可以表达成如下形式:222′Ltd(;θ)=(Qjt(τ,u)−ydqn(r,τ′;θ−))Lopt(;θ)=′(Qjt(τ,u)^jt(τ,u)+Vjt(τ))−QLnopt(;θ)=′(min[Qjt(τ,u)^jt(τ,u)+Vjt(τ),0])−Q 第⼀个lossLtd可以⽆忧⽆虑地去近似最优的联合动作值函数,下⾯两个就是⽤来去满⾜可分解值函数地充分必要条件的。 除此之外作者还提出了⼏个QTRAN算法的变种,整体算法如下图所⽰:参考MultiAgent Cooperation and Competition with Deep Reinforcement LearningValue-Decomposition Networks For Cooperative Multi-Agent LearningQMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement LearningQTRAN: Learning to Factorize with Transformation for Cooperative Multi-Agent Reinforcement learning
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690624415a380829.html
评论列表(0条)