多智能体强化学习-MAAC

引入注意力机制的actor-critic强化学习

论文链接:https://arxiv.org/pdf/1810.02912.pdf

代码链接:https://github.com/shariqiqbal2810/MAAC

摘要

本文主要思想是学习一个具有注意力机制的集中式critic。(CTDE方法中,训练时拥有上帝视角,提高学习效率,通过从所有智能体那里获得的消息进行集中学习critic,执行时各自独立决策actor),在训练期间的每个时间点动态的选择要关注的智能体,从而在具有复杂交互的多智能体环境中提高性能。(有点像MADDPG和COMA的结合体)(off-policy)

方法

将多智能体任务建模为POMDP框架 G ( S , A , O , P , R , γ ) \mathcal{G}(S,A,O,P,R,\gamma ) G(S,A,O,P,R,γ),智能体部分可观测,每个智能体学习一个策略 π i : O i → P ( A i ) \pi_i: O_i \rightarrow P(A_i) πi:OiP(Ai) π i \pi_i πi将每个智能体的观测值映射到其对应的一系列动作的分布。智能体的目标是学习一个使其期望折扣回报最大的策略: J i ( π i ) = E a 1 ∼ π 1 , . . . , a N ∼ π N , s ∼ T [ ∑ t = 0 γ t r i t ( s t , a 1 t , . . . , a N t ) ] J_i(\pi_i)=E_{a_1\sim \pi_1,...,a_N\sim \pi_N,s\sim T}[\sum_{t=0}\gamma^tr_{it}(s_t,a_{1t},...,a_{Nt})] Ji(πi)=Ea1π1,...,aNπN,sT[t=0γtrit(st,a1t,...,aNt)]

策略梯度评估:

