多智能体强化学习和分布式强化学习的区别和联系是什么?

最近在了解多智能体强化学习(MARL)和分布式强化学习(Distributional RL)的相关内容,总是会在两者之间产生混淆,对于MARL,由于多…
关注者
49
被浏览
45,223

5 个回答

个人以为,从研究内容来看,多智能体强化学习更多研究的是智能体之间的交互和关联,寻求在多智能体强化学习中所有智能体之间达到均衡状态;分布式强化学习的研究则侧重于强化学习低采样效率的问题,嵌入并行计算以高效加速模型训练过程并提高学习效果。以下将对两者相关研究内容进行简述以显看出两者的区别。

1 多智能体强化学习

根据具体应用中智能体之间的关系,将多智能体问题分为完全合作式、完全竞争式、混合关系式三种类型。

相比单智能体系统,强化学习应用于多智能体系统会遇到哪些挑战和问题?

(1)环境的不稳定性:智能体在做决策的同时,其他智能体也在采取动作;环境状态的变化与所有智能体的联合动作相关;

(2)智能体获取信息的局限性:不一定能够获得全局的信息,智能体仅能获取局部的观测信息,但无法得知其他智能体的观测信息、动作和奖励等信息;

(3)个体的目标一致性:各智能体的目标可能是最优的全局回报;也可能是各自局部回报的最优;

(4)可拓展性:在大规模的多智能体系统中,就会涉及到高维度的状态空间和动作空间,对于模型表达能力和真实场景中的硬件算力有一定的要求。

1.1 多智能体问题的求解

对于多智能体强化学习问题,一种直接的解决思路:将单智能体强化学习方法直接套用在多智能体系统中,即每个智能体把其他智能体都当做环境中的因素,仍然按照单智能体学习的方式、通过与环境的交互来更新策略;这是 independent Q-learning 方法的思想。这种学习方式固然简单也很容易实现,但忽略了其他智能体也具备决策的能力、所有个体的动作共同影响环境的状态,使得它很难稳定地学习并达到良好的效果。

在一般情况下,智能体之间可能存在的是竞争关系(非合作关系)、半竞争半合作关系(混合式)或者是完全合作关系,在这些关系模式下,个体需要考虑其他智能体决策行为的影响也是不一样的。

1.2 完全竞争关系——minimax Q-learning

minimax Q-learning 算法用于两个智能体之间是完全竞争关系的零和随机博弈。首先是最优值函数的定义:对于智能体 i,它需要考虑在其他智能体(i-)采取的动作(a-)令自己(i)回报最差(min)的情况下,能够获得的最大(max)期望回报。该回报可以表示为:

在式子中,V 和 Q 省略了智能体 i 的下标,是因为在零和博弈中设定了 Q1=-Q2,所以上式对于另一个智能体来说是对称等价的。这个值函数表明,当前智能体在考虑了对手策略的情况下使用贪心选择。这种方式使得智能体容易收敛到纳什均衡策略。

在学习过程中,基于强化学习中的 Q-learning 方法,minimax Q-learning 利用上述 minimax 思想定义的值函数、通过迭代更新 Q 值;动作的选择,则是通过线性规划来求解当前阶段状态 s 对应的纳什均衡策略。

1.3 半合作半竞争(混合)关系

双人零和博弈的更一般形式为多人一般和博弈(general-sum game),此时 minimax Q-learning 方法可扩展为 Nash Q-learning 方法。当每个智能体采用普通的 Q 学习方法,并且都采取贪心的方式、即最大化各自的 Q 值时,这样的方法容易收敛到纳什均衡策略。Nash Q-learning 方法可用于处理以纳什均衡为解的多智能体学习问题。它的目标是通过寻找每一个状态的纳什均衡点,从而在学习过程中基于纳什均衡策略来更新 Q 值。

具体地,对于一个智能体 i 来说,它的 Nash Q 值定义为:

此时,假设了所有智能体从下一时刻开始都采取纳什均衡策略,纳什策略可以通过二次规划(仅考虑离散的动作空间,π是各动作的概率分布)来求解。

在 Q 值的迭代更新过程中,使用 Nash Q 值来更新:

