200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 多智能体深度强化学习 # MADDPG

多智能体深度强化学习 # MADDPG

时间:2020-03-12 03:39:27

相关推荐

多智能体深度强化学习 # MADDPG

前置基础:

DDPG

多智能体深度强化学习 # 多智能体深度强化学习基础

Multi-Agent:多智能体

Deep:与DQN类似,使用目标网络+经验回放

Deterministic:直接输出确定性的动作

Policy Gradient: 基于策略Policy来做梯度下降从而优化模型

MADDPG其实是在DDPG的基础上做的修改,而DDPG可以看作在DPG的基础之上修改而来,DPG是确定性输出的Policy Gradient;也可以把DDPG理解为让DQN可以扩展到连续控制动作空间的算法。

DDPG不适用于多智能体的环境(详细原因见MADRL基础),MADDPG算法是对DDPG算法为适应多Agent环境的改进,最核心的部分就是每个Agent的Critic部分能够获取其余所有Agent的动作信息,进行中心化训练和非中心化执行,即在训练的时候,引入可以观察全局的Critic来指导Actor训练,而测试的时候只使用有局部观测的actor采取行动。

以两个agent为例, 当模型训练好后,只需要两个actor与环境交互,即只需要绿色的循环。这里区别于单个agent的情况,每个agent的输入状态是不一样的。环境输出下一个全信息状态S_all后,actor1和actor2只能获取自己能够观测到的部分状态信息S1,S2。

在训练过程中,critic1和critic2可以获得全信息状态,同时还能获得两个agent采取的策略动作a1,a2。也就是说,actor虽然不能看到全部信息,也不知道其他actor的策略,但是每个actor有一个上帝视角的导师,这个导师可以观测到所有信息,并指导对应的actor优化策略。

下载openai/MADDPG的源码

dependencies: Python (3.5.4),OpenAI gym (0.10.5), tensorflow (1.8.0), numpy (1.14.5)

实现:

conda create -n maddpg python=3.6

一定要用3.6,3.5导致grpcio无法安装,坑特别多。

(通过pip安装,conda install不行)

然后下载Multi-Agent Particle Environments (MPE)

在源码目录下执行:

pip install -e .

然后回到maddpg源码下,再次执行上述代码。

最后进入maddpg/experiments执行下面代码:

python train.py --scenario simple

另外,OpenAI开源的MADDPG官方源码有一个小错误,可能导致如下报错:

Traceback (most recent call last):File “train.py”, line 193, intrain(arglist)File “train.py”, line 182, in trainrew_file_name = arglist.plots_dir + arglist.exp_name + ‘_rewards.pkl’TypeError: can only concatenate str (not “NoneType”) to str

修改train.py第182行为

rew_file_name = str(arglist.plots_dir) + str(arglist.exp_name) +'_rewards.pkl'

第185行为:

agrew_file_name = str(arglist.plots_dir) + str(arglist.exp_name) +'_agrewards.pkl'

Traceback (most recent call last):File "train.py", line 193, in <module>train(arglist)File "train.py", line 183, in trainwith open(rew_file_name, 'wb') as fp:FileNotFoundError: [Errno 2] No such file or directory: './learning_curves/None_rewards.pkl'

他比较蠢,不能自己建目录,所以需要人为在experienments下面建子目录learning_curves。

显示可视化界面:

训练完数据后,进行可视化,只需运行代码:python train.py --scenario +环境的名称 --display即可。例如:

python train.py --scenario simple_tag --display

如果还想了解MADDPG的论文和原理部分请阅读后文。

假设现在有两个智能体A和B,对于A来说,B是它的环境中的一部分,当B采取动作改变了自身状态,那么对于A来说它的环境也变了,更何况两智能体之间存在竞争和合作的关系,如果一方的策略变了,那么另一方所做的估计(经验)也不能适用。

对于policy gradient方法,在要求多智能体协作的时候通常会有很高的方差,因为智能体的reward通常取决于许多智能体的动作,智能体自己的动作的reward表现出更多的可变性,从而增加了其梯度的方差。

但是如果我们能够知道其他agent的policy,action那么就有:

可以看到在Critic网络中有:obs_dim = dim_observation * n_agentact_dim = self.dim_action * n_agent其他部分和DDPG几乎相同。

MADDPG存在哪些问题,可以怎么改进?

(1)因为我们需要知道其他agent的policy,这是一个很强的假设,为了解决它我们可以用一个函数来拟合其他agent的策略(inferring policy)。

(2)我们利用了其他agent的policy来学习,这样有可能会过拟合,比如说几个agent之间本来是合作的关系,如果突然变成了竞争关系那么之前学到的policy就会受到很大影响,为了解决这个问题,我们可以采用 ensemble policy,即每个episode都随机的选取一部分sub-policy。

Reference

《Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments》 NIPS from openaiopenai/MADDPG的githubLearning to Cooperate,Compete, and Communicate用多智能体强化学习算法MADDPG解决"老鹰捉小鸡"问题基于PARL的MADDPG实现多智能体深度强化学习——MADDPG算法代码分析(tensorflow)多智能体强化学习之MADDPG

这篇讲了很多数学部分。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。