
文章目录导读背景动机方法框架进化策略ES核心创新可大规模并行的 ES让 ES 生效的关键网络参数化改进实验分析总结思考补充导读论文标题Evolution Strategies as a Scalable Alternative to Reinforcement Learning项目地址https://github.com/openai/evolution-strategies-starter这篇由 OpenAI 于 2017 年发表的论文是神经进化Neuroevolution领域的里程碑工作它打破了当时 “深度强化学习只能基于梯度下降” 的主流认知证明了进化策略Evolution Strategies, ES这类黑箱优化算法不仅能在经典控制和 Atari 游戏上达到与主流 RL 算法相当的性能更具备极强的并行扩展能力可通过上千 CPU 核心实现数量级的训练加速。背景动机2017 年前后深度强化学习DRL的主流框架基于马尔可夫决策过程MDP代表算法包括 DQN、策略梯度Policy Gradient、TRPO、A3C 等核心思路是通过反向传播计算策略梯度或价值函数梯度来更新网络。这类方法存在几个固有痛点并行通信成本高分布式训练需要在节点间传递完整的梯度向量或价值网络参数带宽瓶颈严重难以大规模扩展。传统基于梯度的强化学习每个工作节点worker用自己的环境样本通过反向传播算出策略网络的梯度这个梯度的维度和网络参数的数量完全相等比如网络有 1000 万个参数梯度就是一个长度 1000 万的浮点数向量。要让所有节点的策略保持一致必须把所有节点的梯度汇总、取平均再更新到每个节点的网络上。分布式训练的核心目标是所有节点共用同一份模型参数用不同的数据 / 样本共同训练加快训练速度。每个工作节点worker拿到不同的样本自己跑前向 反向传播算出自己这份样本对应的梯度但每个 worker 自己的梯度只代表自己那部分样本的方向不能直接更新自己的模型否则各个 worker 的模型就会越差越远变成各训各的失去了分布式训练的意义所以必须把所有 worker 的梯度收集到一起取平均值得到一个统一的梯度方向再用这个统一梯度去更新所有 worker 的模型保证所有节点的模型始终一致。长序列任务梯度方差大策略梯度的方差随回合episode时间步长 T 线性增长长时域任务中梯度信号噪声极大通常需要通过奖励折扣、价值函数基线来降方差但会引入优化偏差。对动作频率敏感帧跳跃frame skip等时间分辨率参数对性能影响极大需要针对每个任务精细调参。智能体不是每 1 帧画面都做一次决策而是每隔k帧做一次决策这连续k帧都执行同一个动作这个k就是 frame skip。计算开销大反向传播的计算量约为前向推理的 2 倍且需要额外存储价值网络内存占用高。前向传播输入特征维度为n输出维度为m权重矩阵为W n × m W_{n\times m}Wn×m计算Y X W Y XWYXW核心是 1 次矩阵乘法计算量约为n × m n\times mn×m。反向传播需要同时算两个量误差往输入层的传递d X d Y ⋅ W T dX dY \cdot W^TdXdY⋅WT1 次矩阵乘法计算量n × m n\times mn×m权重的梯度d W X T ⋅ d Y dW X^T \cdot dYdWXT⋅dY1 次矩阵乘法计算量n × m n\times mn×m。进化策略属于黑箱优化也叫直接策略搜索不计算环境或策略的解析梯度只通过 “扰动参数 - 评估回报 - 更新参数” 的循环优化策略。在此之前这类方法普遍被认为样本效率极低只能解决小规模问题无法和梯度类 RL 竞争。这篇论文的核心目标是通过算法改进与工程优化证明 ES 在深度强化学习场景下具备竞争力尤其在并行扩展性上拥有梯度方法无法比拟的优势。方法框架进化策略ES论文采用的是自然进化策略Natural Evolution Strategies, NES的简化版本本质是一种零阶随机梯度优化方法它不是没有梯度而是通过参数扰动来估计梯度。优化目标是最大化策略的期望回报F ( θ ) F(\theta)F(θ)其中θ \thetaθ是神经网络参数。ES 通过在参数空间引入高斯分布来平滑目标函数E ϵ ∼ N ( 0 , I ) F ( θ σ ϵ ) \mathbb{E}_{\epsilon \sim N(0,I)} F(\theta\sigma \epsilon)Eϵ∼N(0,I)F(θσϵ)。其中σ \sigmaσ是扰动噪声的标准差ϵ \epsilonϵ是标准高斯噪声向量。利用得分函数恒等式可以推导出目标函数对θ \thetaθ的梯度估计∇ θ E ϵ ∼ N ( 0 , I ) F ( θ σ ϵ ) 1 σ E ϵ ∼ N ( 0 , I ) { F ( θ σ ϵ ) ⋅ ϵ } \nabla_{\theta} \mathbb{E}_{\epsilon \sim N(0,I)} F(\theta\sigma \epsilon) \frac{1}{\sigma} \mathbb{E}_{\epsilon \sim N(0,I)} \left\{ F(\theta\sigma \epsilon) \cdot \epsilon \right\}∇θEϵ∼N(0,I)F(θσϵ)σ1Eϵ∼N(0,I){F(θσϵ)⋅ϵ}基础 ES 算法流程Algorithm 1每一轮迭代分为三步采样扰动生成 n 个服从标准高斯分布的扰动向量ϵ 1 , ϵ 2 , . . . , ϵ n \epsilon_1, \epsilon_2, ..., \epsilon_nϵ1,ϵ2,...,ϵn评估适应度对每个扰动后的参数θ σ ϵ i \theta \sigma\epsilon_iθσϵi在环境中运行一个回合得到总回报F i F_iFi更新参数用加权平均的扰动向量更新参数均值θ t 1 θ t α ⋅ 1 n σ ∑ i 1 n F i ϵ i \theta_{t1} \theta_t \alpha \cdot \frac{1}{n\sigma} \sum_{i1}^n F_i \epsilon_iθt1θtα⋅nσ1∑i1nFiϵi, 其中α \alphaα是学习率。我的理解是ES 不通过反向传播算解析梯度而是用参数空间的采样来零阶估计梯度 用采样的方式估计梯度再做随机梯度上升。工程优化技巧为了提升稳定性和样本效率论文加入了三个关键 trick镜像采样Antithetic Sampling总是成对采样ϵ \epsilonϵ和− ϵ -\epsilon−ϵ可将梯度估计的方差降低约一半。适应度塑形Fitness Shaping对回报做秩变换用排名代替原始回报值消除离群点的影响避免算法过早收敛到局部最优。假设本轮 5 个样本的原始回报是[1000, 20, 18, 15, 10]其中 1000 是一个极端离群点。如果用原始回报计算梯度这个 1000 的权重会远大于其他样本直接主导参数更新方向很容易把模型带偏、陷入局部最优。做秩变换后回报变成[5, 4, 3, 2, 1]第 1 名到第 5 名第一名和第二名的差距只有 1和原始回报的差距无关。权重衰减防止参数幅值过大保证扰动的相对比例始终有效。核心创新可大规模并行的 ES这是论文最具突破性的贡献通过共享随机种子的通信策略将分布式训练的通信量从 “传递整个梯度向量” 降低到 “仅传递标量回报”实现了接近线性的并行加速。传统分布式 RL 中每个 worker 计算完梯度后需要把整个梯度向量百万到上亿维度传给参数服务器通信开销极大。而 ES 的并行设计利用了一个关键洞察如果所有 worker 共享相同的随机种子序列那么每个 worker 生成的扰动向量ϵ i \epsilon_iϵi可以被其他所有 worker 完全复现。因此整个并行流程只需要两步通信每个 worker 用自己的种子生成扰动评估得到标量回报F i F_iFi所有 worker 互相广播各自的标量回报F i F_iFi每个 worker 本地根据所有F i F_iFi和自己复现的ϵ i \epsilon_iϵi独立计算参数更新只传标量回报会不会有问题会有局限这也是 ES 不是全面替代传统 RL、而是互补的原因ES 是零阶采样估计梯度本身的方差就比反向传播的解析梯度高样本效率更低只传标量没有改变这个本质只是解决了通信问题。梯度估计的方差和采样数成反比worker 太少的话梯度噪声太大训练根本不收敛。传统方法为什么一定要传完整梯度为传统深度 RL 的梯度是反向传播计算的解析梯度每个 worker 的梯度是基于自己的环境样本、通过链式法则一步步算出来的和具体的样本数据强绑定其他 worker 没有这份样本数据就算知道种子也不可能复现出这个梯度所以必须把梯度向量本身传过去。传完整梯度的核心优势是梯度估计的质量更高、样本效率更高—— 同样的数据量解析梯度的方差远低于 ES 的采样梯度训练收敛需要的样本更少。这也是传统 RL 方法样本效率比 ES 高的核心原因之一。额外工程优化预生成噪声块训练开始前先生成一大块高斯噪声每轮随机索引取用避免每轮重复采样的开销。动态回合长度截断将回合最大步数设为平均步数的 2 倍保证最差情况下 CPU 利用率也高于 50%避免部分 worker 过早结束空闲等待。让 ES 生效的关键网络参数化改进很多人忽略了这一点直接对标准 CNN/MLP 做参数扰动ES 根本无法有效探索这也是之前神经进化效果差的重要原因。CNN 视觉场景随机初始化的标准 CNN 存在 “激活塌缩” 问题深层网络的输出对输入变化、权重扰动都极不敏感。 ------- 输入是 84×84 的灰度游戏画面标准 CNN 随机初始化后输出的 6 个动作的 logits 值非常接近且几乎不随输入画面变化。每个动作的 logits 只会整体微小平移经过 argmax 选动作后永远输出同一个动作。MLP 连续控制场景MuJoCo标准 MLP 输出连续的关节力矩 / 速度参数扰动带来的输出变化是连续且微小的无法产生显著的行为差异。Atari 场景虚拟批归一化Virtual Batch Normalization问题随机初始化的 CNN参数的微小扰动会导致网络输出塌缩 —— 无论输入什么图像都输出同一个动作完全失去探索信号。解决方案虚拟批归一化VBN。它和普通批归一化的区别是归一化用的均值和方差来自训练开始前随机选定的一个固定小批量而不是每轮的当前批次。作用让策略网络对输入图像的微小变化始终保持敏感保证参数扰动能真正转化为动作多样性从而产生有效的探索信号。VBN核心作用是强制网络每一层的激活始终处于敏感区间让参数的微小扰动能稳定转化为输出的显著变化。标准 BN 的核心逻辑是**“用当前批次的统计量做归一化”**训练阶段的流程是每一轮训练取当前批次batch的 N 个样本输入网络对每一层用这 N 个样本的激活值实时计算本批次的均值μ B \mu_BμB和方差σ B 2 \sigma_B^2σB2用这个批次专属的μ B 、 σ B 2 \mu_B、\sigma_B^2μB、σB2对本批次所有样本做归一化再乘可学习的γ 、 β \gamma、\betaγ、β输出。.批次不同统计量就不同换一批样本均值方差就变了单个样本的输出依赖同批次的其他样本同一个样本放在 A 批次和 B 批次里BN 后的输出结果不一样。为什么普通 BN 和 ES 的机制天然不兼容ES 的核心逻辑是每个扰动个体 (θ σ ϵ i \theta\sigma\epsilon_iθσϵi独立跑一个完整回合用回合的总回报差异来估计参数的梯度方向。我们想要的是回报的差异只来自参数扰动的差异—— 这样梯度估计才是纯净、准确的。但如果给 ES 配上普通 BN会引入额外噪声源。VBN 的核心改动只有一点把 BN 的统计量从 “每批次动态计算” 改成 “训练前一次性算好、全程固定不变”。MuJoCo 场景动作离散化对于连续控制任务标准 MLP 输出的连续动作过于平滑参数扰动带来的行为差异很小不利于探索。论文将连续动作离散化为 10 个 bins增加动作的非平滑性显著提升了探索效果。把每个连续动作维度的取值区间均匀划分为 10 个离散档位比如 [-1, 1] 均匀分成 10 份对应固定值-1.0、-0.8、-0.6、…、0.8、1.0网络不再直接输出连续的动作数值而是输出 10 个类别的得分logits通过 argmax 选取得分最高的档位将其对应的值作为最终执行的动作。ES vs 策略梯度理论层面的本质差异论文最有洞见的部分之一是从平滑空间的角度统一了 ES 和策略梯度并分析了各自的适用场景。两类方法本质都是通过加噪声让目标函数变得可微区别只在于加噪声的位置策略梯度PG在动作空间加噪声 —— 策略是随机的每一步都从分布中采样动作。进化策略ES在参数空间加噪声 —— 策略是确定性的每个回合用一个扰动后的固定参数。这里的 “随机 / 确定性”特指给定固定参数θ \thetaθ、固定状态s时策略输出的动作是否唯一。给定状态s和参数θ \thetaθ策略输出唯一确定的动作离散动作直接 argmax 选最大连续动作直接输出数值ES 的随机性不来自动作采样而来自参数扰动。 -------- 一个 “玩家”对应一个扰动参数每次到这个坑前永远跳另一个 “玩家”每次到这里永远走 —— 不同玩家行为不一样但每个玩家自己的行为是固定的。这是两者最核心的理论差异策略梯度的对数概率梯度是 T 个时间步的梯度之和方差随回合长度 T 线性增长。ES 的对数概率梯度只和参数扰动有关和回合长度无关方差与 T 无关。长时域、长序列任务中ES 的梯度估计更稳定。策略梯度通常用奖励折扣γ1来缩短有效 T但会牺牲长远奖励的权重引入偏差ES 不需要折扣天然适合延迟奖励、长周期决策任务。ES 常被诟病 “高维下效率低”但论文指出ES 的效率取决于优化问题的有效维度而非参数的绝对数量。实际实验中更大的网络反而能取得更好的效果因为深度网络的损失曲面局部最小值更少和梯度优化的规律一致。有效维度intrinsic dimension目标函数真正发生显著变化的方向数即问题的真实自由度。深度学习中绝大多数参数都是冗余的大量参数的变化并不会影响最终的回合回报。实验分析论文在 MuJoCo 连续控制、Atari 游戏两个基准上做了全面对比核心结论是ES 样本效率略低但计算效率和并行效率极高可以用更多 CPU 核心把训练时间压缩一到两个数量级。MuJoCo 连续控制与 TRPO 对比TRPO 是当时样本效率最高的策略梯度算法之一。实验使用完全相同的网络结构两层 64 单元 MLP结果如下简单任务ES 样本效率更高例如 HalfCheetah 达到相同性能只需要 TRPO 58% 的样本量。困难任务Hopper、Walker2d 等复杂运动任务ES 需要 3~10 倍的样本量但最终能达到和 TRPO 相当的性能。探索质量差异ES 能学到多种多样的步态侧走、倒走等而 TRPO 只会收敛到一种标准步态。这说明 ES 的探索更全局不容易陷入局部行为模式。Atari 游戏与 A3C 对比实验在 51 款 Atari 游戏上测试使用和 DQN/A3C 相同的 CNN 架构计算量相当的对比ES 训练 10 亿帧1 小时720CPU的计算量和 A3C 训练 3.2 亿帧1 天的计算量大致相当因为 ES 不需要反向传播单步计算量约为 RL 的 1/3。性能对比23 款游戏 ES 表现更好28 款 A3C 更好整体处于同一水平。样本效率ES 的数据效率是 A3C 的 1/3~1/10但通过并行计算实际训练时间更短。并行扩展性接近线性加速任务MuJoCo 3D 人形机器人行走Humanoid-v1单机器18 核约 11 小时收敛分布式1440 核仅需 10 分钟收敛加速比接近线性这是当时任何梯度类 RL 算法都无法做到的。动作频率不变性在 Pong 游戏中测试不同 frame skip 参数ES 的学习曲线几乎完全重合。而对于策略梯度frame skip 是最关键的超参数之一设置不当会导致完全不收敛。这体现了 ES 对时间分辨率的鲁棒性。总结思考这篇论文直接重新点燃了学术界对神经进化的研究热情后续衍生出 OpenAI-ES 开源实现以及 CMA-ES 的深度版本、带自适应噪声的 ES 等改进工作。启发了 “演化 强化” 的混合算法比如用 ES 做全局探索、用梯度做局部精调。其低通信量的并行思路也影响了后续分布式强化学习的通信优化方向。这篇论文的价值不在于 “ES 比 RL 好”而在于重新定义了黑箱优化在深度 RL 时代的定位它不是过时的落后方法而是一种在并行计算时代极具潜力的替代方案。当你拥有大量计算核心、需要快速迭代实验、或者面对长时域稀疏奖励任务时进化策略可能比传统强化学习更高效、更易用。补充ES 的独特优势极致的并行性通信量极低可轻松扩展到上千 worker线性加速。长时域鲁棒性不受回合长度影响不需要奖励折扣天然适合稀疏奖励、延迟奖励任务。实现简单不需要反向传播不需要价值函数代码量远小于 RL 算法。硬件友好可直接使用推理专用硬件如 TPU适配低精度、二值网络不受梯度爆炸问题影响。超参数鲁棒性所有 Atari 游戏用同一套超参数所有 MuJoCo 任务用同一套超参数调参成本极低。论文的局限样本效率仍低于梯度方法在中等难度任务上通常需要几倍的样本量才能达到相同性能。噪声固定论文中 σ 是固定超参数没有自适应调整后续工作证明自适应噪声能进一步提升效率。仅测试前馈网络没有验证循环神经网络等更复杂结构的效果。不是完全替代 RLES 更适合 “时间紧、算力多、任务时域长” 的场景而非全面超越梯度 RL。