Modeling Others using Oneself in Multi-Agent Reinforcement Learning

ICML-18的文章,前几天我自己想的方法,就是对敌方和己方分别应用一个goal目标,只是我一直在考虑怎么从state中抽离出两个goal,而这篇文章思路的确很新奇,但是也有很明显的局限性。

*惯,先上环境:

Modeling Others using Oneself in Multi-Agent Reinforcement Learning

文章一共给了三个环境,第一个是coin,第二个是recipe,第三个是door

我先一个一个介绍环境设置,第一个环境是一个合作性质的环境

reward的设置:

Modeling Others using Oneself in Multi-Agent Reinforcement Learning

有两个agent a1和a2,他们会分别在环境中手机不同颜色的硬币,每个agent收集一种颜色的硬币,环境中一共有三种颜色的硬币,每个agent会随机给定一种颜色的硬币,当agent收集到不属于他们中任何一个人所需要的硬币时,将会受到惩罚。

8*8的格子,每局最多走20步。

这个环境想要最大化reward,就要同时收集自己的和队友的,也就是说需要agent能够推断出队友需要的颜色。

第二个环境是一个竞争性质的游戏,给定配方需要的东西,然后分别去收集(配方由三种原料构成)

原料中有两种是相同的,而环境中这种原料最多有两个,也就是说其中一个人收集到了,另一个人就收集不到,我们需要根据对方的行动推测出对方的配方组成。

第三个是一个合作性质的环境,只有当其中一个agent站在阀门上,环境才会打开门,让另一个agent进入从而获得reward,每行动一次会有一个惩罚。

算法:

Modeling Others using Oneself in Multi-Agent Reinforcement Learning

整体算法如上,我们每次采取行动的的时候,都需要首先给自己一个goal,这个goal是基本固定的,其中self和other使用的是同一个网络,为的是能让自己站在对方的角度,看到自己当前的状态和goal怎么做出决策。

之前我看的文章,都是从一个state-action pair去推断z,然后这个z能够引导state在此时做出正确的决策a。也就是forward的

,而本文是将z当做输入,随机初始化一个(均匀分布)然后反向优化这个z,也就是说这个z是一个优化的目标,每次自己做完决策后,然后进入推断阶段,推断阶段整体参数不优化,只优化z other,这里面应该是描述错误,那个loss应该是和其他智能体真正的动作作监督学习,我找了半天在其中一个版本中有详细的描述,好几个版本描述模糊。所以这个算法其实是这个样子的,他每次先让别人采取一个动作,然后再反向推断,如下文描述。

Modeling Others using Oneself in Multi-Agent Reinforcement Learning

缺陷:

一:优化的z other的时候,整体的参数是不变的,但是问题就出在这个观察其他人先动,在很多时候,其实是没有这个条件的,就是先看别人做动作是做不到的,拿上一次的动作和state应该更科学一些。从这个地方出发,对比阶段,其他算法也并没有获得其他agent的动作,而该算法获得了。对比实验上不充分。

二:需要明确规定goal,这本身在很多游戏中就是不可能的,也就是说限制了应用环境。

三:goal有点弱,也就是goal是一定的,我的目标是收集红色,那么输入可能就是[1,0,0],但是事实上,agent的goal应该是不断变化的,当前状态下想要到达的状态。

四:耗时,推断阶段十分的耗时。

看一下结果:

TRUE-OTHER-GOAL (TOG): 该算法,提供了正确的goal,不用去估计goal了,我每次都给你

NO-OTHER-MODEL (NOM):本文算法,去掉推断z other的阶段,砍掉z other

INTEGRATED-POLICY-PREDICTOR (IPP),该算法,从NOM出发,但是多一个输出层,也就是预测其他agent的action

SEPARATE-POLICY-PREDICTOR (SPP),该算法主要是对下面的式子进行延伸,也就是说我们当前的策略应该是基于对手策略

Modeling Others using Oneself in Multi-Agent Reinforcement Learning

这是DQN,所以这个是决策模型,也是value模型

Modeling Others using Oneself in Multi-Agent Reinforcement Learning

原文有多重结构,说两个,第一个很明显,输入自己的state和对手的state,第二个,用一些 Mixture-of-Experts,可以理解是,对(可能)不同对手预先学好的若干个expert Q functions,然后同样地,抽对手的特征来学一个权重,用这个权重,结合expert functions来得到最终的Q function。Modeling Others using Oneself in Multi-Agent Reinforcement Learning

在本文主要是把DQN的原算法应用到AC中,把policy 和 opponent model拆开,对手模型部队根据交叉熵建模,输入state和自己的goal(注意是自己的,不是对手真实的goal,因为不知道对手的goal),输出下一步采取的action,同时输出循环神经网络的hidden state 作为policy net的输入用于决策自己agent的action。(个人感觉没必要加入那个自己的goal,没啥用,甚至是个干扰)

Coin上的结果,第一个设计的比较有意思,看看agent能不能读懂goal的意思。

Modeling Others using Oneself in Multi-Agent Reinforcement Learning

TOG是效果最好的,红色和蓝色分别代表合作的agent应该收集的coin,绿色是不应该收集的。

TOG的优化目标就是收集尽可能多的自己需要的颜色,这个upper bound。个人认为是两个模型同时在竞争,因此在后面的几个算法中才会出现一个竞争不过另一个,而本文的算法可以逐步理解自己应该收集的正确颜色,通过不断的推断目标的goal,和自己的goal,来明确goal的含义

Modeling Others using Oneself in Multi-Agent Reinforcement Learning

第二个游戏的对比更简单粗暴,直接竞争,看看谁强,一目了然。

最后还有一个door,好像所有算法都work,我没注意看细节,之后用到在看。本文算法只是收敛快一点