The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games 阅读笔记

MAPPO算法是PPO算法专用于多智能体环境的变体。PPO作为on-policy算法,在多智能体环境下有着与其他off-policy的算法相比有着相同的采样效率,并在大多数场景下有着更好的表现。MAPPO算法可以同时作为CTDE(集中训练,分散执行, 有集中的价值函数)算法或分散学习算法(分散的价值函数)。

名词解释:

DEC-POMDP: decentralized observable Markov decision processes

GAE: Generalized Advantage Estimation

homogeneous/heterogeneous agents: 同质/异质 智能体

文章中研究是的分散部分可观察马尔科夫决策过程 (DEC-POMDP),并假设环境中的智能体都是同质智能体并通过共享参数 θ \theta θ的策略 π θ ( a i ∣ o i ) \pi_{\theta}(a_i|o_i) πθ(aioi) 通过局部观察 o i o_i oi产生动作 a i a_i ai,并优化累积奖励函数 J ( θ ) = E a t , s t [ ∑ t γ t R ( s t , a t ) ] J(\theta)=\mathbb{E}_{a^t,s^t}[\sum_t \gamma^t R(s^t, a^t)] J(θ)=Eat,st[tγtR(st,at)].

建议一:利用值正规化来稳定值的学习.

建议二:将特定智能体的局部特征加入全局状态,并保证状态空间的维度不会变得更大.

建议三:避免使用过多的训练epoch和将数据分割为mini-batches.

训练数据的使用

PPO算法使用重要性采样来对经验进行采样重用,从而将on-policy策略转换为off-policy策略。并用采样得到的数据用于多次epoch的训练。通常为10个epoch和每个epoch大约64个mini-batch。而在MAPPO中,频繁的采样会导致性能的下降,所以在难的任务中epoch为5,而简单的任务中为15。使用更多的数据用于估计梯度能够提高实际的性能,所以并不将mini-batch设为默认的64,而是更小(在SMAC中为2)。

建议四:为了更好的PPO算法性能,通过调整裁剪率 ϵ \epsilon ϵ 来权衡训练的稳定性和快速的收敛.

PPO裁剪

在PPO算法中,通过裁剪后的重要性比率(importance ratio)和价值损失(value loss)来限制策略和价值函数在迭代时的剧烈变化。

建议五:对于已经“死亡”的智能体,将取0的状态值和智能体的ID作为价值网络的输入.

“死亡”隐藏:在多智能体博弈中,一个智能体可能在博弈终止之前“死亡”。在多智能体策略梯度(PG)中,可以使用全局博弈状态来为“死亡”的智能体计算一个特定的全局状态。使得可以在接下来的timestep中继续使用包含已经“死亡”智能体的信息。但这样会放大学习到的价值函数(value function)的偏差(bias)。对“死亡”智能体价值的预测误差就会随着GAE的计算而累积,从而阻碍仍然“存活”智能体策略的学习。

