wordpress发送邮箱验证码企业seo
2026/4/6 7:56:28 网站建设 项目流程
wordpress发送邮箱验证码,企业seo,企业知识库wordpress,企业网站推广哪些效果比较好训练单个 RL 智能体的过程非常简单#xff0c;那么我们现在换一个场景#xff0c;同时训练五个智能体#xff0c;而且每个都有自己的目标、只能看到部分信息#xff0c;还能互相帮忙。 这就是多智能体强化学习#xff08;Multi-Agent Reinforcement Learning#xff0c;…训练单个 RL 智能体的过程非常简单那么我们现在换一个场景同时训练五个智能体而且每个都有自己的目标、只能看到部分信息还能互相帮忙。这就是多智能体强化学习Multi-Agent Reinforcement LearningMARL但是这样会很快变得混乱。什么是多智能体强化学习MARL 是多个决策者智能体在同一环境中交互的强化学习。环境类型可以很不一样。竞争性的比如国际象棋一方赢一方输。合作性的比如团队运动大家共享目标。还有混合型的更像现实生活——现在是队友过会儿可能是对手有时候两者同时存在。但是这里与一个关键的问题从任何一个智能体的视角看世界变成了非平稳的因为其他智能体也在学习、在改变行为。也就是说在学规则的时候规则本身也在变。MARL 在现实中的位置单智能体 RL 适合系统只有一个大脑的情况而MARL 则出现在世界有多个大脑的时候。现实世界中有很多这样的案例比如交通信号控制每个路口是一个智能体一个信号灯贪婪了下游路口就会卡死仓库机器人每个机器人自己选路径碰撞和拥堵天然是多智能体问题广告竞价和市场智能体用不断变化的策略争夺有限资源网络安全攻击者和防御者是相互适应的智能体对在线游戏和模拟协调、欺骗、配合、自我对弈——这些都是MARL 的经典试验场。核心概念大多数真实场景中智能体只能看到状态的一部分。所以 MARL 里的策略通常基于局部观测而不是完整的全局状态。单智能体 RL 里环境动态是稳定的而MARL 不一样环境包括其他智能体。它们在学习你的转移动态也就跟着变了。这正是经典的 Qlearn在多智能体环境里容易震荡、甚至崩溃的原因。合作任务中团队拿到奖励但功劳该算谁的团队成功了是智能体 2 的动作起了作用还是智能体 5 在 10 步之前的作用这就是信用分配问题这是MARL 里最头疼的实际难题之一。集中式与分布式集中训练、分布式执行CTDE这是目前最常见的模式。训练时智能体可以用额外信息比如全局状态或其他智能体的动作。执行时每个智能体只根据自己的局部观测行动。这样的好处是既有集中学习的稳定性又不需要在运行时获取不现实的全局信息。完全分布式学习智能体只从局部经验学习。这个听起来是对的而且简单任务也能用。但实际中往往不够稳定合作任务尤其如此。算法总览合作性基于价值的方法Independent Q-LearningIQL是最简单的基线容易实现但通常不稳定VDN 和 QMIX 通过混合各智能体的价值来学全局团队价值合作处理得更好。策略梯度和 Actor-Critic 方法MADDPG 用集中式 Critic 配分布式 Actor概念上是很好的切入点MAPPO 在很多合作任务里是靠谱的默认选择。自我对弈Self-play和自己不同版本对打来建立泛化的策略。思路简单粗暴效果也很好。用 Python 从零搭一个小 MARL 环境来做个玩具游戏两个智能体必须协调。经典设定——两者选同一个动作才有奖励。每个智能体选 0 或 1动作一致拿 1不一致拿 0。我们这里刻意设计得简单这样方便我们聚焦在 MARL 机制本身。import random from collections import defaultdict class CoordinationGame: def step(self, a0, a1): reward 1 if a0 a1 else 0 done True # single-step episode return reward, done接下来是最小化的 Independent Q-Learning 设置每个智能体学自己的 Q 表。这里没有状态Q 只取决于动作。def epsilon_greedy(Q, eps0.1): if random.random() eps: return random.choice([0, 1]) return 0 if Q[0] Q[1] else 1 Q0 defaultdict(float) # Q0[action] Q1 defaultdict(float) # Q1[action] alpha 0.1 eps 0.2 env CoordinationGame() for episode in range(5000): a0 epsilon_greedy(Q0, eps) a1 epsilon_greedy(Q1, eps) r, done env.step(a0, a1) # One-step update (no next-state) Q0[a0] alpha * (r - Q0[a0]) Q1[a1] alpha * (r - Q1[a1]) # Inspect learned preferences print(Agent0 Q:, dict(Q0)) print(Agent1 Q:, dict(Q1))多数运行会收敛到两种惯例之一两者都学会总是选 0或者都学会总是选 1。这就是协调从学习中涌现出来的样子。虽然小但和大型合作 MARL 系统里依赖的模式是同一类东西。这个玩具例子太友好了。难一点的任务里IQL 常常变得不稳定因为每个智能体都在追一个移动靶。让例子更MARL一点常见技巧是加共享团队奖励同时保证足够长的探索期来发现协调下面是一个带衰减 epsilon 的训练循环Q0 defaultdict(float) Q1 defaultdict(float) alpha 0.1 eps 0.9 eps_decay 0.999 eps_min 0.05 env CoordinationGame() for episode in range(20000): a0 epsilon_greedy(Q0, eps) a1 epsilon_greedy(Q1, eps) r, _ env.step(a0, a1) Q0[a0] alpha * (r - Q0[a0]) Q1[a1] alpha * (r - Q1[a1]) eps max(eps_min, eps * eps_decay) print(Agent0 Q:, dict(Q0)) print(Agent1 Q:, dict(Q1))这当然不会解决 MARL但它演示了一个真实原则早期探索帮助智能体找到一个稳定的协调惯例。总结一旦解决了单步协调问题还会有三个问题会反复出现虚假学习信号智能体可能觉得是自己动作导致了奖励实际上是另一个智能体的动作起了作用。糟糕的均衡陷阱在竞争性游戏里智能体可能卡在稳定但不强的弱策略上。规模爆炸多智能体的状态和动作空间膨胀很快需要更好的函数逼近神经网络、更好的训练方案CTDE通常还需要更讲究的环境设计。应对这些问题没有万能解法但有一些经过验证的思路。针对虚假学习信号可以用 CTDE 架构让 Critic 看到全局信息帮助每个智能体更准确地评估自己动作的贡献。均衡陷阱的问题自我对弈加上一定的探索机制能帮智能体跳出局部最优。规模问题则需要参数共享、注意力机制等技术来降低复杂度。实际项目中建议先在概念上理解集中式 Critic 的工作原理不用急着写完整的深度 RL 代码。这一步会改变你思考可观测性和稳定性的方式后面上手具体算法会顺畅很多。https://avoid.overfit.cn/post/56fb12fbb46e400180fad2999d533292作者Syntal

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询