强化学习战场:A2C、A3C、DDPG、SAC 与 PPO,哪个才是真正的王者?

我将逐一介绍这些算法,各自的问题背景、改进点、组成要素以及局限性:

  1. A2C (优势演员-评论家算法)

    • 问题背景: A2C 被提出来改进基本的演员-评论家算法,提高学习效率和稳定性。
    • 改进点: A2C 使用优势函数(Advantage function)代替原始的价值函数,减少方差,提高学习稳定性。
    • 组成要素: A2C 包括两部分,演员(负责选择动作)和评论家(评估动作的好坏)。优势函数是其核心,用于评价动作相比平均水平的优劣。
    • 局限性: A2C 适用于离散动作空间,但在连续动作空间中表现不佳。
  2. A3C (异步优势演员-评论家算法)

    • 问题背景: 为了进一步提升训练速度和效率,A3C 引入了异步训练机制。
    • 改进点: A3C 允许多个智能体并行在不同的环境实例中学习,并异步更新全局模型。
    • 组成要素: 与 A2C 类似,包括演员和评论家,但在多个并行环境中同时运行。
    • 局限性: 需要大量并行执行资源,且难以稳定训练过程。
  3. DDPG (深度确定性策略梯度)

    • 问题背景: 针对连续动作空间的优化问题。
    • 改进点: DDPG 结合了确定性策略(更高效的探索)和深度学习(处理复杂环境)。
    • 组成要素: 包括一个确定性策略的演员和一个价值函数的评论家,还使用经验回放和软更新技术。
    • 局限性: 需要大量的样本和较慢的收敛速度。
  4. SAC (软性演员-评论家算法)

    • 问题背景: 为了在连续动作空间中平衡探索与利用。
    • 改进点: SAC 引入了熵作为奖励的一部分,鼓励探索。
    • 组成要素: 包括演员、评论家和熵优化机制。
    • 局限性: 相对于其他算法,SAC 更为复杂,且调参更为困难。
  5. PPO (近端策略优化)

    • 问题背景: PPO 被设计为解决策略梯度方法中策略更新步长难以控制的问题,特别是为了改善早期方法如梯度策略算法的复杂性和效率问题。
    • 改进点: PPO 通过简化策略更新机制,旨在提供一种既简单又有效的方式来平衡探索和利用。它使用了一种剪裁(clipping)机制,限制策略更新的幅度,从而避免在学习过程中出现过大的策略变动。
    • 组成要素: PPO 包括一个演员(用于生成动作)和一个评论家(用于评价这些动作)。此外,PPO 还使用了特殊的目标函数和剪裁机制来平衡策略更新的稳定性和效率。
    • 局限性: 尽管 PPO 相比于其他方法简化了训练过程,但它的性能仍然高度依赖于超参数的选择,尤其是剪裁参数的设置。此外,在某些特别复杂的环境中,PPO 可能不如其他更复杂的算法表现得好。

 

没有一个算法可以称为“真正的王者”,因为每个算法都有其适用的场景。

  • 在处理连续动作空间的任务时,DDPG 和 SAC 是更好的选择。

    • 我更喜欢 SAC 完全开源(可以直接应用),能直接应用到真实机器人,而且是 DDPG 的改进版本(效果还是第一梯队)。
  • 在需要快速迭代和处理大规模状态空间的任务中,A3C 和 PPO 可能表现更优。

    • PPO 有严重的采样效率问题,需要海量数据 + 恐怖算力。
    • OpenAI 提出的算法好多是大力出奇迹
    • 对于大规模应用和复杂环境,PPO通常更高效,尽管它的样本利用率可能不如A3C

OpenAI 的 baselines 项目,开源了很多算法:

  • 本文涉及的:A2C、DDPG、DQN、PPO1、PPO2
  • 本文未涉及:ACER、ACKTR、GAIL、HER、TRPO

那我们一一介绍他们吧。

算法递进思路