MAPPO算法细节
在这里插入图片描述
MAPPO训练两个独立的神经网络: a c t o r actor actor 网络的参数为 θ \theta θ,值函数网络 c r i t i c critic critic的参数为 ϕ \phi ϕ。同质的多智能体之间可以共享同一个 a c t o r actor actor网络和 c r i t i c critic critic网络,但也可以拥有各自的 a c t o r actor actor网络和 c r i t i c critic critic网络。
c r i t i c critic critic网络表示为 V ϕ V_{\phi} Vϕ,网络的输入为 S S S,而输出为 R \mathbb{R} R
a c t o r actor actor 网络表示为 π θ \pi_{\theta} πθ,输入为智能体的观察 o t ( a ) o^{(a)}_{t} ot(a),输出为离散动作空间中的分类分布( categorical distribution)或是在连续动作空间进行采样的多元高斯分布(Multivariate
Gaussian Distribution)的均值(mean)和标准差(standard deviation)向量。
a c t o r actor actor网络的训练目标是最大化训练目标:
L ( θ ) = [ 1 B n ∑ i = 1 B ∑ k = 1 n min ⁡ ( r θ , i ( k ) A i ( k ) , c l i p ( r θ , i ( k ) , 1 − ϵ , 1 + ϵ ) A i ( k ) ) ] + δ 1 B n ∑ i = 1 B ∑ k = 1 n S [ π θ ( o i ( k ) ) ] L(\theta)=[\frac{1}{B_n} \sum^{B}_{i=1} \sum^{n}_{k=1} \min(r^{(k)}_{\theta, i}A^{(k)}_{i},clip(r^{(k)}_{\theta,i},1-\epsilon,1+\epsilon)A^{(k)}_{i})]+\delta\frac{1}{B_n}\sum^{B}_{i=1} \sum^{n}_{k=1} S[\pi_{\theta}(o^{(k)}_{i})] L(θ)=[Bn1i=1Bk=1nmin(rθ,i(k)Ai(k),clip(rθ,i(k),1ϵ,1+ϵ)Ai(k))]+δBn1i=1Bk=1nS[πθ(oi(k))]
其中
r θ , i ( k ) = π θ ( a i ( k ) ∣ o i ( k ) ) π θ o l d ( a i ( k ) ∣ o i ( k ) ) r^{(k)}_{\theta,i}=\frac{\pi_\theta(a^{(k)}_i | o^{(k)}_{i})}{\pi_{\theta_{old}}(a^{(k)}_{i} | o^{(k)}_{i})} rθ,i(k)=πθold(ai(k)oi(k))πθ(ai(k)oi(k))

A i ( k ) A^{(k)}_{i} Ai(k) 是使用GAE计算的优势值, S S S是策略的熵, d e l t a delta delta是熵系数超参数。
c r i t i c critic critic网络的训练目标是最小化损失函数:
L ( ϕ ) = 1 B n ∑ i = 1 B ∑ k = 1 n ( max ⁡ [ V ϕ ( s i ( k ) − R ^ i ) 2 , ( c l i p ( V ϕ ( s i ( k ) ) , V ϕ o l d ( s i ( k ) ) − ϵ ) , V ϕ o l d ( s i ( k ) ) + ϵ ) − R ^ i ) 2 ] ) L(\phi)=\frac{1}{B_n} \sum^{B}_{i=1}\sum^{n}_{k=1}(\max[V_{\phi}(s^{(k)}_{i} - \widehat{R}_{i})^{2}, (clip(V_{\phi}(s^{(k)}_{i}),V_{\phi_{old}}(s^{(k)}_{i})-\epsilon), V_{\phi_{old}}(s^{(k)}_{i})+\epsilon)-\widehat{R}_{i})^2]) L(ϕ)=Bn1i=1Bk=1n(max[Vϕ(si(k)R i)2,(clip(Vϕ(si(k)),Vϕold(si(k))ϵ),Vϕold(si(k))+ϵ)R i)2])
其中 R ^ i \widehat{R}_{i} R i是折扣的奖励, B B B指的是batch size , n n n指的是智能体的数量。如果 c r i t i c critic critic网络使用RNN,则损失函数随时间相加,通过BPTT (Backpropagation Through time)对网络进行训练。
MAPPO算法的共同超参数
在这里插入图片描述
作为比较的MADDPG算法和QMIX算法的共同超参数
在这里插入图片描述
MAPPO,MADDPG和QMIX算法在MPE环境中使用的共同超参数
在这里插入图片描述

MAPPO算法的大致结构(根据light_mappo)
在这里插入图片描述

ProcessOn分享链接

文章中的局限性:

  1. 只考虑了合作的环境,没有竞争环境

  2. 只考虑了离散的动作空间,没有考虑连续的动作空间(如果你的任务是连续动作空间,可以自己修改为多元高斯分布的方法,在mappo原有代码上修改为连续动作空间的效果并不好)

  3. 考虑的问题中,绝大多数都只包含同质多智能体,未考虑异质多智能体


[1] 官方github仓库
[2] 文章地址
[3] 多智能体强化学习(二) MAPPO算法详解 - 小小何先生的文章 - 知乎
[4] mappo算法的代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值