Abstract
本文提出了一种使用Reward Machine作为reward function编码任务的方法。其实就是把传统人为定义的reward function替代了。使用reward Machine把team-level的任务,一个团队合作的任务拆分成多个子任务,然后使用不同的agents来学习这些子任务。最后把所有求得的最优policy集合一起。 并且每一个agent学习不同的子任务时,只会根据自己的local state(自己看到的环境)和其他agent的抽象表示来学习。
既然有提到拆分,那拆分出来的子任务重新组合后是否就是原任务呢?文章也给了相应的证明。同时提出了分解的q-learning方法。实验结果也表明RM分解的方法比集成学习(centralized learner)收敛效率更高,效果更好。
这篇论文的贡献:提出了一种基于RM的方法解决MARL问题,并且这种方法有理论保证,且实验效果比传统方法要好。
这个文章算是一个应用的文章,先找到一个应用,MARL。然后再尝试做实验的时候找到了一些不足,加以改进。
Introduction
multi-agent reinforcement learning 是多个智能体在相同的环境中互相交互并学习最大化长期回报的策略。
MARL有两个难点,分别是协作和不平稳。首先当个智能体在纠正错误的时候可能会与其他智能体是行为相关,这就涉及到了协作问题。其次是智能体是在同时学习和更新他们的行为,从单个智能体的角度来说,这个学习问题是不平稳的,因为单个智能体的optimal policy是会不断改变(受其他agent的影响),而且强化学习任务的稀疏回馈也会造成这些问题。
这篇文章中会用reward machine来描述MARL problem,RM会包含状态以及主要的动作。RM会将任务拆分成多给子任务,每一个子任务分配一个agent学习,这些agent只能看到自己的状态(自己的RM)以及其他agent的抽象表达,并且独立于其他agent进行训练。这样就可以解决个体间的非静态的问题。而且个体的学习是基于他们的行为和其他成员的抽象表示上,这从某种程度上讲是能够完成智能体之间的协作的。
Preliminaries
主要是提一下MDP的一些知识。典型的MDP五元组,状态集合,动作集合,价值函数,转移函数,折扣函数。 M = < S , A , r , p , γ > M = <S, A, r,p, γ > M=<S,A,r,p,γ>。扩展到MARL, M = < S 1 , . . . , S N , A 1 , . . . , A N , p , R , γ > M = <S_1, ..., S_N, A_1, ..., A_N, p, R, γ> M=<S1,...,SN,A1,...,AN,p,R,γ>
Reward Machines for MARL
RM representation
一个team work的例子:
目标:
A
1
A_1
A1要到达G点
限制:所有agent不能走进颜色的区域。黄色和绿色区域只需要按下黄色和绿色按钮就可以消除区域,而红色区域的消除则需要同时按下红色按钮。
这是一个典型的teamwork问题,
A
1
A_1
A1想要走到Goal则必须消除红色区域,而红色按钮又需要
A
2
,
A
3
A_2,A_3
A2,A3同时按下。所以
A
1
A_1
A1需要先按下黄色按钮,让
A
2
A_2
A2去按下绿色按钮,然后
A
3
,
A
2
A_3,A_2
A3,A2同时按下红色,最后
A
1
A_1
A1到达Goal。
按照以往的强化学习思路,这里面每一个像素都是一个状态,比如
A
1
A_1
A1往下移动一点点,或者
A
2
A_2
A2往下又移动一点点,都是一个状态,但是这些状态未必有用,比如只要
A
1
A_1
A1不按下黄色按钮,他就只能在红色区域前面那片地方移动,这些移动对游戏没有什么进展,我们可以把这些状态都归为一类。这些重要的状态就组成了RM。也就是说RM其实是对状态的一种简化。
u
I
u_I
uI是初始状态。当黄色按钮按下,黄色区域消失,这是一个重要状态,于是到达了
u
1
u_1
u1状态,如果智能体没有触碰到颜色区域,又没有按下按钮,那么这些移动对于游戏的进行没有实际的进展,就都把他们记做
u
I
u_I
uI。于是整个游戏的状态就被抽象成了9个状态。
用数学语言来描述: R = < U , u I , Σ , ξ , σ > R = <U, u_I, \Sigma, ξ, \sigma> R=<U,uI,Σ,ξ,σ>, U U U状态集合,这里的状态不是现实状态,是抽象状态,现实状态是 S S S。 u I u_I uI是初始状态, Σ \Sigma Σ环境事件,比如按下了按钮,有智能体进入了区域。 ξ : U ∗ Σ − > U ξ: U * \Sigma -> U ξ:U∗Σ−>U,当前抽象状态发生了环境事件之后到达了下一个抽象状态。最后 σ \sigma σ价值函数,抽象状态之间的转移后的价值,在转移后 σ \sigma σ会给出价值。如果当状态到达了 u 7 u_7 u7,则任务完成。定义一个reward states F F F,如果是complete state u ′ u' u′,则 u ′ ∈ F u' \in F u′∈F。
则
σ
f
u
n
c
t
i
o
n
\sigma function
σfunction描述如下:
σ
(
u
,
u
′
)
=
{
1
u
∉
F
,
u
′
∈
F
0
o
t
h
e
r
w
i
s
e
\sigma(u, u')=\left\{ \begin{array}{rcl} 1 & & u \notin F,u' \in F\\ 0 & &otherwise \end{array} \right.
σ(u,u′)={10u∈/F,u′∈Fotherwise
这个output function也是一个稀疏函数。不过这个函数既然是人为设定的。为什么不能设定成不同的值?比如离终点的步数越近的可以给予更高的权重?
定义成功序列:一串事件的集合我们记为事件序列,这里的事件是指在RM中环境事件。a sequence of events : u 0 , e 0 , u 1 , e 1 , . . . , u k e k u k + 1 u_0,e_0,u_1,e_1,...,u_ke_ku_{k+1} u0,e0,u1,e1,...,ukekuk+1,如果最后能够到达最终状态,我们就称这个序列是成功的序列,用R来描述。 R ( e 0 e 1 . . . e k ) = 1 R(e_0e_1...e_{k}) = 1 R(e0e1...ek)=1,否则就是失败的。比如上面的RM图中
Labeling Functions and Q-Learning with Reward Machines
RM定义了teamwork中的抽象状态,但是这些毕竟还是抽象的状态,不是现实的状态,那么现在的关键就是如何把这些抽象的状态和现实状态联系在一起,也就是要定义一个 U , S U,S U,S的关系。
RMs may be applied to the RL setting by using them to replace the reward function in an MDP. However, RMs describe tasks in terms of abstract events.
定义一个label function L : S ∗ U − > 2 Σ L : S * U -> 2^{\Sigma} L:S∗U−>2Σ,把当前的环境信息抽象成一些high-level事件的集合。
Note, however, that L also takes the current RM state u ∈ U u ∈ U u∈U as input, allowing the events output by L to depend not only on the environment state, but also on the current progress through the task
但是请注意,L还以当前的RM状态 u ∈ U u∈U u∈U作为输入,这使得L输出的事件不仅取决于环境状态,而且取决于任务的当前进度。
label function输出的是当前抽象状态需要到达下一个抽象状态所需要执行的high-level action。
Q-learning with RMs
这个算法是学习一些q函数的集合,其实就是学习多个q表。将orignal RM分解成多个RM后,Q-learning with RMs会学习每一个q表。
1.智能体通过在RMs的状态
u
t
u_t
ut,q函数(
q
u
t
(
s
t
,
a
)
q_{u_t}(s_t, a)
qut(st,a))来选择action。RM的每一个状态都有一个Q函数。
2.智能体移动到现实世界的下一个状态
s
t
+
1
s_{t+1}
st+1
3.
L
(
s
t
+
1
,
u
t
)
L(s_{t+1},u_t)
L(st+1,ut)会输出能使得到达
u
t
+
1
u_{t+1}
ut+1的high-level动作序列,就是
Σ
\Sigma
Σ里面的。
4.使用ouput function计算从
u
t
u_t
ut到
u
t
+
1
u_{t+1}
ut+1的reward
5.更新q函数。
看到这里这篇文章的大致想法我是明白的了,首先是使用RM把teamwork抽象成一些状态和high-level actions。然后将RM分解成多个子任务,每一个子任务又由RM来表示。然后使用q-learning with RMs学习optimal policy。 关键是里面还有些细节不太明白
- 这里的
q
u
t
(
s
t
,
a
)
q_{u_t}(s_t, a)
qut(st,a)是每一个抽象状态一个的意思吗?如果是这样要怎么学习?
解答:RM图中每一个u就一个q表,通过在QRM算法学习,算法在另一篇文章《Using Reward Machines for High-Level Task Specification and Decomposition in Reinforcement Learning》提出。 - 其次是label function,他的定义是 S ∗ U − > 2 Σ S * U -> 2^\Sigma S∗U−>2Σ,输出的是能够到达下一个状态的high-level action。问题是我输出下一个状态的high-level根据RM图不就好了,为什么还要现实世界的状态?不明白输入s的意义。
解答:label function我理解错了,输出确实是一个event,但这个event是通过
s
t
+
1
s_{t+1}
st+1决定的,当agent走到了现实状态
s
t
+
1
s_{t+1}
st+1的时候,RM状态也要做相应的改变,做出改变的event由label function给出。如现在RM状态是
u
2
u_2
u2,
A
2
A_2
A2按下了红色按钮,这个时候对于RM状态是需要改变到
u
3
u_3
u3的,但是做什么改变agent是不知道的,所以需要执行label function函数来查找相应的event。
L
(
s
t
+
1
,
u
t
)
L(s_{t+1}, u_t)
L(st+1,ut)输出了
这个时候agent就会通过着label function的event转移到
u
3
u_3
u3,达到和现实状态统一的情况。
-
labeling function是人为定义的还是计算机给出?
解答:补充材料给出了一个labeling function的算法,应该是算法计算给出。 -
另外,文章前面就说到
The algorithm assumes each agent may only observe its own local state and the information encoded in its sub-task RM.
这个local state怎么定义的?是现实世界的state还是RM的state?
解答:local state就是现实世界的状态,RM状态论文里面直接提RM state。
Team Task Decomposition
重头戏,任务分解。
MARL中的分解方法是把每一个agent看成是一个独立的个体,处理不同的任务,需要考虑的是每一个agent之间的信息交互。在这个任务中agent只能观察到他们自己的状态,其他人的状态不能看到。这里的状态就是指现实世界的状态,local state就是现实世界的状态,如果是RM的状态会直接说是RM state。也就是对于每一个agent来说,他的地图上没有其他agent,只有他自己和环境,但是环境事件他是可以感觉到的,比如按下按钮,隔离带消失。
给定一个原问题teamwork的RM,我们会分配n个agent来处理这个任务。也就是说,第
i
t
h
i^{th}
ith个agent会有
Σ
i
⊂
Σ
\Sigma^{i} \subset \Sigma
Σi⊂Σ个事件子集,这些事件并不是具体的事件,而是能够代表游戏进步的事件。 比如
Σ
i
\Sigma^i
Σi我们称作是local event set。
任务分解也很简单,high-level events和high-level states都进行分解,比如这里三个agents,
A
1
A_1
A1的local events:
可以看到
A
1
A_1
A1的local events只是子集,并没有包含所有的high-level events,因为只有这几个动作是对
A
1
A_1
A1有影响的,红色区域不能进入,可以按下黄色按钮,红色按钮需要按下才能够消除红色区域,最后到达目的地。另外的几个事件就和
A
1
A_1
A1没有关系了。同理,
A
2
,
A
3
A_2,A_3
A2,A3也是如此。
动作分解的依据就是观测event是否对agent有直接的影响。对于
A
1
A_1
A1来说,其实黄色区域也是有影响的,因为只有黄色区消失了,
A
2
A_2
A2才能按下绿色按钮,
A
3
A_3
A3才能个
A
2
A_2
A2共同按下红色按钮,只不过这种影响太间接了,可以用agent之间的协作来替代。
绿色也不包含在 A 1 A_1 A1动作中,因为按下绿色按钮只是按下红色按钮的一个中间步骤,而且绿色按钮对 A 1 A_1 A1没有直接影响。
既然events分解完了,那是时候分解RM了。每一个agent有一个RM。 R M = < U i , u I i , Σ i , ξ i , σ i , F i > RM = <U_i, u_I^i, \Sigma^i, ξ_i, \sigma_i, F_i> RM=<Ui,uIi,Σi,ξi,σi,Fi>,其他和RM一样,这里多了一个 F i F_i Fi,表示的是奖励状态的集合,也就是到达了最终状态。这种每一个agent的RM称为the projection of Reward Machine。
构建projection的步骤:
1.只要events不包含在
Σ
i
\Sigma^i
Σi,那么就把边去除掉。对于
A
1
A_1
A1来说
u
2
,
u
3
,
u
4
u_2, u_3, u_4
u2,u3,u4之间都是没有边的。
2.合并没有边连接的状态。
如图,绿色按钮对于
A
1
A_1
A1来说是没有意义的,可以去掉,以此类推,
u
1
,
u
2
,
u
3
,
u
4
,
u
5
u_1, u_2,u_3,u_4,u_5
u1,u2,u3,u4,u5就可以合并成一个状态,
u
8
,
u
9
,
u
10
u_8,u_9,u_{10}
u8,u9,u10可以合并成一个状态,
u
6
,
u
7
u_6,u_7
u6,u7不变。
图中,
u
1
1
u_1^1
u11就是
u
1
,
.
.
.
,
u
5
u_1,...,u_5
u1,...,u5的状态集合,而
u
4
1
u_4^1
u41就是
u
8
,
u
9
,
u
10
u_8,u_9, u_{10}
u8,u9,u10的状态集合。
3.定义转移函数
ξ
i
:
U
i
∗
Σ
i
−
>
U
i
ξ_i : U_i * \Sigma_i -> U_i
ξi:Ui∗Σi−>Ui。
4.定义奖励状态集合,定义输出函数
σ
i
\sigma_i
σi。
RM任务分解并不是直接分解orignal的RM,而是通过一系列步骤从original RM中生成projection,而且projection不等于reward Machine,比reward Machine多了一个奖励状态。
这里还给出了证明。RM分解出来每一个agent的
R
i
R_i
Ri,那么这些
R
i
R_i
Ri执行的行为是否等于original RM的行为呢?下面给出了理论证明,证明在补充材料。
Theorem 1
给出原始reward Machine和一系列
R
1
,
R
2
,
.
.
.
,
R
N
R_1, R_2,...,R_N
R1,R2,...,RN,假设
R
R
R是bisimilar to parallel composition (我也不太清楚是什么东西)。给定事件序列
ξ
ξ
ξ,
R
(
ξ
)
=
1
R(ξ) = 1
R(ξ)=1当且仅当
R
i
(
ξ
i
)
=
1
R_i(ξ_i) = 1
Ri(ξi)=1。
这里的
ξ
ξ
ξ和
ξ
i
ξ_i
ξi是包含的关系,
ξ
i
ξ_i
ξi是对于projected reward machine中的事件序列,也就是从
ξ
ξ
ξ中去掉无关事件。
他这里没有直接证明,而是证明分解前和分解后对任务的影响是不是一致的。
DQPRM
Decentralized Q-Learning with Projected Reward Machines。前面提到过一个Q learning with RMs,这里扩展了一下。我们使用的算法需要能够学习多个策略,因为这里把一个teamwork分解成了多个agent执行的任务,所以我们使用的算法需要学习每一个agent的optimal policy。
DQPRM就是这样一种算法:
算法思想很简单,首先把RM拆分成多给projected RMs,然后对每一个agent使用QRM算法训练。但是在之前提到过,每一个agent在训练的时候是看不见队友的,也只能看到他自己的local state,也就是自己的projected RM,那么他要怎么交互呢?
Local Labeling Functions and Shared Event Synchronization
前面提到的labeling function,这里提到的是local label function,顾名思义就是定义在每一个agent上的label function,而且这个label function是针对projected RM的。label function的作用的把现实世界(底层环境 underlying environment)和 R i R_i Ri连接起来,定义导致 Σ i \Sigma_i Σi中发生的环境状态。这个label function感觉有点抽象,大概是知道是这么个意思,但是具体实现可能还要看他的补充材料。
在RM中(不是projected),label function的定义: S ∗ U − > 2 Σ S * U -> 2^{\Sigma} S∗U−>2Σ,把底层环境 s ∈ S s \in S s∈S和RM状态 u ∈ U u \in U u∈U联系起来。agent做了某些动作之后,他的底层环境会转移到另外一个状态,那么这个label function就是判断这个新的状态有没有改变RM中的状态。 例如,当 A 2 , A 3 A_2,A_3 A2,A3同时按下了红色按钮,现实状态会发生改变,同时也改变了RM中的状态,这种改变通过label function来体现,假设 s t + 1 s_{t+1} st+1就是同时按下了红色按钮, u u u是没有执行步骤前的RM状态 u 5 u_5 u5,那么这个时候 L ( s t + 1 , u t ) L(s_{t+1}, u_t) L(st+1,ut)就是会输出红色圆圈,这代表着RM需要执行通过红色圆圈的event转移到 u 6 u_6 u6。
既然RM被拆分成了多给,那么我们需要重新定义local labeling function:
这里的描述是,将local states
s
i
∈
S
i
s_i \in S_i
si∈Si和projected RM状态
u
i
∈
U
u^i \in U
ui∈U映射成事件。并且他假定了每一次RM中的状态转移只会因为一个事件,也就是说local labeling function只会返回一个event。
接下来就是论文给的完整定义:
原始RM中的labeling function会被分解成多给
L
i
L_i
Li,
L
(
s
,
u
)
=
e
L(s,u) = e
L(s,u)=e当且仅当
L
i
(
s
i
,
u
i
)
=
e
L_i(s_i, u^i) = e
Li(si,ui)=e,
s
i
s_i
si是
s
s
s的第
i
t
h
i^{th}
ith个分解,也就是第
i
t
h
i^{th}
ith个agent的local state。
u
i
u^i
ui就是第
i
i
i给agent的projected agent。不过这里的
s
i
,
u
i
s_i,u_i
si,ui都要有协作的state,如果是单独只和一个agent相关联那就不需要满足这个条件。
从上面的定义可以看出, L i L_i Li和 R i R_i Ri差不多,都是拆分出来的。而且定义也有点像, R i R_i Ri是要求 R ( ξ ) = 1 R(ξ) = 1 R(ξ)=1当且仅当 R i ( ξ i ) = 1 R_i(ξ_i) = 1 Ri(ξi)=1,反之亦然。
Labeling function 和 Local labeling function的区别:
L
(
s
,
u
)
L(s,u)
L(s,u)输出的是当 团队 到达了某一个状态和RM state的event,而local labeling function是每一个agent的local state和他自己的
R
i
R_i
Ri,输出是
Σ
i
\Sigma_i
Σi中的event。
Events synchronization
事件同步其实就是各个 R i R_i Ri直接的同步运行,这需要local labeling function来维护。
当agent运动更新到了一个新的状态
s
t
+
1
s_{t+1}
st+1,这个时候local labeling function输出的事件会用来更新对应的
R
i
R_i
Ri,问题是,我们之前在对
Σ
\Sigma
Σ做拆分的时候,拆分的事件并不是一个划分,比如按下黄色按钮这个动作,
A
1
,
A
2
A_1,A_2
A1,A2的事件集合都包含了,所以对应于
R
1
,
R
2
R_1,R_2
R1,R2的转移,要么都转移,要么都不转移。
同步事件 实现如下所示:如果
L
i
L_i
Li返回了同步事件
e
e
e,在更新
R
i
R_i
Ri之前,第
i
i
i个agent应该检查队友查看是否也返回了同步事件。事件同步对应的是agents直接的信息交流和共同承认共享事件已经发生。
Theorem 2
这个定理和前面的的Theorem 1有点类似,只不过这里是加上了事件同步,但是实际上他这里的意思还是一样的。是定理一的扩展。在Theorem 1中:
在Theorem 2中使用
L
i
(
s
i
,
u
i
)
L_i(s_i,u_i)
Li(si,ui)的输出来代替了event而已。Theorem 1输入的只是events,没有同步的概念,只要看
R
i
R_i
Ri有没有包含相应的event就好了,但是Theorem 2输入是local labeling function,这就会有事件同步了,因为如果
L
i
L_i
Li输出的是事件,他必须要把这个事件和其他agent label function输出的事件比较,检查这个事件是不是共同的事件,所以在Theorem 2 中要加上同步的概念。
定理二的贡献主要在于表明使用 R M R RM R RMR,team labeling function L L L和 R M R i RM R_i RMRi, local labeling function L i L_i Li分别描述team task没有什么区别,产生的效果都是一样的。
Theorem 3
V
π
(
s
)
V^π(s)
Vπ(s)代表无折扣回报的期望值,
V
i
π
(
s
)
V_i^π(s)
Viπ(s)代表
R
i
R_i
Ri的期望回报(并没有提是无折扣还是有折扣)。根据Fréchet conjunction inequality,可以给出一个等式。
Training and Evaluating
由于RM,team labeling function和 R i , L i R_i, L_i Ri,Li没有区别,于是问题就转换成了求 N N N个agent的optimal policy。
在训练期间,每一个agent都会执行Q-learning找到相应子任务的optimal policy,一个agent不是学习一个q-learning, R i R_i Ri有多少个状态就学多少个Q函数。比如 A 1 A_1 A1有5个 u u u,那么就学5个Q函数。当然了,每一个agent是看不见其他人的,他们的local state里面只有他们自己。
这个算法很容易理解,他这里只是给出了agent之间各自学习的算法而已,还有事件同步没有给在里面,在4.1有一段话:
相同事件出现的时候,需要同时导致同时更新或者同时不更新。他这里只是说了分布训练,我觉得他这个训练应该是并行训练,当agent1出现了和agent2有共同事件的时候,agent1会停下来等agent2到达这个event,然后同时更新。大概意思明白,但是到具体细节实现可能还要看看代码。
Experimental Results
准备了3个实验,3个baseline。
实验:buttons task,two-agent rendezvous tasks,three-agent rendezvous tasks。
baseline:the centralized QRM (CQRM) algorithm, independent q-learners (IQL), and hierarchical independent learners。
中间还有好多其他算法的条件设置,那些算法的论文没看过,我也不知道设的什么玩意。
DQPRM的设置。
Experiment result
CQRM只在Two-agent rendezvous task做了实验,因为在其他实验上超出内存。
在two-agent rendezvous task任务上。h-IL方法是比DQPRM要好的,但是在其他任务上还是DQPRM要好。论文对原因也做了分析。
DQPRM的最优秀的地方在于它对于任务的复杂程度和agent的数量有良好的扩展性,因为DQPRM对于agent的训练是分开的,agent之间的信息交互是通过事件同步来完成。这也有助于 解决问题的不平稳性,agent在训练过程中可以更频繁的接收到奖励。 这有利于削弱强化学习任务的稀疏回馈和延迟回馈问题。
DQPRM拆分成了多个agent以及相关的子任务,比如在button task的任务中,拆分成了
A
1
,
A
2
,
A
3
A_1, A_2, A_3
A1,A2,A3后可以发现,其实agent的projected RM和他们对应的local state都减少了的。
上图紫色部分就是
A
1
A_1
A1的local state状态集合,其他地方几乎是不变的,因为他看不见其他agent。所以local state减少了,projected RM也是减少的,这样一来搜索空间少了,回馈自然会频繁一些。所以他这performance的提升的关键就在于拆分,减小了搜索空间。
如果CQRM在Three agent的任务能跑起来就好对比了,可惜内存溢出。
最后还补充了一个ten-agent的任务:
只有DQPRM能完成。
Related Work & Conclusion
MARL任务现有工作有许多,IQL方法是一种比较受欢迎的方法,这种方法会让agent独立学习,并把队友看成是环境的一部分。而DQPRM是忽略队友,只能看到自己。如果把队友看成环境,那么队友的位置会对状态产生影响,不同队友的位置会对应不同的状态,所以IQL的状态数量还是很多,对于稀疏回馈和延迟回馈问题我感觉还是没有得到很好的处理。而DQPRM方法是忽略了队友,比如上图,紫色部分是 A 1 A_1 A1能走的位置,而其他地方因为没有了其他agent,所以其他地方都是不变的,这样就缩小了状态。
DQPRM和hierarchical approach方法较类似,都可以解决稀疏回馈和奖励延迟的任务。典型的Hierarachical approach用任务的结构层次来分解多智能体问题,agent仅通过在最高层次上的子任务学习协作策略,这样比agent在原始的状态动作对上学习效率更高。和DQPRM有相似之处,DQPRM也是通过RM分解team task,然后通过学习RM上策略来达到目的。而Hierarchical approach是通过task的层次结构拆分成子任务,通过在最高层次上的子任务学习策略。所以DQPRM和Hierarchical approach最主要的区别还是使用拆分team task的任务不同。
下面这段话是简述RM分解和层次分解的区别,还是有点不太懂。
RMs和task hierarchies最主要的区别是RMs清晰的编码high-level sub-task的时间序列,有点像是时序逻辑。
RMs分解的task,并独立训练每一个agent,同时还能学习适合于原始问题的行为。这样就把multi-agent问题转换成了多个单agent的问题。而agent之间的协作问题,通过事件同步和projected RMs来解决了。RM分解出的projected RM里面其实是带有协作的信息的,比如在只有同时按下红色按钮才会转移到下一个状态,这就是一种协作。
而在层次分解中,智能体还是必须要学习如何在子任务上协调。因此,学习的问题仍然是一个被简化了的多智能体的问题。
不过协作这个问题我个人简单DQPRM里面也是有的,只不过他把协作的很多信息存储在了RM里面,比如事件序列,另外事件同步也是一种协作,agent之间相互监督维护projected RM。
之前在abstract提到了MARL的两个challenge,coordinate和non-stationary。coordinate的问题multi-agent是通过把协作信息存储在RM中解决的,而non-stationary问题,每一个agent能够学到的policy都是optimal的,因为学习的过程和reward function直接关联起来了,这样就确保了学习的每一个步骤都是为了提升reward而进行的。对比试验中HRL就未必是解决了non-stationary问题的,因为HRL中给出的小目标未必是和reward function相关,这样就导致学习的小目标他未必是为了提升reward,可能会和optimal policy无关。而本文的模型就是在reward function上做工作,相当于是把一个reward function分解成多个reward function,只不过一个reward function一个状态表示而已。
多智能体任务随着智能体数量的增加解决难度也会增加,而DQPRM这种方法他是把一个multi-agent问题拆分成了多个单智能体的任务,使得DQPRM的扩展能力很强,无论智能体有多少个,只要能拆分成多个projected RM,就能解决。ten-agents任务就是例子。
这篇文章的主要工作是提出一种基于reward machine的方法来解决MARL问题。通过对RM的分解可以把一个team work分解成多个子任务,从而把一个MARL问题转换成多个single-agent的问题求解。
而作者还提出在single-agent的设定下,RM不需要提前给出,可以通过经验学习到。所以future work或许可以考虑在multi-agent的情况下学习RM。
这篇文章还有挺多细节的,因为有些内容涉及到另一篇文章,等看完了再回来补了。