Deep Decentralized Multi-task Multi-Agent Reinforcement Learning under Partial Observability

总结

核心:multi-task的moe思想迁移到multi-agent上(学习distilled agent),基于DQN,提出适合multi-agent的trajectory,改进了single agent,学习并使用distilled agent

p.s. 同时存储agent的trajectory图画得真好啊

背景

real-world的任务partial observability,因此提出partial observability情况下的multi-task, multi-agent,从单个任务的policy中蒸馏出统一的policy在所有任务上使用

multi-agent

本文是cooperative setting,agents共享joint return
MARL可以分为joint action learners(JALs)和independent learners(ILs),前者会观察所有agent的action,后者只观察local action。受partial observability影响,本文基于ILs

multi-task

强化学习视角下的multi-task希望能学到一个通用的policy,在所有related task上perform well。这种方式最适合shared common feature tasks

mmoe

mmoe架构图

细节

rl用在multi-task上,主要是相关的task,agents share characteristics
本文是multi-agent,cooperative,independent,joint reward。
agent是deep recurrent q-networks,multi-task通过concurrent experience replay trajectories来实现

变量定义

每个agent做出动作 a i ∈ A i a_i \in \mathcal{A}_i aiAi,joint action为 a = [ a 1 , a 2 , … , a n ] \bold{a} = [a_1, a_2, \dots, a_n] a=[a1,a2,,an]
环境从state s ∈ S s \in \mathcal{S} sS进行转移,转移概率为 P ( s ′ ∣ s , a ) = T ( s , a , s ′ ) P(s'|s, \bold{a}) = \mathcal{T}(s, \bold{a}, s') P(ss,a)=T(s,a,s)
在每个timestamp里,每个agent得到观测值 o i ∈ Ω i o_i \in \Omega_i oiΩi,同时有joint obs为 o = [ o 1 , o 2 , … , o n ] \bold{o} = [o_1, o_2, \dots, o_n] o=[o1,o2,,on],其概率为 P ( o ∣ s ′ , a ) = O ( o , s ′ , a ) P(\bold{o}|s', \bold{a}) = \mathcal{O}(\bold{o}, s', \bold{a}) P(os,a)=O(o,s,a)

CERTs/concurrent experience replay trajectoris:本文提出的改进后的buffer,用于MARL下的experience replay

HDRQN: Q i ( o t i , h t − 1 i , a i ; θ i ) Q^i(o_t^i, h_{t-1}^i, a^i; \theta^i) Qi(oti,ht1i,ai;θi),在DQN的基础上,用2个学习率 α , β \alpha, \beta α,β,其中 0 < β < α < 1 0 < \beta < \alpha < 1 0<β<α<1
用target网络计算误差: δ t b = y t b − Q b ( o t b , h t − 1 b , a b ; θ i ) \delta_t^b = y_t^b - Q^b(o_t^b, h_{t-1}^b, a^b; \theta^i) δtb=ytbQb(otb,ht1b,ab;θi),当 δ ≥ 0 \delta \geq 0 δ0时,用 α \alpha α,否则用 β \beta β

multi-agent实现方式

MARL一般不用replay buffer,是因为如果单独存agent的buffer,可能会让agent学到不同步的动作。experience replay对于网络稳定性非常有用,所以本文还是用了experience replay,只不过做了改进,改进为CERTs/concurrent experience replay trajectoris,在buffer中存储所有agent的数据

CERTs如下图,可以看到buffer里是存了所有agent同步的动作
e: episode, t: timestamp, i: agent
每次学习时,从buffer里随机取t开始, t ∈ { − τ + 1 , … , H e } t \in \{ -\tau + 1, \dots, H_e \} t{τ+1,,He},其中 τ \tau τ表示每次选的时长, H e H_e He是最后一个t,上图的(b),从上至下开始的时间分别是+1, -1, +2。对于超过有效的长度,用0在后面填充

multi-task实现方式

每个agent把sample出的结果以及q值保存下来(长度 τ \tau τ),凑满batch个后,有一个minibatch的结果: B = { < o t 0 b , Q t 0 b > , … , < o t 0 + τ − 1 b , Q t 0 + τ − 1 b > } b = { 1 , … , B } \mathcal{B} = \{ <o_{t_0}^b, Q_{t_0}^b>, \dots, <o_{t_0+\tau - 1}^b, Q_{t_0 + \tau - 1}^b> \}_{b = \{1, \dots, B\}} B={<ot0b,Qt0b>,,<ot0+τ1b,Qt0+τ1b>}b={1,,B}。训练1个distilled DQRN,其损失函数为KL散度:
L K L = E ∑ a = 1 A i s o f t m a x a ( Q t b T ) ln ⁡ s o f t m a x a ( Q t b T ) s o f t m a x ( Q t , R b ) L_{KL} = \mathbb{E} \sum_{a=1}^{A^i}softmax_a(\frac{Q_t^b}{T})\ln \frac{softmax_a(\frac{Q_t^b}{T})}{softmax(Q^b_{t,R})} LKL=Ea=1Aisoftmaxa(TQtb)lnsoftmax(Qt,Rb)softmaxa(TQtb)
其中:

  1. Q t , R b Q^b_{t,R} Qt,Rb是distilled HDRQN输入与分任务agent相同的输入时的输出
  2. T T T是softmax temperature

这个损失函数实际上就是希望能让distilled HDRQN在specific task上的输出和specific agent的输出相近

实验

single-task实验
baseline:Dec-DRQN,分开比较了single-agent和multi-agent
multi-task实验

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值