RODE: LEARNING ROLES TO DECOMPOSE MULTI-AGENT TASKS

RODE: LEARNING ROLES TO DECOMPOSE MULTI-AGENT TASKS
发表时间:2021(ICLR 2021)
文章要点:这篇文章用角色(roles)来分解复杂任务,解决多智能体问题。主要思路是根据动作对环境和其他agents的影响来分解动作空间,形成不同的角色动作空间(role action space),然后通过role selector来给agent赋予角色,再学习role policies在角色动作空间上进行决策。这种方式相当于缩小的动作空间,增加了探索的先验,在需要exploration的环境上有很好的效果。
具体的,先学习动作表征(action representation),根据动作对环境的相似影响将动作聚类,得到不同的类别就是不同的角色。这个表征是用监督的方式提前训练好的。输入是one-hot的动作,输出是d维的动作表征
RODE: LEARNING ROLES TO DECOMPOSE MULTI-AGENT TASKS
为了训练这个表征,作者设计了一个辅助任务,就是将当前观测\(o_i\)和其他agents的动作\(a_{-i}\)作为输入,再结合动作表征网络输出的\(z_{a_i}\)用来预测下一个观测和reward。所以loss就长成
RODE: LEARNING ROLES TO DECOMPOSE MULTI-AGENT TASKS
有了这个表征之后,给定K个roles,也就是K个类别,用k-means的方式进行聚类。每个角色的动作空间就对应一个类别里面包含的动作,outliers的动作就加到所有的role里面。这个训好之后就就固定不变了,就相当于role和对应的动作空间固定了。
接下来就是去学role selector和role policy了。role selector就是每过c个step,给agent指定一个role,然后agent就用role policy去探索,更新role policy。首先根据之前学好的动作表征,来得到角色表征
RODE: LEARNING ROLES TO DECOMPOSE MULTI-AGENT TASKS
角色表征就是简单地把这个角色包含的动作空间的表征求平均。有了角色表征,下一步就是如何选角色。作者用agent的观测\(o_i\)作为输入,经过GRU网络和一个全连接网络得到一个观测的表征\(z_\tau\),然后观测的表征和角色的表征做内积得到Q值
RODE: LEARNING ROLES TO DECOMPOSE MULTI-AGENT TASKS
然后也是用QMIX的方式用一个加权求和的global Q来更新各个部分
RODE: LEARNING ROLES TO DECOMPOSE MULTI-AGENT TASKS
总结:挺有意思的文章,主要想法就是通过限制动作空间来减少训练量,同时通过限制动作的方式可以给exploration加一个bias,就一定程度上提升了训练效率。
疑问:k-means的进行聚类为啥会有outlier呢,不是直接就所有样本全聚类聚完了吗?
QMIX之前看过,具体怎么更新的又忘了。
role selector和role policy是同时训的吗,还是分开训的?
表征需要提前训练,不同场景学到的表征也不同,那么前面的表征是不是就对样本的要求比较高了,比如要尽可能覆盖整个任务空间?
训练的时候好像是32个episodes一起训练,如果episode太长咋办?

上一篇:MongoDB——数据库相关操作命令


下一篇:2021-11-23最适合入门的Shiro框架教程(二)(springboot整合Shiro,JdbcRealm表规范,IniRealm,Shiro常用标签,权限菜单实现)