手术室专科建设网站,新网网站模板,微信公众号设计软件,创业合伙人招募平台#x1f4e2;本篇文章是博主强化学习#xff08;RL#xff09;领域学习时#xff0c;用于个人学习、研究或者欣赏使用#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记#xff0c;若有不当和侵权之处#xff0c;指出后将会立即改正#xff0c;还望谅… 本篇文章是博主强化学习RL领域学习时用于个人学习、研究或者欣赏使用并基于博主对相关等领域的一些理解而记录的学习摘录和笔记若有不当和侵权之处指出后将会立即改正还望谅解。文章分类在强化学习专栏 【强化学习】47---《深入理解多智能体近端策略优化MAPPO算法与调参》 深入理解多智能体近端策略优化MAPPO算法与调参
目录
0 前言
1 MAPPO核心特点
2 On-Policy 和 Off-Policy
2.1. On-Policy 算法
2.2 Off-Policy 算法
对比总结
形象比喻
On-Policy 的小孩
Off-Policy 的小孩
它们的关键区别
3 MAPPO 是 On-Policy如何学习历史经验
4 MAPPO 算法的调参建议
超参数相关
网络结构相关
环境相关
更新频率
[Python] On-Policy 和 Off-Policy 实现
[Notice] 注意事项
5 总结 0 前言 MAPPO 是一种多智能体强化学习算法基于单智能体的 PPO (Proximal Policy Optimization) 算法进行了扩展专门设计用于解决多智能体协作和竞争环境中的决策问题。 如果对于MAPPO算法不了解可以查看这篇文章代码 【MADRL】多智能体近端策略优化MAPPO算法 1 MAPPO核心特点 集中价值网络Centralized Critic MAPPO 使用一个 centralized critic将多个智能体的状态、动作信息整合在一起用于计算价值函数。政策policy仍然是每个智能体独立的decentralized适合分布式执行。 分布式执行与集中式学习 在训练时所有智能体共享全局信息进行集中式学习。在执行时每个智能体仅依赖自己的局部观察保持分布式决策的能力。 对 PPO 的优化 PPO 的核心是通过 clip range 限制策略更新的幅度确保训练稳定。MAPPO 在多智能体环境中保留了这一优点。针对多智能体场景对网络结构、数据处理等进行了调整优化了 PPO 在该场景下的性能。 2 On-Policy 和 Off-Policy 要想更好的理解MAPPO算法的原理机制得先从On-Policy 和 Off-Policy 两种算法类型出发。在强化学习中on-policy 和 off-policy 算法根据策略更新时是否依赖当前策略的经验来区分。 以下是两类算法的定义和常见算法列表 2.1. On-Policy 算法
定义
On-policy 算法依赖于当前策略生成的经验进行更新。每次策略更新需要使用最新的采样数据不能直接利用历史经验。强调策略与数据分布的一致性。
常见的 On-Policy 算法 Policy Gradient (PG) 基本策略梯度方法。 Trust Region Policy Optimization (TRPO) 提高策略更新的稳定性限制更新幅度。 Proximal Policy Optimization (PPO) TRPO 的改进版本具有更简单的实现。两种变体clip-PPO 和 adaptive KL-PPO。 Actor-Critic 系列 A2C (Advantage Actor-Critic)同步更新的 Actor-Critic。A3C (Asynchronous Advantage Actor-Critic)异步更新版本。 MAPPO (Multi-Agent PPO) 专为多智能体场景设计的 PPO 变种。
优点
理论收敛性强。更新稳定适合复杂策略。
缺点
样本利用率低每条数据通常只用一次。对环境交互的需求较高。 2.2 Off-Policy 算法
定义
Off-policy 算法利用历史经验进行策略更新数据采样可以来自不同策略。借助经验回放replay buffer提高样本利用率。
常见的 Off-Policy 算法 Q-Learning 系列 DQN (Deep Q-Network)结合神经网络的 Q-learning。Double DQN解决 DQN 过估计问题。Dueling DQN分离状态价值和动作优势。 Deterministic Policy Gradient (DPG) 专为连续动作空间设计。 Deep Deterministic Policy Gradient (DDPG) DPG 的深度强化学习版本结合 replay buffer 和目标网络。 Twin Delayed Deep Deterministic Policy Gradient (TD3) DDPG 的改进版缓解过估计问题。 Soft Actor-Critic (SAC) 基于最大熵的策略适用于连续动作空间。 Q-Learning with Function Approximation Fitted Q、Neural Fitted Q 等。
优点
样本利用率高数据可多次利用。更适合数据采样成本高的任务如真实机器人交互。
缺点
更新的稳定性较差需要经验回放和目标网络。训练复杂度较高。
对比总结
特性On-PolicyOff-Policy样本利用率低一次性使用高可重复利用缓冲区无长期缓冲区使用 replay buffer策略一致性必须与当前策略一致可利用任意策略生成的数据学习效率依赖高频环境交互适合数据采样成本高的场景收敛性理论收敛性强收敛性依赖数据分布应用场景实时决策、多智能体复杂连续动作、高成本环境 形象比喻 on-policy有点像个调皮的小孩子被打了/奖励了当场就长记性的那种。而off-policy这种小孩子被打了/奖励了它还得回味下这是一次偶然的惩罚还是这样做就是不好的他还会去调皮的捣蛋直到被打怕了学习到了。 On-Policy 的小孩
“被打了/奖励了当场就长记性” 贴合 on-policy 的特点 on-policy 是即时性学习完全依赖于当前策略的反馈进行调整。它专注于当前的策略表现而不会回头复盘过去的错误或奖励。优点即时调整学习过程直接且明确。缺点缺乏对历史的反思和利用样本效率低。
Off-Policy 的小孩 “回味一下这是一场偶然的惩罚还是这样做就是不好的” 描述了 off-policy 的核心机制利用经验回放。off-policy 会保存大量的历史经验在反复回顾和分析中找到优化策略的方法。这种行为类似一个喜欢“钻牛角尖”的小孩经过无数次试验才明白真正的规律。 “调皮地捣蛋直到被打怕了” off-policy 算法在学习时确实会反复尝试甚至冒险探索如 DQN 的 ϵϵ-greedy 策略不断调整对环境的理解。它的学习过程可能显得缓慢但通过深入分析历史数据它最终会学得更全面和稳定。
它们的关键区别
即时性 vs 历史性on-policy 专注于当前而 off-policy 反思过去。效率 vs 深度on-policy 快速适应环境而 off-policy 更深刻地理解长期规律。 3 MAPPO 是 On-Policy如何学习历史经验 有了上面的基础MAPPO 是 on-policy。它的缓冲区buffer在每次新的 episode 开始时会被清空而不像 off-policy 算法那样长期保留数据。这主要体现在以下几点
为什么会清空缓冲区 On-Policy 的约束 On-policy 算法如 PPO 和 MAPPO的策略更新只能依赖最新策略采样的数据历史数据与当前策略分布不一致因此被舍弃。这确保了策略更新的稳定性。
如何应对这个问题
尽管无法直接使用历史经验仍然可以通过以下方法弥补 加大采样量buffer size 增加单次采样的 episode_length 或 batch_size让模型在每次采样时接触更多样本。 使用 advantage 标准化 通过标准化 GAE 或 Q 值来减小不同 episode 数据间的方差从而稳定更新。 调整训练步数 MAPPO 的一个优势是它通常以 centralized critic 方式加速策略学习。通过适当增加训练步数可以弥补无法利用历史经验的缺陷。 环境重置机制 对于训练环境确保多样性例如引入 domain randomization 或多种初始化状态间接增加训练数据的广度。 4 MAPPO 算法的调参建议 MAPPO 的核心参数调节分为以下几类
超参数相关 学习率learning rate 适当调低学习率可以提高稳定性尤其在多智能体环境中噪声较大的情况下。通常建议从 1e−4或 5e−4开始测试。 折扣因子gamma γγ 控制长期回报的权重推荐从 0.95 或 0.99开始根据任务的时间跨度调整。 GAE λlambda for Generalized Advantage Estimation 通常设置为 0.95 左右平衡偏差与方差的影响。 clip range裁剪范围 PPO 的核心超参数通常设置为 0.1 到 0.3 之间越小代表对策略更新的限制越强。
网络结构相关 隐藏层大小hidden size 可以调试网络的层数和每层的单元数。典型设置为两层每层 64 到 256 个单元视环境复杂度而定。 共享网络与独立网络 MAPPO 支持共享网络centralized critic或独立网络decentralized critic。如果任务需要高效协作建议使用共享网络。
环境相关 batch size 批量大小对训练效率有很大影响推荐设置为每次采样 2048 到 4096 个 time steps或者按环境规模调整。 episode length 对于 MAPPOepisode_length 确实非常关键因为它决定了每次采样的数据量。可以根据环境复杂度和任务长度动态调整通常从 200 到 1000 步之间。
更新频率
policy update iterations 每次采样后建议进行 4 到 10 次梯度更新epochs以保证策略能够充分利用每批数据。 [Python] On-Policy 和 Off-Policy 实现
以 Proximal Policy Optimization (PPO) 为例 若是下面代码复现困难或者有问题欢迎评论区留言需要以整个项目形式的代码请在评论区留下您的邮箱以便于及时分享给您私信难以及时回复。 《on-Policy》时间2024.11作者不去幼儿园Initialize policy network πθ with parameters θ
Initialize value network Vϕ with parameters ϕfor iteration 1, 2, ..., N do# Collect trajectories (states, actions, rewards) using current policy πθtrajectories []for episode 1, ..., M dostate environment.reset()episode_trajectory []for t 1, ..., T doaction πθ(state) # Sample action from current policynext_state, reward, done environment.step(action)episode_trajectory.append((state, action, reward))if done:breakstate next_statetrajectories.append(episode_trajectory)# Compute advantages using GAE or Monte Carlo returnsadvantages, returns compute_advantages(trajectories, Vϕ)# Update policy πθ using clipped surrogate objectivefor _ in range(policy_update_epochs):policy_loss compute_policy_loss(πθ, advantages)θ θ - α_policy * ∇(policy_loss)# Update value network Vϕfor _ in range(value_update_epochs):value_loss compute_value_loss(Vϕ, returns)ϕ ϕ - α_value * ∇(value_loss)以 Deep Q-Learning (DQN) 为例
《off-Policy》时间2024.11作者不去幼儿园Initialize Q-network Qθ with parameters θ
Initialize target network Qθ with parameters θ θ
Initialize replay buffer Dfor iteration 1, 2, ..., N dostate environment.reset()for t 1, ..., T do# ε-greedy policy for explorationif random() ε:action random_action()else:action argmax(Qθ(state))next_state, reward, done environment.step(action)# Store transition in replay bufferD.append((state, action, reward, next_state, done))# Sample minibatch from replay bufferminibatch random_sample(D, batch_size)# Compute target valuestarget_values []for (s, a, r, s_, done) in minibatch:if done:target relse:target r γ * max(Qθ(s))target_values.append(target)# Update Q-network Qθloss compute_loss(Qθ, minibatch, target_values)θ θ - α * ∇(loss)# Update stateif done:breakstate next_state# Periodically update target networkif iteration % target_update_freq 0:θ θ[Notice] 注意事项
on-policy 关键点
数据从环境实时采样不存储历史数据。更新策略和价值网络时仅使用当前采样的数据。每次策略更新后之前的数据会被丢弃。
off-policy 关键点
使用 replay buffer 保存历史数据重复利用经验。策略与目标网络更新分离数据可以来自不同的策略。数据利用率高但需要经验回放和目标网络来稳定训练。 由于博文主要为了介绍相关算法的原理和应用的方法缺乏对于实际效果的关注算法可能在上述环境中的效果不佳或者无法运行一是算法不适配上述环境二是算法未调参和优化三是没有呈现完整的代码四是等等。上述代码用于了解和学习算法足够了但若是想直接将上面代码应用于实际项目中还需要进行修改。 5 总结 MAPPO 是一个高效、稳定且适应性强的多智能体强化学习算法通过结合 PPO 的稳定性和多智能体环境的需求为协作与竞争场景提供了强有力的解决方案。 博客都是给自己看的笔记如有误导深表抱歉。文章若有不当和不正确之处还望理解与指出。由于部分文字、图片等来源于互联网无法核实真实出处如涉及相关争议请联系博主删除。如有错误、疑问和侵权欢迎评论留言联系作者或者添加VXRainbook_2联系作者。✨