多智能体强化学习——值分解方法理论及代码组件

1.理论

值分解方法是一种主流的多智能体强化学习解决方案。

它使用集中式训练、分布式执行(CTDE)架构(在训练时能得到全局信息,在执行时只需要局部观测),解决部分可观测问题;使用局部动作值函数以一定规则约束(一般为IGM)来拟合全局动作值函数,解决信度分配问题。

2.常见算法

①VDN

         直接把局部值函数直接相加得到全局值函数

[1706.05296] Value-Decomposition Networks For Cooperative Multi-Agent Learning (arxiv.org)

②QMIX

         学习一个mix网络来作为约束,mix取绝对值大于0

QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning

③Qatten

多智能体强化学习——值分解方法理论及代码组件_第1张图片

        通过attention机制学习约束表示 

[2002.03939] Qatten: A General Framework for Cooperative Multiagent Reinforcement Learning (arxiv.org)

④QPLEX

多智能体强化学习——值分解方法理论及代码组件_第2张图片

         把动作值函数分解成优势函数 + 价值函数

[2008.01062] QPLEX: Duplex Dueling Multi-Agent Q-Learning (arxiv.org)

                                        等等................................................

3.代码组件

以https://github.com/oxwhirl/pymarl/ 代码库为依据

以QMIX作为主要分析对象

①config 配置文件

python3 src/main.py --config=qmix --env-config=sc2 with env_args.map_name=2s3z

选择qmix.yaml 、sc2.yaml 并把sc2.yaml中的map_name 改成2s3z default.yaml 默认会加载

覆盖顺序 algo.yaml 会 覆盖 sc2.yaml 会覆盖 default.yaml

配置文件包含三块内容:algs算法配置、envs环境配置、default默认配置

1、default.yaml

主要配置了一些通用的默认属性

关键配置:

 这两个参数默认为True,在输入神经网络inputs时会拼接上agent_id 和上一时刻动作

2、sc2.yaml 

环境的配置(默认不用sc2_beta.yaml)

多智能体强化学习——值分解方法理论及代码组件_第3张图片

注意其中也有一个obs_last_action  设置为False

他是在env_args下的,即是env_args.obs_last_action 不会覆盖default配置

只是环境在得到原始观测是不包含last_action

3、qmix.yaml

多智能体强化学习——值分解方法理论及代码组件_第4张图片

 第一部分是探索 探索5w步 从1降到0.05

其他就是算法网络的一些参数

②components

没细看 主要是一些动作选择的方式、replaybuffer之类的...

③controller

控制器,选择agent的动作

关键的函数:_build_inputs

                        forward

                        select_actions

④envs

SMAC环境接口

⑤learners

QMIX用到的是q_learner 

关键的函数:train 训练过程  loss为TD_error

如果想要改进算法,这里是关键的部分

⑥modules

agent网络、mix网络

⑦runners

默认用的是episode_runner

关键的函数:run 收集一个episode的样本数据

                        还有一些是log函数

⑧utils

工具类,没细看:(

⑨main.py

运行入口

⑩run.py

真正的运行程序

关键函数:run_sequential  包含怎么训练、怎么eval、怎么save

流程框架单独开一个吧

你可能感兴趣的:(人工智能,强化学习,深度学习,python,pytorch)