0%

MARL算法介绍

对VDN、QMIX、QTRAN深度强化学习算法进行简要介绍

参考:

Papers - 知乎 (zhihu.com)

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

QMIX论文:[1803.11485] QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning (arxiv.org)

QTRAN论文:[1905.05408] QTRAN: Learning to Factorize with Transformation for Cooperative Multi-Agent Reinforcement Learning (arxiv.org)

VDN

1 研究背景

VDN(Value Decomposition Networks)是一种基于值函数的方法,研究协作任务的多智能体强化学习问题,所有的智能体共享同一个奖励值(或者叫团队奖励)。

智能体共享团队奖励会带来“credit assignment (信用分配)” 问题,即利用该团队奖励拟合出的值函数不能评价每个智能体的策略对整体的贡献

这会导致两个问题:

虚假奖励(spurious reward signals):由于每个智能体都是局部观测,那么对其中一个智能体来说,其获得的团队奖励很有可能是其队友的行为导致的。

惰性智能体(lazy agent): 当团队中的部分智能体学习到了比较好的策略并且能够完成任务时,其它智能体不需要做什么也能获得不错的团队奖励。

以上问题本质上就是信用分配问题,如果每个智能体都会根据自己对团队的贡献,优化各自的目标函数,就能够解决上述问题。基于这样的动机,作者提出了“值函数分解”的研究思路,将团队整体的值函数分解成N个子值函数,分别作为各智能体执行动作的依据

2 算法设计

2.1 Q函数值分解

采用加和的方式分解得到每个智能体的值函数,公式如下所示:

ZKkEmc.png

公式表明团队的Q函数可以通过求和的方式近似分解成d个子Q函数,分别对应d个智能体,且每个子Q函数的输入为该对应智能体的局部观测序列动作,互相不受影响,结构图如下所示:

ZKkJdq.png

因此每个智能体就有了自己的值函数,它们就可以根据自己的局部值函数来进行决策:

ZKktXT.png

2.2 参数共享

为了减少训练参数,作者考虑了将智能体的参数进行共享。参数共享的一个好处就是能够避免惰性智能体的出现。为了说明共享参数的合理性,这里作者提出了“智能体不变性”

智能体不变性:交换智能体的观测次序和交换智能体的策略次序是等价的,即各智能体地位平等,功能相似。如果智能体之间要共享网络参数,则每个智能体的动作输出将取决于该智能体的观测以及编号

2.3 端到端训练

VDN在集中式训练的时候,只需要计算整体Q函数的TD-error,然后将误差反向传播给各个子Q函数,大大减少了计算量。

3 总结

VDN算法结构简洁,通过它分解得到的子Q函数可以让智能体根据自己的局部观测选择贪婪动作,从而执行分布式策略。其集中式训练方式能够在一定程度上保证整体Q函数的最优性。此外,VDN的“端到端训练”“参数共享”使得算法收敛速度很快。

但是对于一些比较大规模的多智能体优化问题,它的学习能力将会大打折扣。其根本限制在于缺少值函数分解有效性的理论支持。VDN以简单的求和方式将整体Q函数完全分解开,使得多智能体Q网络的拟合能力很受限制

在QMIX算法中,这种端到端训练的思路被继续沿用。作者改善了值函数分解的网络结构,考虑了系统全局状态s以及分布式策略的单调性约束,有效地增强了网络对整体Q函数的拟合能力。

QMIX

1 研究背景

多智能体在执行动作的时候只能观测到各自的局部状态信息,而在训练时可以获取所有智能体的观测、动作以及系统的全局状态。针对协作任务,CTDE下需要考虑的关键问题就是如何找到最好的分布式策略,使得团队的“状态-联合动作”值函数 Qtot最优

论文作者结合了单调性来保证分布式策略最优

单调性:就是指通过分布式策略计算出来的动作,和通过整体Q函数计算出来的作,在“性能最优”上需要保持一致,即

ZKkffq.png

如果 (1) 式不成立,则分布式策略就不能使 Qtot 最大化,自然不会是最优策略,这就是非单调性

VDN的分解方式就满足 (1) 式中的单调性,并且有:

ZKrCnb.png

但是,该式中的关系太强了。事实上,值函数分解的单调性只需要满足如下条件即可:

ZKrG7o.png

因此,本文的研究目标就是设计一个神经网络输入为多个智能体对应的Qi输出 Qtot ,强制其满足(3)式中的单调性约束。只要在满足该约束的前提下进行探索,就可以既保证 (1) 式成立,又能够增强网络的函数拟合能力,从而弥补VDN算法的不足

2 算法设计

2.1 算法框架

在QMIX算法中, Qtot 由 n 个智能体网络 (Agent networks),一个混合网络 (Mixing network) 和一组超网络 (Hypernetworks)来表达。

ZKrXUv.png

智能体网络由MLP+GRU+MLP构成,网络输入为该智能体的历史动作-观测序列信息输出该智能体分解之后的Q值函数。该智能体会根据此Q值得到贪婪动作。

