当前位置: 首页 > news >正文

强化学习(5)多智能体强化学习

多智能体强化学习(Multi-Agent Reinforcement Learning, MARL)与单智能体强化学习(Single-Agent Reinforcement Learning, SARL)区别主要体现在环境的动态性智能体的目标学习的复杂性


基础概念

1. 环境的动态性(Non-Stationarity)

  • 单智能体(SARL):
    • 智能体在一个相对稳定的、静态的环境中学习。环境的动态性(即状态的转移和奖励的确定)只依赖于智能体自身的动作
  • 多智能体(MARL):
    • 环境是非静态的(Non-Stationary)。每个智能体的最优策略不仅取决于环境的内在特性,还取决于其他所有智能体的策略和动作
    • 从单个智能体的角度来看,环境(包括其他智能体)的行为是不断变化的,这使得智能体很难收敛到一个稳定的最优策略。

2. 智能体的目标与关系

关系类型目标示例
单智能体(SARL)最大化其自身的累积奖励。玩一个单人电子游戏。
多智能体(MARL)可以有多种目标关系:
合作 (Cooperative)所有智能体共同最大化一个共享的累积奖励。交通灯控制、无人机编队飞行。
竞争 (Competitive)智能体尝试最大化自身奖励,而最小化对手的奖励(零和博弈)。围棋、国际象棋、电子竞技中的对战。
混合 (Mixed)智能体有各自的目标,可能部分重叠,也可能相互冲突(既合作又竞争)。拍卖、资源共享。

还有一种关系:自我鼓励:他们只关注自己的奖励如何,并不关心别人的奖励(注意还是属于多智能体,因为每个智能体的决策还是会影响到其他智能体获得的奖励),比如股票交易系统

3. 动作空间与状态空间

  • 单智能体(SARL): 状态空间和动作空间相对较小,只包括智能体自身的。
  • 多智能体(MARL): 智能体的联合动作空间是各个智能体动作空间的笛卡尔积(A1×A2×⋯×ANA_1 \times A_2 \times \dots \times A_NA1×A2××AN),其规模呈指数级增长。这极大地增加了策略搜索和学习的难度,被称为维度灾难(Curse of Dimensionality)。

4. 挑战与核心问题

挑战单智能体(SARL)多智能体(MARL)
信度分配 (Credit Assignment)相对简单。奖励只与自身的动作序列相关。困难。奖励是所有智能体联合动作的结果,难以确定每个智能体对最终结果的贡献度。
收敛性 (Convergence)在适当条件下,通常可以保证收敛到最优策略难以保证。目标是收敛到纳什均衡 (Nash Equilibrium) 或其他博弈论概念,但环境的非静态性使收敛非常困难。
可观测性 (Observability)通常是完全可观测部分可观测的(POMDP),但只有自身。经常是部分可观测的(Dec-POMDP)。智能体只能观察到环境的一部分以及/或自身的状态,无法获取所有其他智能体的内部状态和动作。
通信 (Communication)不涉及。重要问题。智能体是否应该、如何以及何时进行通信,以实现更好的合作或协调。

MARL中的几种架构

多智能体强化学习(MARL)的架构分类主要基于训练和执行阶段的信息共享程度以及智能体之间的关系和目标

核心上,MARL 的架构可以分为三大类:

  • 完全集中式
  • 完全分散式
  • 集中训练/分散执行 (CTDE) 混合式

基于信息共享,控制程度来分类,这是 MARL 中最常用和最重要的分类方式,关注智能体在学习和实际应用中能获取多少信息,以及谁来做出最终决策。

1. 完全集中式 (Centralized Training and Execution, CTE)

在这里插入图片描述

训练和执行过程中,存在一个中央控制器(Central Controller),它可以访问所有智能体的观察、状态和动作,并进行全局决策

本质上,它将整个多智能体系统视为一个超级单智能体, 可以利用全部的全局信息,能最容易地达到最优联合策略。但随着智能体数量的增加,联合动作空间和状态空间呈指数级增长(维度灾难)。鲁棒性差:一旦中央控制器失效,整个系统就会崩溃(单点故障)。现实应用受限: 许多实际场景(如机器人编队、无人驾驶)不允许在执行时进行完美的集中控制和通信。

在这里插入图片描述

训练与执行都是中性化的,另外这里的智能体都是可以观测到环境的,但是是各自的环境信息,并将她们的观测结果交给中央
在这里插入图片描述

class Centralized_Agent:def __init__(self, global_obs_space, global_action_space):# 集中式 Actor 和 Criticself.actor = build_nn(global_obs_space, global_action_space) # 输出联合动作 Aself.critic = build_nn(global_obs_space + global_action_space, 1) # 估计 Q(O, A)def select_action(self, O):# 执行: 输入联合观测 O, 输出联合动作 Areturn self.actor(O) def update(self, global_batch, global_reward):# 训练: 仅使用全局信息# 1. 计算 Critic 损失 (使用全局奖励 R 和联合 Q 值)#    TD_Error_cen = R + gamma * Q_cen(O', A') - Q_cen(O, A)# 2. 更新 Criticself.critic.update()# 3. 计算 Actor 损失 (最大化联合 Q 值)# 4. 更新 Actorself.actor.update()

2. 完全分散式 (Decentralized Training and Execution, DTE)

在这里插入图片描述

