在设计包含彼此影响的智能体的系统时,一个基本考量是如何分配控制和学习。每个智能体在训练时能获取多少信息?在执行时,它使用多少信息来做决策?这些问题引出了各种方法,从完全集中式控制到完全分布式控制不等,实践中,折中方案通常最有效。了解这些模式对于选择和应用合适的多智能体强化学习算法非常重要。完全集中式控制设想有一个单一、无所不知的控制器管理系统中的每个智能体。这就是完全集中式控制的要义。在这种方法中:训练: 一个单一的学习算法或策略函数接收全局状态(或所有智能体观测的串联)并同时为所有智能体输出一个联合动作。奖励信号,通常是全局团队奖励,用于更新这个中央策略。从这个中央学习者的角度来看,多智能体问题本质上转化为一个单智能体问题,尽管其状态空间和动作空间可能非常庞大。执行: 中央控制器在每一步观察全局状态,并指定每个智能体的动作。digraph G { rankdir=TB; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fillcolor="#e9ecef", style=filled]; edge [color="#868e96"]; subgraph cluster_env { label = "环境"; bgcolor="#dee2e6"; style=filled; node [shape=ellipse, fillcolor="#ffffff"]; Env [label="全局状态 (s)"]; } subgraph cluster_agents { label = "智能体"; bgcolor="#dee2e6"; style=filled; node [shape=circle, fixedsize=true, width=0.6, fillcolor="#a5d8ff"]; A1 [label="A1"]; A2 [label="A2"]; An [label="An"]; } CentralController [label="中央控制器\n(策略 π(s))", shape=box, fillcolor="#ffc9c9"]; CentralController -> Env [label="联合动作 (a1, a2, ..., an)", dir=back]; Env -> CentralController [label="全局状态 (s)\n全局奖励 (r)"]; CentralController -> A1 [style=dashed, arrowhead=none, label="控制"]; CentralController -> A2 [style=dashed, arrowhead=none]; CentralController -> An [style=dashed, arrowhead=none]; }中央控制器根据全局状态为所有智能体做决策。优点:最佳协作: 理论上,中央控制器可以学习全局最佳的协作策略,因为它能获取所有必要信息。平稳性: 学习过程不会因为其他智能体适应而导致非平稳性,因为只有一个学习实体控制所有事物。缺点:扩展性问题: 主要缺点是维度灾难。联合状态空间 $S = S_1 \times S_2 \times \dots \times S_N$,特别是联合动作空间 $A = A_1 \times A_2 \times \dots \times A_N$,会随着智能体数量 $N$ 的增加呈指数级增长。这使得即使是中等规模的多智能体系统,学习也变得难以处理。 "* 完全可观察性要求: 假设中央控制器可以获取完整的全局状态,这在实践应用中通常不切实际,因为存在部分可观察性或通信限制。"集中式执行: 在执行过程中需要一个中央实体,这可能成为瓶颈、单点故障,并且在要求分布式操作的场景(例如独立自主的机器人)中不实用。由于这些限制,完全集中式控制对于复杂的多智能体强化学习问题通常不可行。完全分布式控制(独立学习者)在另一个极端,是完全分布式方法,通常通过独立学习者实现。具体来说:训练: 每个智能体 $i$ 仅根据其局部观测 $o_i$ 和个体奖励 $r_i$(有时也可能是共享的全局奖励)学习自己的策略 $\pi_i$。每个智能体都将其他智能体视为环境动态的一部分。标准的单智能体强化学习算法(如Q-learning、DQN、PPO)可以独立地应用于每个智能体。执行: 每个智能体仅根据其局部观测,使用其学到的策略 $\pi_i(a_i | o_i)$ 来选择动作。digraph G { rankdir=TB; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fillcolor="#e9ecef", style=filled]; edge [color="#868e96"]; subgraph cluster_env { label = "环境"; bgcolor="#dee2e6"; style=filled; node [shape=ellipse, fillcolor="#ffffff"]; Env [label="全局状态"]; } subgraph cluster_agents { label = "智能体(独立学习者)"; bgcolor="#dee2e6"; style=filled; node [shape=circle, fixedsize=true, width=0.6, fillcolor="#a5d8ff"]; A1 [label="A1\n(π1)", fillcolor="#b2f2bb"]; A2 [label="A2\n(π2)", fillcolor="#b2f2bb"]; An [label="An\n(πN)", fillcolor="#b2f2bb"]; } Env -> A1 [label="o1, r1"]; Env -> A2 [label="o2, r2"]; Env -> An [label="oN, rN"]; A1 -> Env [label="a1"]; A2 -> Env [label="a2"]; An -> Env [label="aN"]; {rank=same; A1 A2 An} # 虚线表示智能体隐式地成为彼此环境的一部分 A1 -> A2 [style=dotted, arrowhead=none, constraint=false, color="#adb5bd"]; A2 -> An [style=dotted, arrowhead=none, constraint=false, color="#adb5bd"]; An -> A1 [style=dotted, arrowhead=none, constraint=false, color="#adb5bd"]; }独立学习者仅使用局部观测和奖励进行操作,并将其他智能体视为环境的一部分。优点:扩展性: 每个智能体的学习复杂度不直接随智能体总数增加而扩展。更容易应用于大型系统。简单性: 通过重用现有单智能体强化学习代码库,实现起来相对直接。分布式执行: 天然支持分布式执行,运行时无需中央协调器。缺点:非平稳性: 这是主要障碍。从智能体 $i$ 的角度来看,环境表现出非平稳性,因为其他智能体 $j \neq i$ 正在同时学习并改变其策略 $\pi_j$。这违反了大多数单智能体强化学习算法所基于的平稳性假设,可能导致学习不稳定或效率低下。次优协作: 智能体根据局部信息进行贪婪学习,通常无法收敛到协作或全局最佳策略。它们可能学习到冲突的行为或发生震荡。信用分配: 如果使用全局奖励,个体智能体很难仅根据局部观测来判断其对团队成功或失败的具体贡献。尽管其简单,非平稳性问题常常阻碍完全分布式独立学习者的表现,尤其是在需要高度协作的任务中。集中式训练与分布式执行 (CTDE)认识到完全集中式和完全分布式极端方法的局限性,集中式训练与分布式执行 (CTDE) 方法已成为一种非常有效且受欢迎的折中方案。训练: 在学习阶段(通常在模拟中),算法会借助集中式信息。这可能包括全局状态、所有智能体的观测,甚至所有智能体采取的动作。这些额外信息有助于稳定训练,解决非平稳性问题,并学习协作行为。例如,一个集中式评论家可以根据全局信息评估联合动作,而分布式行动者则学习各自的策略。执行: 重要的是,一旦训练完成,每个智能体仅使用其局部观测来执行其策略,就像完全分布式情况一样。训练期间使用的集中式组件在部署时会被丢弃。digraph G { rankdir=TB; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fillcolor="#e9ecef", style=filled]; edge [color="#868e96"]; subgraph cluster_training { label = "训练阶段(集中式组件)"; bgcolor="#dee2e6"; style=filled; CentralTrainer [label="集中式训练逻辑\n(例如,中央评论家)", fillcolor="#ffec99"]; subgraph cluster_agents_train { label = "智能体行动者(使用局部信息 + 中央指导)"; style=invis; node [shape=circle, fixedsize=true, width=0.6, fillcolor="#bac8ff"]; A1_actor_train [label="A1 行动者"]; A2_actor_train [label="A2 行动者"]; An_actor_train [label="An 行动者"]; } CentralTrainer -> A1_actor_train [label="训练信号\n(例如,梯度、值)", dir=back]; CentralTrainer -> A2_actor_train [label=" ", dir=back]; CentralTrainer -> An_actor_train [label=" ", dir=back]; A1_actor_train -> CentralTrainer [label="观测,动作"]; A2_actor_train -> CentralTrainer; An_actor_train -> CentralTrainer; } subgraph cluster_execution { label = "执行阶段(分布式)"; bgcolor="#e9ecef"; style=filled; subgraph cluster_env_exec { label = "环境"; style=invis; node [shape=ellipse, fillcolor="#ffffff"]; Env_exec [label="环境状态"]; } subgraph cluster_agents_exec { label = "智能体行动者(仅使用局部信息)"; style=invis; node [shape=circle, fixedsize=true, width=0.6, fillcolor="#a5d8ff"]; A1_actor_exec [label="A1 行动者\n(π1)"]; A2_actor_exec [label="A2 行动者\n(π2)"]; An_actor_exec [label="An 行动者\n(πN)"]; } Env_exec -> A1_actor_exec [label="o1"]; Env_exec -> A2_actor_exec [label="o2"]; Env_exec -> An_actor_exec [label="oN"]; A1_actor_exec -> Env_exec [label="a1"]; A2_actor_exec -> Env_exec [label="a2"]; An_actor_exec -> Env_exec [label="aN"]; {rank=same; A1_actor_exec A2_actor_exec An_actor_exec} } # Connect training actors to execution actors A1_actor_train -> A1_actor_exec [style=dotted, arrowhead=open, constraint=false, label="学得的\n策略"]; A2_actor_train -> A2_actor_exec [style=dotted, arrowhead=open, constraint=false]; An_actor_train -> An_actor_exec [style=dotted, arrowhead=open, constraint=false]; }CTDE 在训练时使用集中式信息,但在执行时仅依赖局部信息。优点:平衡性能与实用性: 在训练时借助全局信息克服非平稳性并改善协作,同时仍允许实用的分布式执行。广泛适用性: 是许多成功的多智能体强化学习算法的依据,包括 MADDPG、VDN 和 QMIX,我们将在本章后续内容中讨论这些算法。提升稳定性: 集中式组件可以大大稳定学习过程。缺点:训练复杂度: 需要在训练期间有效地整合集中式信息,并确保其能转化为有效的分布式策略的机制。模拟要求: 通常依赖于在训练/模拟阶段能获取集中式信息,但这并非总能实现。信用分配依然存在: 尽管有所缓解,但在执行过程中根据局部观测进行信用分配的挑战依然存在,不过集中式训练提供了更多信息来处理这个问题。选择正确的方法集中式、分布式和 CTDE 方法之间的选择在很大程度上取决于多智能体问题的具体情况:可观察性: 智能体能否观察完整的全局状态,还是只有部分局部信息?通信: 智能体在执行时能否通信?是否存在可靠的中央协调器?扩展性: 涉及多少智能体?任务性质: 任务是需要紧密协作(偏向集中式信息),还是允许更独立的操作?执行限制: 分布式执行是否是严格要求?实践中,由于完全集中式控制的扩展性限制以及完全分布式学习的非平稳性问题,CTDE 为许多多智能体强化学习任务提供了一个引人关注且广泛采用的框架。 它代表了一种务实的方式,可在不牺牲分布式执行必要性的前提下,融入集中式信息的优势。后续章节将介绍基于这些模式的特定算法,尤其侧重于 CTDE 方法。