混合网络的输入包括各智能体网络的输出Qi以及系统的全局状态 s输出 Qtot(τ,u) 。需要特别指出的是,QMIX需要使用全局状态s作为超网络的输入,并产生混合网络的参数。这一点,和VDN是不一样的,因为VDN并没有使用全局状态 s

图1的重点部分应该是左边的混合网络内部结构。混合网络包含输入层、隐含层、输出层,和普通的单隐层MLP网络不同的是,其隐藏层的权重和偏置均由另外一组网络 (超网络) 计算得出。混合网络隐层的激活函数为 ELU (Exponential Linear Unit),输出层线性激活 (没有激活函数)。从图中红色部分框图可以看出, W1W2 由两个单层线性网络经过绝对值函数激活之后得出; W1 对应的偏置项直接由单层线性网络计算得出(不需要激活),而 W2 对应的偏置项则由双层线性网络计算得出,其中第一层由RELU函数激活。这些超网络输出的是一串向量,再经过reshape变成混合网络的参数。

这样做就是为了使混合网络权重参数都是非负的,从而保证混合网络能够以任意的精度拟合出任意单调函数(即满足(3)式)

2.2 函数表征复杂度

虽然QMIX的函数拟合能力比VDN更强,但是作者也同样指出,(3) 式中的单调性约束毕竟还是限制了其对值函数的拟合范围。因为有的值函数分解可能不是以满足该单调性约束为依据的,(3) 式是 (1) 式的充分不必要条件

对于一些分布式策略,其单个智能体的最优动作依赖于同一时刻其它智能体的动作时,QMIX算法的函数表征能力也会受到一定程度的限制

3 总结

QMIX算法的设计在理论上和实验验证上,都比VDN有更多的优势。

但是正如作者指出的那样,QMIX在执行策略的时候并不考虑其它智能体的动作。在实际场景中,这是不太合理的。针对合作任务的多智能体场景,只有充分考虑其它智能体可能对自己决策产生的影响,才能更好地进行合作。因此,考虑智能体之间更复杂的关系,例如任务/角色分配、智能体通信等,也是QMIX算法扩展的重要方向。

此外,(3) 式是 (1) 式的充分不必要条件,这将在一定程度上限制了QMIX网络的函数逼近能力,使得在某些场景下,其拟合出来的 Qtot 和真实值 Qtot∗ 存在一定的差距

QTRAN

1 研究背景

针对一些具有非单调收益的合作问题,VDN和QMIX的函数拟合能力就会受到限制。因此研究人员提出了QTRAN算法,声称该算法能够克服以上两种算法的限制,分解任何可以分解的任务

2 算法思路

作者的关键思路,是将原始的整体值函数 Qjt(τ,u) 映射至一个新的值函数 Qjt′(τ,u) ,使得这两个函数的最优联合动作是等价的。这样,我们就可以通过分解 Qjt′ 来得到 [Qi] ,同时还要找到 Qjt′ 和 Qjt 之间的关系,保证全局最优性。

显然,这种映射不能是随意的。为了保证全局最优性,作者首先提出了值函数分解需要满足的条件。

2.1 分解值函数的条件

ZKrT4m.png

2.2 如何映射

对于新的值函数 Qjt′ ,作者直接将其定义为:

ZKr9hc.png

与VDN的区别:

由于VDN的分解方式过于充分,因此和真实的 Qjt 之间存在差距。所以根据定理1 中 Vjt(τ) 的定义,作者提出用 Vjt(τ) 来修正 Qjt′ 和 Qjt 之间的误差。于是,就有:

ZKrdWr.png

这样,我们就找到了 Qjt′ 和 Qjt 的关系。你会发现, [Qi] 既是 Qjt′ 的分解,也是 Qjt 的分解,因此,利用它们选出的最优动作就是等价的

如果直接将 Qjt′ 当做值函数来拟合,就和 VDN 算法一样了,区别就是上面 (6) 式描述的关系。因此, Vjt 的学习就显得非常关键。

2.3 结构框图

ZKrkav.png

2.4 QTRAN的变化形式:QTRAN-alt

关键思想:强制 Qjt′ 跟踪 Qjt 的更新,公式如下:

ZKrVDY.png

2.5 伪代码

ZKrfG9.png

3 总结

QTRAN算法其实和VDN更加相似一些,因为它学习 Qjt′ 的过程和VDN没有什么区别。但是,QTRAN比VDN多出一个 Vjt 函数,它可以帮助算法找到合适的 Qjt′ 使其和 Qjt 在最优动作的选择上是等价的。这是QTRAN算法的基本思路

但是在实际操作过程中, Vjt 并不是那么好学的。为了使 Qjt′ 能够随着 Qjt 的更新而同步更新,作者在原始版本QTRAN-base的基础上提出了QTRAN-alt。

QTRAN作为VDN和QMIX的改进算法,被大量的MARL相关论文引用并作为baseline。