算法 “一动作” 口号 用一句话说明
A2C 减噪音,梯度干净 奖励抖动导致梯度乱 -> 用“优势 = 奖励 – 参考线”当权重。
把总分减掉平均分,只学“比平均高/低多少”。

类比:只关心“偏靶心几厘米”,不看绝对分数。
A3C 拉人头,样本快 样本相关性高 + 单线程还慢 + 同步锁会阻塞 -> 开 8 条线程各自打怪,多线程起点随机,样本更多样 + 异步梯度平均。

类比:十个队友各自练箭,随手把心得丢进群文件,铺路给更复杂任务
PPO 上护栏,更新稳 一次性改过头会退化 -> 给新旧策略概率比装限位器,一次最多改 20%。
DDPG 播录像,连续动作 & 数据复用 动作是实数,概率不好采样 -> 连续动作改成确定性角度
On-policy 浪费数据 -> 经验回放 = 把每局录像多刷几遍
Q 值追自己跑会炸 -> 弄个“影子 Q”慢更新
噪声要平滑,不能跳 -> OU 噪声让方向盘微颤探路

类比:赛车手打定角度,赛后反复看慢放,教练慢半拍示范
SAC 赏探路,探索稳健两不误 DDPG 易陷局部最优 -> 加熵 = 主动奖励多样化
熵权重 α 难手调 -> 自学 α,省事
单 Q 会乐观 -> 双 Q 取小,防高估
采样随机不可导 -> 重参数 trick,梯度能传
总目标 = 奖励 + α自调 × 最大熵目标 + 双 Q 保守估值。

想要“稳 + 探 + 连续”三赢 — 探险比赛,走偏僻路给奖金,两台 GPS 取更短里程

0 原始出厂版:REINFORCE

说明(白话)
痛点 做完一整局游戏才知道得了几分,像买彩票——运气好坏全混在梯度里。
结果 曲线狂抖、学得慢,只能单线程跑。

① A2C — “先把噪声降下去”

迷你补丁 ❶痛点 ❷天真做法 ❸改进关键 ❹一句大白话 + 比喻
①-1 基准线 (baseline) 奖励像过山车 直接拿总分调参数 先减掉“平均分”再学习 只关心“比平均好多少”
*射箭只看偏靶心几厘米
①-2 n-step 回报 单步反馈慢 一箭一总结 累计 3–5 步再总结 信息更密集
*连射五箭一起评
①-3 演员 / 评论家分工 玩家自己给自己打分不准 一个网全包 单独造个“裁判网”专门打分 选手射箭、裁判计分,职责清晰

阶段小结:A2C = “减噪声 + 提前几步看”,学习稳定度↑ 但采样速度还慢。


② A3C — “换多人同时刷经验”

迷你补丁 ❶痛点 ❷天真做法 ❸改进关键 ❹一句大白话 + 比喻
②-1 多线程采样 单线程太慢 加 GPU?on-policy 仍要新局 同一代码复制 8 份环境 八个小伙伴各自打怪
②-2 异步梯度汇总 线程等锁浪费 全部跑完再同步 谁先跑完谁就把梯度丢中央 “交作业”随到随改
②-3 随机起点多样性 样本仍相似 全线程同关卡 每线程随机地图 / 随机种子 每人去不同靶场练箭

阶段小结:A3C = “多核挖矿”版 A2C:学习原理不变,样本流量×N。


③ PPO — “再给学习装个安全挡板”

迷你补丁 ❶痛点 ❷天真做法 ❸改进关键 ❹一句大白话 + 比喻
③-1 新旧概率比 一口气改太猛 直接用新分数 先算“新招式/旧招式 信心比” 看看“新姿势比旧姿势猛几倍”
③-2 比率剪裁 clip 比大跳仍危险 手动调学习率 把比率硬抠进 1 ± 20 % 手肘绑根皮筋,动作一次只能微调
③-3 KL 早停 clip 阈值不好选 ε 大小靠直觉 监控偏离度,太偏立即停 教练喊“别跑形”,立刻暂停调整

阶段小结:PPO ≈ “按住别让你一下扭太多”——稳如老狗,是离散动作里的工业标配。


