RL-03-17-算法-进化策略

← 上级:RL-03.算法分类与选型 · 对照:RL-03-08-算法-Policy-Gradient · 对照:RL-03-11-算法-PPO

进化策略(Evolution Strategies,ES)把策略参数 $\theta$ 的优化看作黑盒问题:扰动 $\theta$、在环境中评估回报、按适应度更新——无需反向传播穿过环境,也无需可微仿真

段末注释:进化策略(Evolution Strategies,ES)指通过参数扰动与适应度排序更新策略的黑盒优化方法族;后文沿用 ES


一、与策略梯度的根本区别

策略梯度(PG / PPO) 进化策略 ES
梯度来源 $\nabla_\theta J$,REINFORCE 或自动微分 有限差分 / 秩变换估计「方向」
环境要求 可微或需 score function 纯黑盒回报即可
信用分配 时序结构($G_t$、GAE) 通常整局回报一个标量
并行 需同步梯度 高度并行(各 worker 独立 rollout)
样本效率 TD / PPO 较高 通常较低
调参 lr、clip 等 噪声 $\sigma$、种群大小

ES 适合:仿真不可微CPU 集群大规模并行参数维度中等的策略网络。


二、基本 ES 更新(OpenAI ES)

  1. 当前参数 $\theta$
  2. 采样扰动 $\epsilon_i \sim \mathcal{N}(0, I)$,评估 $R_i = F(\theta + \sigma \epsilon_i)$($F$ 为 episode 回报)
  3. 归一化回报 $\hat{R}_i = (R_i - \mu_R) / \sigma_R$
  4. 梯度估计:

$$
\nabla_\theta J \approx \frac{1}{N\sigma} \sum_{i=1}^{N} \hat{R}_i , \epsilon_i
$$

  1. $\theta \leftarrow \theta + \alpha \nabla_\theta J$

对称采样:同时评估 $\theta + \sigma\epsilon_i$ 与 $\theta - \sigma\epsilon_i$,减方差。

OpenAI 2017 用 ES 在 MuJoCo 上训练数千 CPU worker,无 GPU 反传,与 PPO 性能可比(同样本预算下 PPO 往往更优,但 ES 实现极简)。


三、CMA-ES

协方差矩阵自适应进化策略(Covariance Matrix Adaptation Evolution Strategy,CMA-ES)维护搜索分布 $\mathcal{N}(m, \sigma^2 C)$:

  • 采样种群 → 按适应度排序 → 更新均值 $m$、步长 $\sigma$、协方差 $C$
  • 自适应调整探索方向,在低维参数($< 1000$)连续优化上极强
适用 不适用
小网络、控制器参数化 百万级深度网络
超参搜索、策略结构搜索 需极高样本效率的 RL

深度 RL 中 CMA-ES 常用于 架构 / 超参 层,而非端到端 Atari。

段末注释:协方差矩阵自适应进化策略(Covariance Matrix Adaptation Evolution Strategy,CMA-ES)通过自适应高斯分布协方差进行黑盒连续优化;后文沿用 CMA-ES


四、Natural ES 与 PEPG

Natural Evolution Strategies 在参数空间用 Fisher 度量更新,与 TRPO 的自然梯度思想相通。

PEPG(Parameter Exploring Policy Gradients)直接对策略参数加噪 rollout,用回报加权更新——介于 ES 与 PG 之间。


五、Population-Based Training(PBT)

PBT 不完全是 ES,但属进化式训练

  • 维护种群 ${\theta_i}$,各自训练
  • 周期性:淘汰差个体,复制好个体参数 + 扰动超参(lr、$\gamma$ 等)
  • 在线自动调参 + 探索

DeepMind 用于 Dota、抓取等长训练任务;与 Ray Tune / W&B Sweeps 的「手动搜索」互补。


六、ES vs PPO 选型

场景 倾向
默认可微仿真、GPU PPO / SAC
不可微物理引擎、渲染器 ES
超大规模 CPU 并行 ES
高维深度网络 + 图像输入 PPO(样本效率)
控制器参数少(< 1k) CMA-ES
长训 + 自动调 lr PBT

七、伪代码(OpenAI ES)

1
2
3
4
5
6
7
8
9
10
11
12
13
theta = init_policy_params()
for gen in range(num_generations):
rewards = []
epsilons = []
for i in range(population_size):
eps = np.random.randn(len(theta))
R_plus = evaluate(theta + sigma * eps)
R_minus = evaluate(theta - sigma * eps)
rewards.append(R_plus - R_minus) # 或只用 R_plus
epsilons.append(eps)
rewards = (rewards - np.mean(rewards)) / (np.std(rewards) + 1e-8)
grad = sum(r * e for r, e in zip(rewards, epsilons)) / (len(epsilons) * sigma)
theta += learning_rate * grad

evaluate 跑完整 episode 累加回报,backward()


八、局限

局限 说明
样本效率 每代需 $N$ 次完整 episode
高维参数 噪声估计方差大,深度 CNN 难训
时序信用 整局回报,难精细归因
非平稳 与 MARL 结合少,研究多单 Agent

九、在算法谱系中的位置

1
2
3
4
5
6
7
8
黑盒优化
├─ CMA-ES(低维、无神经网络)
├─ OpenAI ES(神经网络 + 并行 rollout)
└─ PBT(种群 + 超参进化)

可微 RL
├─ Policy Gradient / PPO(梯度 + 信用分配)
└─ ES 的对照:无反传、易并行

十、小结

  • ES = 参数扰动 + 适应度排序 + 无环境梯度;OpenAI ESCMA-ES 为代表。
  • 优势:并行、黑盒;劣势:样本效率、高维深度网络
  • 工程默认仍用 PPO/SAC;不可微仿真或 CPU 集群可试 ES / PBT。
  • 上一篇:模仿与逆 RL · 对照:Policy Gradient
-------------本文结束感谢您的阅读-------------