训练和执行都完全分散。每个智能体独立学习和行动,只基于自身的局部观测局部奖励

其实是每个智能体都使用一个单智能体RL算法,但将其他智能体视为环境的一部分(即独立学习,Independent Learning),这种实现算法复杂度不随智能体数量呈指数增长,也没有单点故障等问题,但是收敛性差

根据AC我们可以给出下面的伪代码

class Independent_Agent_i:def __init__(self, local_obs_space, local_action_space):# 局部 Actor 和 Criticself.actor = build_nn(local_obs_space, local_action_space)self.critic = build_nn(local_obs_space, 1) # V(o_i) 或 Q(o_i, a_i)def select_action(self, o_i):# 执行: 只依赖局部观测return self.actor(o_i)def update(self, local_batch, global_reward):# 训练: 仅用局部观测 o_i 和全局奖励 R# 1. 计算 Critic 损失(使用全局奖励 R 作为 TD 目标)#    TD_Error_i = R + gamma * V_i(o'_i) - V_i(o_i)# 2. 更新 Critic (最小化 TD 误差)self.critic.update()# 3. 计算 Actor 损失(例如,使用局部优势函数 A_i)#    A_i = R + gamma * V_i(o'_i) - V_i(o_i)# 4. 更新 Actor (最大化带权重的 A_i)self.actor.update()

3. 集中训练/分散执行 (Centralized Training for Decentralized Execution, CTDE)

在这里插入图片描述

训练使用集中式的全局信息来指导学习,根据全局信息训练多个全局 Critic(评估网络)

执行使用分散式的局部策略,每个智能体只基于自身的局部观测来选择动作(即,使用局部 Actor/策略网络)。

class CTDE_System:def __init__(self, num_agents, global_obs_space, global_action_space):# 局部 Actor 列表self.actors = [build_nn(o_space, a_space) for _ in range(num_agents)]# 中央 Critic (输入联合 O 和 A)self.critic_cen = build_nn(global_obs_space + global_action_space, 1)def select_joint_action(self, O):# 执行: 分散执行,每个 Actor 只看局部 o_iA = [self.actors[i](O[i]) for i in range(num_agents)]return Adef update(self, global_batch, global_reward):# 训练: 集中式 Critic 指导O, A, R, O_prime = global_batch# 1. 更新中央 Critic#    TD_Target = R + gamma * Q_cen(O', A'_target)#    Critic Loss = MSE(Q_cen(O, A), TD_Target)self.critic_cen.update()# 2. 更新局部 Actor i (关键步骤)for i in range(len(self.actors)):# Actor Loss = -Q_cen(O, [A_{-i}, a_i])#   其中 Q_cen 的 a_i 被替换为 Actor_i(o_i) 的输出#   这意味着 Actor_i 的梯度是通过中央 Critic 传导的self.actors[i].update_based_on_central_critic(self.critic_cen)

架构范式训练阶段(信息)执行阶段(信息)关键优势典型算法
CTE全局(集中)全局(集中)理论性能上限高,能完美协调集中式 DDPG/PPO
DTE局部(分散)局部(分散)可扩展性强,鲁棒性高IPPO, IQL
CTDE全局(集中)局部(分散)兼顾高性能和实际部署要求QMIX, MAPPO, MADDPG
H-MARL分层/任务分解分层/任务分解解决长时间跨度的信度分配基于 Option 的方法
http://www.dtcms.com/a/468126.html

相关文章:

  • 学做网站需要掌握哪些知识网站的橱窗怎么做
  • 怎样在建设厅网站查询安全员证怎么做一个企业的网站
  • 提供免费空间的网站app开发价格多少
  • 宜昌网站建设选择宜昌慧享互动江苏智能网站建设流程
  • 东莞建网站的公app开发及后期维护费用
  • 家乡网站策划书建设背景网站做不了301重定向
  • 杭州网站建设规划网站收录地址
  • 盐城网站建设优化建站惠州网站建设推广
  • 新浪云 建设网站房地产网站建设案例
  • 怎样在网站上做专栏一个公司做网站需要注意什么
  • 怎么查看什么公司做的网站吗用html5做课程教学网站
  • 建设银行网站维护电话网站建设考虑的因素
  • 网站漂浮宁波seo网络推广价格
  • 信丰县建设局网站国内可以上的网站
  • PyTorch的安装与使用——安装篇
  • vs2010网站开发与发布东莞seo外包公司哪家好
  • 电商网站建设基础ppt山东网站建设代理
  • 手机版网站如何制作软件大型移动网站建设
  • php学校网站建设汕头seo网站推广
  • 东莞高端网站设计有哪些网站做返利模式
  • 酒店网站建设考虑哪些因素做家居建材出口网站有哪些
  • 攀枝花住房和城乡建设厅官方网站网站建设好了怎么做推广
  • 宁夏免费做网站网站建设立项申请报告
  • 宇泽佛山网站建设wordpress 给文章添加幻灯
  • html5企业网站模板wordpress 访问量大
  • 旅游网站怎么设计数字营销公司排行榜
  • 哪家公司建站比较好苏州教育平台网站建设
  • 新注册的公司怎么做网站百度广告服务商
  • 文明网网站建设html家乡网站设计模板
  • 网上买手表哪个网站可以买到正品网站建设公司哪家好 都来磐石网络