美文网首页
强化学习 | COMA

强化学习 | COMA

作者: 行者AI | 来源:发表于2021-06-23 15:02 被阅读0次

本文首发于:行者AI

在多agent的强化学习算法中,前面我们讲了QMIX,其实VDN是QMIX的一个特例,当求导都为1的时候,QMIX就变成了VDN。QTRAN也是一种关于值分解的问题,在实际的问题中QTRAN效果没有QMIX效果好,主要是QTRAN的约束条件太过于松散,导致实际没有理论效果好。但是QTRAN有两个版本,QTRAN_BASE和QTRAN_ALT,第二版本效果比第一要好,在大部分实际问题中和QMIX的效果差不多。

上述的算法都是关于值分解的,每个agent的回报都是一样的。如果在一局王者荣耀的游戏中,我方大顺风,我方一名角色去1打5,导致阵亡,然后我方4打5,由于我方处于大优势,我方团灭对方,我方所有的agent都获得正的奖励。开始去1打5的agnet也获得了一个正的奖励,显然他的行为是不能获得正的奖励。就出现了“吃大锅饭”的情况,置信度分配不均。

COMA算法就解决了这种问题,利用反事实基线来解决置信度分配的问题。COMA是一种“非中心化”的策略控制系统。

1. Actor-Critic

COMA主要采样了Actor-Critic的主要思想,一种基于策略搜索的方法,中心式评价,边缘式决策。

2. COMA

COMA主要使用反事实基线来解决置信分配问题。在协作智能体的系统中,判断一个智能体执行一个动作的的贡献有多少,智能体选取一个动作成为默认动作(以一种特殊的方式确认默认动作),分别执行较默认动作和当前执行的动作,比较出这两个动作的优劣性。这种方式需要模拟一次默认动作进行评估,显然这种方式增加了问题的复杂性。在COMA中并没有设置默认动作,就不用额外模拟这基线,直接采用当前策略计算智能体的边缘分布来计算这个基线。COMA采用这种方式大大减少了计算量。

基线的计算:

\sum_{u'a}\pi^a(u^{'a}|\tau^a)Q(s,(u^{-a},u^{'a}))

COMA网络结构

图1. COMA网络结构

图中(a)表示COMA的集中式网络结构,(b)表示actior的网络结构,(c)表示Critic的网络结构。

3. 算法流程

  • 初始化actor_network,eval_critic_network,target_critic_network,将eval_critic_network的网络参数复制给target_critic_network。初始化buffer D,容量为M,总迭代轮数T,target_critic_network网络参数更新频率p

  • for t=1 to T do

1)初始化环境

2)获取环境的S,每个agent的观察值O,每个agent的avail action,奖励R

3)for step=1 to episode_limit

a)每个agent通过actor_network,获取每个动作的概率,随机sample获取动作action。actor_network,采用的GRU循环层,每次都要记录上一次的隐藏层。

b)执行action,将SS_{next},每个agent的观察值O,每个agent的avail action,每个agent的next avail action,奖励R,选择的动作u,env是否结束terminated,存入经验池D

c)if len(D) >= M

d)随机从D中采样一些数据,但是数据必须是不同的episode中的相同transition。因为在选动作时不仅需要输入当前的inputs,还要给神经网络输入hidden_state,hidden_state和之前的经验相关,因此就不能随机抽取经验进行学习。所以这里一次抽取多个episode,然后一次给神经网络传入每个episode的同一个位置的transition。

e)td\_error =G_t-Q\_eval计算loss,更新Critic参数。G_t表示从状态S,到结束,获得的总奖励。

f)通过当前策略计算每个agent的每个step的基线,基线计算公式:

\sum_{u'a}\pi^a(u^{'a}|\tau^a)Q(s,(u^{-a},u^{'a}))(边缘分布)

g)计算执行当前动作的优势advantage:

A^a(s,u) = Q(s,u)-\sum_{u'a}\pi^a(u^{'a}|\tau^a)Q(s,(u^{-a},u^{'a}))

h)计算loss,更新actor网络参数:
loss=((advantage*select\_action\_pi\_log)*mask).sum()/mask.sum()

i)if t p==0 :

j)将eval_critic_network的网络参数复制给target_critic_network。

4. 结果对比

图2. 论文中COMA对比其他网络结果

我自己跑的数据,关于QMIX,VDN,COMA,三者之间的对比,在相同场景下。

图3. VDN,QMIX,COMA,在sc2中8m地图的表现

5. 算法总结

COMA在论文写的算法原理很好,但是在实际的场景中,正如上面的两张图所示,COMA的表现并不是很理想。在一般的场景中,并没有QMIX的表现好。笔者建议读者,在实际的环境中,可以试试VDN,QMIX等等,COMA不适合“带头冲锋”。

6. 资料

  1. COMA:https://arxiv.org/abs/1705.08926

相关文章

  • 强化学习 | COMA

    本文首发于:行者AI[https://xingzheai.cn/details/ec62be1696c] 在多ag...

  • 教老乡英语(第33天)

    food coma昏迷。a是不动。 e是细分。come来了。coma来不了。comet慧星来了。

  • coma back?!

    啊啊啊!怎么一晃,一年多就过去了?! 好,那就让我想想这一年来的变化! 这一年,前文日记中所写的那个‘他‘,我已安...

  • Vue组件--动态传值

    父组件-->子组件:通过属性props传值 子组件中定义属性 父组件中绑定此属性(子组件...

  • 梦为何

    If you're reading this You've been in a coma for almost 2...

  • 强化学习笔记(1)--概述

    目录: 强化学习问题 强化学习的组成 智能体的组成 强化学习分类 强化学习一些重要概念 1. 强化学习问题 面向智...

  • 基础

    什么是强化学习? 强化学习是机器学习的一个分支。 机器学习分为监督学习,无监督学习,强化学习。 强化学习简单来说,...

  • 强化学习基础知识详解

    强化学习(Reinforcement Learning) 强化学习基本概念 强化学习四要素:状态(state)、动...

  • 强化学习基础篇(一)强化学习入门

    强化学习基础篇(一)强化学习入门 本文主要基于David Silver的强化学习基础课程进行总结回归梳理强化学习的...

  • Historical Fiction: The Bonfire

    “Ahhhh!” The horrible pain woke me from my coma. I hate t...

网友评论

      本文标题:强化学习 | COMA

      本文链接:https://www.haomeiwen.com/subject/ntybyltx.html