④ DDPG — “换成方向盘并引入录像回放”

迷你补丁 ❶痛点 ❷天真做法 ❸改进关键 ❹一句大白话 + 比喻
④-1 确定性动作 动作是实数角度 继续输出概率 直接输出一个角度值 赛车手告诉你“打 18.7°”
④-2 经验回放 on-policy 浪费 数据用一次就丢 保存到“录像库”反复看 回放比赛录像学套路
④-3 目标网络软更新 估值追着自己抖 每步用最新 Q 复制一份“影子网”慢 1 % 跟进 老师示范慢半拍,别两人一起跑偏
④-4 OU 时序噪声 确定策略太死 直接加高斯点抖 使用平滑噪声串 小幅左右晃方向盘探弯心

阶段小结:DDPG = “把 DQN 套壳到连续动作”,稳定靠影子网,效率靠录像库。


⑤ SAC — “给探新路发奖金,再配双 GPS”

迷你补丁 ❶痛点 ❷天真做法 ❸改进关键 ❹一句大白话 + 比喻
⑤-1 最大熵目标 易陷局部最优 手调噪声 把“动作多样”写进目标函数 走偏僻小路也算积分
⑤-2 α 自动调节 奖金权重难设 人工固定 α 让 α 自己学:清晰状态→降奖金 路熟了奖金少,路生奖金多
⑤-3 双 Q 取最小 Q 值乐观偏高 单 Q 两份估值,取较小那份 双 GPS,选保守里程
⑤-4 重参数化采样 动作带随机不可导 直接采样 把“掷骰子”拆成 μ+σ×随机数 先生成 0-1 随机后拉伸平移可微分

阶段小结:SAC = “奖励好奇心 + 双保险”,目前连续控制界常青树。


汇总:18 步进化长卷

REINFORCE
  ├①-1 baseline          ↓ “去运气”
  ├①-2 n-step            ↓ “多看几步”
  └①-3 actor/critic      → A2C
       ├②-1 多线程采样   ↓ “数据翻倍”
       ├②-2 异步梯度     ↓ “随交随改”
       └②-3 随机起点     → A3C
            ├③-1 概率比率 ↓ “量尺”
            ├③-2 clip     ↓ “安全挡板”
            └③-3 KL 早停  → PPO
                 ├④-1 确定性 actor ↓ “输出角度”
                 ├④-2 经验回放     ↓ “录像复用”
                 ├④-3 目标网       ↓ “影子稳值”
                 └④-4 OU 噪声     → DDPG
                       ├⑤-1 最大熵  ↓ “给好奇加分”
                       ├⑤-2 α 自调 ↓ “奖金自适应”
                       ├⑤-3 双 Q    ↓ “保守估值”
                       └⑤-4 重参数  → SAC

一口气的口诀
“去运气 → 多线程 → 上挡板 → 播录像 → 奖好奇”
背住这 5 词,就记住了 18 个补丁的主干思路。


最后 30 秒:我该选谁?

先决条件 一句建议
离散动作,稳健第一 PPO
连续动作,快速原型 DDPG
连续动作,要少调参、抗坑 SAC
样本免费、只有 CPU A3C
刚入门、想看梯度公式 A2C

近端策略优化算法 PPO

请猛击:【ChatGPT 默认强化学习策略】PPO 近端策略优化算法

这可能是,史上最易懂的 PPO 文章。
 


优势演员-评论家算法 A2C

请猛击:优势演员-评论家算法 A2C

这可能是,史上最易懂的 A2C 文章。
 


异步优势演员-评论家算法 A3C

请猛击:异步优势演员-评论家算法 A3C

这可能是,史上最易懂的 A3C 文章。
 


深度确定性策略梯度 DDPG

请猛击:深度确定性策略梯度 DDPG

这可能是,史上最易懂的 DDPG 文章。
 


软性演员-评论家算法 SAC

请猛击:软性演员-评论家算法 SAC

这可能是,史上最易懂的 SAC 文章。

 


Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