∇ θ J ( π θ ) = ∇ θ l o g ( π θ ( a t ∣ s t ) ) ∑ t ′ = t γ t ′ − t r t ′ ( s t ′ , a t ′ ) \nabla_{\theta}J(\pi_{\theta})=\nabla_{\theta}log(\pi_{\theta}(a_t|s_t))\sum_{t'=t}\gamma^{t'-t}rt'(s_{t'},a_{t'}) θJ(πθ)=θlog(πθ(atst))t=tγttrt(st,at)

actor- critic

γ t ′ − t r t ′ ( s t ′ , a t ′ ) \gamma^{t'-t}rt'(s_{t'},a_{t'}) γttrt(st,at)会带来高方差,actor-critic的方法旨在利用except-return的函数估计来缓解这个问题,例如学习一个函数来估计给定状态,动作的excepted discounted returns,通过off-policy的TD,最小化回归损失:
L Q ( ϕ ) = E ( s , a , r , s ′ ) ∼ D [ ( Q ϕ ( s , a ) − y ) 2 ] y = r ( s , a ) + γ E a ′ ∼ π ( s ′ ) [ ( Q ( ϕ ⃗ ) ( s ′ , a ′ ) ) ] L_Q(\phi)=E_{(s,a,r,s')\sim D}[(Q_\phi(s,a)-y)^2] y=r(s,a)+\gamma E{a'\sim \pi(s')[(Q_{(\vec\phi)}(s',a'))]} LQ(ϕ)=E(s,a,r,s)D[(Qϕ(s,a)y)2]y=r(s,a)+γEaπ(s)[(Q(ϕ )(s,a))]

soft actor-critic

为了鼓励探索,避免收敛到非最优的确定性策略,提出了最大熵强化学习方法- soft value function,在策略梯度中加入熵项:
∇ θ J ( π θ ) = E s ∼ D , a ∼ π [ ∇ θ l o g ( π θ ( a ∣ s ) ) ( − α l o g ( π θ ( a ∣ s ) ) + Q ϕ ( s , a ) − b ( s ) ) ] \nabla_{\theta}J(\pi_{\theta})=E_{s\sim D,a\sim \pi}[\nabla_{\theta}log(\pi_{\theta}(a|s))(-\alpha log(\pi _{\theta}(a|s))+Q_\phi(s,a)-b(s))] θJ(πθ)=EsD,aπ[θlog(πθ(as))(αlog(πθ(as))+Qϕ(s,a)b(s))]
相应的,值函数的时序差分TD的损失函数也修改为一个新的目标:
y = r ( s , a ) + γ E a ′ ∼ π ( s ′ ) [ ( Q ϕ ⃗ ) ( s ′ , a ′ ) − α l o g ( π θ ⃗ ( a ′ ∣ s ′ ) ) ] y=r(s,a)+\gamma E_{a'\sim\pi(s')}[(Q_{\vec\phi)}(s',a')-\alpha log(\pi_{\vec\theta}(a'|s'))] y=r(s,a)+γEaπ(s)[(Qϕ )(s,a)αlog(πθ (as))]

MAAC

主要思想:利用attention机制从其他智能体的观测-动作对中选取重要的信息来构造每个智能体的critic的输入,解决扩展性问题,帮助智能体有选择性的筛选出重要的环境信息,忽略不重要的信息。
在这里插入图片描述attention:每个智能体向其他智能体查询相关的O和A,并将这些信息合并到值函数的估计中。 Q i ϕ ( o , a ) Q_i^{\phi}(o,a) Qiϕ(o,a)是由智能体i的O和A,以及其他智能体的信息贡献:
Q i ϕ ( o , a ) = f i ( g i ( o i , a i ) , x i ) Q_i^{\phi}(o,a)=f_i(g_i(o_i,a_i),x_i) Qiϕ(o,a)=fi(gi(oi,ai),xi)
o i , a i o_i,a_i oi,ai表示所有智能体的观测集合和动作集合。 f i f_i fi g i g_i gi是两层的MLP, g i g_i gi用于对智能体的观测-动作对进行embedding编码.
x i x_i xi是其他智能体贡献的加权和
x i = ∑ i ≠ j α i j v j = ∑ i   j α j h ( V g j ( o j , a j ) ) x_i=\sum_{i\ne j}\alpha_{i j} v_j=\sum_{i\ j}\alpha_j h(Vg_j(o_j,a_j)) xi=i=jαijvj=i jαjh(Vgj(oj,aj))
attention机制: α i j \alpha_{i j} αij是智能体i对智能体j的注意力权重, v j v_j vj是智能体j的观测-动作对的embedding,过程如下:首先用 g j g_j gj进行embedding编码,然后利用共享矩阵V 完成线性转换,最后进行非线性操作 h.(例如ReLU)。
α i j \alpha_{i j} αij通过比较智能体i和智能体j的embedding向量的相似性( e i , e j e_i,e_j ei,ej),得到:
α i j ∝ e x p ( e j T W k T W q e i ) \alpha_{i j} \propto exp(e_j^TW_k^TW_qe_i) αijexp(ejTWkTWqei)
其中, W q W_q Wq e i e_i ei映射为query, W k T W_k^T WkT e j e_j ej映射为key

MAAC中将来自不同attention head的贡献作为单个向量进行串联作为critic的输入,每一个head可以专注于不同智能体的混合权重。
所有的extracting 选择符,键,值( W k , W q , V W_k,W_q,V Wk,Wq,V)的权重在所有的智能体之间共享,形成一个共同的嵌入空间。这种参数共享能够在异构智能体的情况下学到共同的embedding空间。
MAAC的思想就是将其他智能体的观测-动作对先进行embedding操作然后利用注意力权重加权相加然后再与自身智能体的观测-动作对连接起来作为critic的输入,注意力权重度量了两个智能体embedding的相似程度。直观上来看,这样做能够让智能体更多地关注与自己相似的智能体,理论上来说对信息的利用率应该更高,另外通过将所有智能体的观测-动作对合并成一个单维度向量,也解决了扩展性问题。
critic更新:(和COMA类似)
由于参数共享,所有的critic一起更新以最小化联合回归损失函数:
L Q ( ψ ) = ∑ i = 1 N E ( o , a , r , o ′ ) ∼ D [ ( Q i ψ ( o , a ) − y i ) 2 ] L_Q(\psi)=\sum_{i=1}^NE_{(o,a,r,o')\sim D}[(Q_i^{\psi}(o,a)-y_i)^2] LQ(ψ)=i=1NE(o,a,r,o)D[(Qiψ(o,a)yi)2]
y i = r i + γ E a ′ ∼ π θ ⃗ ( o ′ ) [ Q i ψ ⃗ ( o ′ , a ′ ) − α l o g ( π θ ⃗ i ( a i ′ ∣ o i ′ ) ) ] y_i=r_i+\gamma E_{a'\sim \pi_{\vec{\theta}(o')}}[Q_i^{\vec{\psi}}(o',a')-\alpha log(\pi_{\vec{\theta}_i}(a_i'|o_i'))] yi=ri+γEaπθ (o)[Qiψ (o,a)αlog(πθ i(aioi))]
每个智能体策略(policy)的更新:(和COMA类似)
∇ θ i J ( π θ ) = E s ∼ D , a ∼ π [ ∇ θ i l o g ( π θ i ( a i ∣ o i ) ) ( − α l o g ( π θ i ( a i ∣ o i ) ) + Q i ϕ ( o , a ) − b ( o , a i ) ) ] \nabla_{\theta_i}J(\pi_{\theta})=E_{s\sim D,a\sim \pi}[\nabla_{\theta_i}log(\pi_{\theta_i}(a_i|o_i))(-\alpha log(\pi _{\theta_i}(a_i|o_i))+Q_i^\phi(o,a)-b(o,a_i))] θiJ(πθ)=EsD,aπ[θilog(πθi(aioi))(αlog(πθi(aioi))+Qiϕ(o,a)b(o,ai))]
b ( o , a i ) b(o,a_i) b(o,ai)用反事实基线计算优势函数,和COMA类似。
在MADDPG中,其他智能体的动作是直接从经验池回放中采样,这样可能会导致过采样,在MAAC中,所有智能体的动作都从当前策略中采样,保证智能体体能够在当前策略上进行协同。

实验部分

实验环境

在这里插入图片描述

在这里插入图片描述

1.测试算法的可扩展性,合作环境
2.测试算法处理与奖励相关信息的能力,例如足球比赛(信用分配)
在这里插入图片描述

【资源说明】 基于生物启发式算法的多智能体强化学习算法python实现源码+项目说明+模型及注释.zip ## 项目介绍: 多智能体系统(MAS)由于具有解决复杂任务的灵活性、可靠性和智能性,已被广泛地应用于不同的应用领域,如计算机网络、机器人和智能电网等。通信是多代理世界保持组织和生产的重要因素。然而,以往的多代理通信研究大多试图预先定义通信协议或采用额外的决策模块进行通信调度,这将造成巨大的通信开销,并且不能直接推广到一个大型代理集合。本文提出了一个轻量级的通信框架:**基于信息素协同机制的分布式深度Q网络算法(Pheromone Collaborative Deep Q-Network, PCDQN)**,它结合了深度Q网络和stigmergy机制。它利用stigmergy机制作为部分可观察环境下独立强化学习代理之间的间接沟通桥梁。我们证明了PCDQN框架的优越性,同时也将我们的模型转移到解决多代理路径搜索问题上。利用PCDQN框架,多代理编队能够学习适当的策略,成功地在雷区导航环境中获得最优路径。 *** ## 实验环境 ```sh Windows10操作系统,8GB内存,2核Intel Core i7-6500U pytorch-1.4.0+cpu python 3.8 ``` 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
在探索多智能体追逃博弈环境的实现之前,熟悉gym框架是十分重要的,它提供了一个统一的接口来测试强化学习算法。接下来,我们将讨论如何使用Python实现这样一个环境,并选择合适的强化学习算法进行训练。具体来说,我们将按照以下步骤进行: 参考资源链接:[Python开发的多智能体追逃博弈强化学习平台](https://wenku.csdn.net/doc/5a6m30t14n?spm=1055.2569.3001.10343) 1. **环境设置**:首先,你需要安装gym及其相关的gym多智能体扩展库。然后,你可以定义一个环境类,其中包含追捕者和逃逸者两种智能体。智能体的动作空间可以设定为移动指令,如向上、下、左、右移动。状态空间则需要包含智能体的位置以及可能的任务完成标志。 2. **智能体交互**:在多智能体环境中,需要定义智能体之间的交互规则,包括追捕者如何选择移动策略以接近逃逸者,以及逃逸者如何选择移动策略以躲避追捕者。这可能涉及到博弈论的某些原理,如最小化对手的期望回报。 3. **强化学习算法应用**:一旦环境构建完成,下一步就是选择并实现适合多智能体追逃博弈的强化学习算法。考虑到多智能体环境的复杂性,可以尝试使用深度Q网络(DQN)、多智能体深度确定性策略梯度(MADDPG)或者多智能体演员-评论家(MAAC)等算法。这些算法能够在多智能体场景中处理复杂的状态空间和动作空间。 4. **训练和测试**:在算法选择和环境搭建完成后,可以编写训练循环,让智能体在环境中进行多次迭代训练。同时,记录每次迭代的性能指标,如胜利次数、平均回合数等,以便于评估算法的有效性。 5. **结果分析和调优**:根据训练结果,可能需要对环境参数或算法参数进行调整,以达到更好的性能。这可能包括智能体的学习率、探索策略、策略网络的架构等。 6. **可视化和文档编写**:为了更好地理解训练过程和智能体行为,可以通过gym提供的可视化工具来观察智能体的动作。此外,撰写详细的文档可以帮助其他人理解和复现你的工作。 对于具体实现,你可以参考《Python开发的多智能体追逃博弈强化学习平台》这一资源,它提供了详细的源代码和使用指南,帮助你在gym框架下实现上述步骤。源代码中可能包含了环境搭建、强化学习算法封装、训练和测试的脚本,以及相关的文档说明。通过学习和运行这些代码,你将能够深入理解如何使用Python和gym框架来开发和测试多智能体系统。 参考资源链接:[Python开发的多智能体追逃博弈强化学习平台](https://wenku.csdn.net/doc/5a6m30t14n?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值