可以看到,对于单个智能体 i,在使用 Nash Q 值进行更新时,它除了需要知道全局状态 s 和其他智能体的动作 a 以外,还需要知道其他所有智能体在下一状态对应的纳什均衡策略π。进一步地,当前智能体就需要知道其他智能体的 Q(s')值,这通常是根据观察到的其他智能体的奖励和动作来猜想和计算。所以,Nash Q-learning 方法对智能体能够获取的其他智能体的信息(包括动作、奖励等)具有较强的假设,在复杂的真实问题中一般不满足这样严格的条件,方法的适用范围受限。

1.4 完全合作关系

“合作”意味着多个智能体要共同完成一个目标任务,即这个目标的达成与各个体行为组合得到的联合行为相关;如果个体“一意孤行”,那么它很难配合其他队友来共同获得好的回报。所以,智能体的策略学习仍然需要考虑联合动作效应,要考虑其他具有决策能力的智能体的影响。

怎样实现在智能体策略学习过程中考虑其他协作智能体的影响呢?这个问题我们可以分类讨论,分类的依据是具体问题对于智能体协作的条件要求,即智能体通过协作获得最优回报时,是否需要协调机制:

1.4.1 不需要协作机制

Team Q-learning 是一种适用于不需要协作机制的问题的学习方法,它提出对于单个智能体 i,可以通过下面这个式子来求出它的最优动作 hi:

Distributed Q-learning 也是一种适用于不需要协作机制的问题的学习方法,不同于 Team Q-learning 在选取个体最优动作的时候需要知道其他智能体的动作,在该方法中智能体维护的是只依据自身动作所对应的 Q 值,从而得到个体最优动作。

1.4.2 隐式的协作机制

1.4.3 显式的协作机制

2 分布式强化学习

在分析分布式强化学习前,首先分析一下强化学习的训练过程。

在强化学习的训练中,主要分成两个部分,一个是样本采集过程,即用行为策略(Behavior Policy)跟环境进行交互,产生训练样本;另一个是训练过程,使用收集到的训练样本进行策略的更新。强化学习训练不断重复上诉两个过程,先采集样本,采集到一定数量的训练样本后,进行梯度更新,生成新的策略,但收到资源的限制,样本收集效率很低,于是考虑扩展为分布式版本。

以下将简述部分分布式强化学习相关算法来讲述与多智能体强化学习之间的区别。

2.1 A3C

这里我们将样本采集和模型训练交给不同的模块,引入Actor和Learner的概念,其中Actor负责跟环境交互,产生训练样本,而Learner负责模型训练。在该架构中,会有多个Actor进程,每个Actor都拥有一个模型的副本,用来跟环境进行交互,产生训练样本。

Actor根据这些样本计算梯度,并把梯度发送给Learner。这里面异步(asynchronous)主要体现在Learner使用梯度的方式上,即Learner在收到某个Actor发过来的梯度之后,不会等待其他Actor的梯度,而是会直接更新模型,并把最新的模型发送给该Actor。

在A3C架构中,每个Actor都独自计算梯度,Learner只负责使用梯度,所以Learner的计算量并不大。在作者的原始实现中,A3C不需要GPU资源,只需要CPU即可在Atari等游戏上达到很好的效果。当然,A3C本身存在着一些问题:

  1. 当模型变得复杂时,在CPU上计算梯度的耗时会变得非常大,而如果迁移到GPU上,由于每个Actor都需要一个模型的副本,又会需要大量的GPU资源
  2. 当模型变大时,传输梯度和模型参数的网络开销也会变得巨大
  3. Learner使用异步方式更新梯度,这意味着在训练过程中,部分梯度的方向并不正确,从而可能影响最终的训练效果。举个例子,一开始Actor1、Actor2和Learner都使用初始模型参数P1,Actor1率先计算了梯度G1_1,Learner收到G1_1之后更新了模型,变成了新模型P2,此时Actor2计算好了梯度G1_2,并请求Learner更新梯度,但是由于G1_2来自于模型参数P1,而Learner现在的参数是P2,这样本次梯度更新其实已经产生了偏差。这个现象会随着Actor的数量增多变得越来越严重,这也一定程度上限制了A3C的横向扩展能力

2.2 GA3C

为了更好地利用GPU的计算资源从而提高整体计算效率,A3C进一步优化提升为GA3C.与A3C不同,GA3C中的Actor并没有模型参数,整个架构中只有一个模型,保存在Learner中。当Actor需要采样时,将状态放入预测队列,Learner的采样线程将队列中的所有状态拿出来进行一次采样),将得到的结果返回给相应的Actors。Actor收到对应的动作之后,在环境中进行step,并得到对应的reward信号。Actor收集到一定的样本之后,会将这些样本放入训练队列,Learner的训练线程使用这些样本进行模型更新。下图展示了A3C和GA3C架构的差别:

采用这个架构之后,随着模型变得越来越复杂,GA3C带来的加速比也变得越来越大。

四个小孩子下飞行棋,每个小孩子是一个智能体,利用多智能体强化学习求解。一台电脑解决这个问题需要跑好久,利用多台电脑解决,分布式强化学习。