返回首页

Optuna 中的 CMA-ES:无梯度超参数优化

Optuna 库中 CMA-ES 算法的详细技术分解。初始化、采样、协方差矩阵和步长的适应的解释。在机器学习任务中使用实用推荐。

CMA-ES 如何在无梯度情况下找到最优超参数
Advertisement 728x90

Optuna 中的 CMA-ES:超参数优化的进化策略逐步解析

CMA-ES 算法是一种无导数优化方法,能够有效解决复杂、多模态或噪声搜索空间中的超参数调优任务。与基于梯度的优化方法不同,它不需要目标函数可微分,并且对局部最小值具有鲁棒性。本文将以 2D Rosenbrock 函数为例,详细剖析其工作原理,清晰展示算法如何调整步长和搜索方向。

初始化:初始搜索条件

在 CMA-ES 开始之前,需要设置三个关键参数:

  • 初始均值 (m) — 搜索空间中起始点的坐标。在我们的例子中为 (0, -1)。
  • 协方差矩阵 (C) — 定义搜索区域的形状和方向。初始时为单位矩阵,在中心周围形成圆形对称。
  • 全局步长 (σ) — 搜索尺度。设置为 0.8,对应 95% 概率点落入内的置信椭圆半径 ≈1.96。

这些参数构成了初始正态分布,用于生成候选点。重要的是:即使起始点远离最优解,算法也能通过其进化机制进行适应。

Google AdInline article slot

候选点的生成与评估

在每一轮迭代中,使用公式生成 λ 个候选点(示例中为 15 个):

x_k ~ m + σ · N(0, C)

其中 N(0, C) 是均值为零、协方差矩阵为 C 的多变量正态分布。每个候选点是一组超参数,输入模型以评估目标函数(例如损失值)。计算函数值后,选择 μ 个最佳候选点(示例中为 7 个),作为更新分布的基础。

通过加权平均更新搜索中心

新分布的中心通过最佳点的加权和计算:

Google AdInline article slot
m_new = Σ w_i · x_i

权重 w_i 按对数尺度计算:

w_i = [ln((λ+1)/2) - ln(i)] / Σ[ln((λ+1)/2) - ln(j)]

这确保了最佳候选点贡献指数级更大。例如,第一个点的权重是第七个点的几倍。这种方法模拟“自然选择”:成功的解对下一代影响更大。

调整搜索的形状与尺度

CMA-ES 的核心优势在于它能动态适应目标函数的拓扑结构。这通过两种机制实现:

Google AdInline article slot

更新协方差矩阵

更新公式:

C_new = (1 - c_μ) · C_old + c_μ · C_μ

其中 C_μ 是基于最佳点相对于旧中心的归一化偏移构建的协方差矩阵。参数 c_μ(学习率,例如 0.9)控制历史数据与新数据间的平衡。如果最佳点沿特定方向对齐(例如 Rosenbrock 函数的“谷”方向),C 矩阵会将搜索区域变形为沿该方向拉长的椭圆,从而加速收敛。

调整全局步长 (σ)

步长使用以下公式更新:

σ_new = σ_old · exp( (c_σ / d_σ) · (||p_σ|| / E[||N(0,I)||] - 1) )

其中:

  • p_σ — 进化路径,累积中心移动方向,跨越多轮迭代。
  • E[||N(0,I)||] — 随机步长的参考长度(n 维空间中 ≈√n)。
  • c_σd_σ — 学习率和阻尼参数。

如果范数 ||p_σ|| 超过参考值,表示持续朝一个方向移动——步长增大。如果较低,则移动不稳定,步长减小以精细定位。

CMA-ES 在机器学习实践中的优势与局限

CMA-ES 特别适用于以下场景:

  • 不可微、噪声或不连续的目标函数。
  • 存在众多局部最小值的搜索空间。
  • 超参数敏感度差异大(例如 learning_rate 与 batch_size)。

不过,它也有局限:

  • 计算复杂度随维度增长(存储 C 需要 O(n²))。
  • 在平滑函数上需要比 TPE 更多的迭代。
  • 评估预算很小时(< 20)效果不佳。

在 Optuna 中的使用建议:

  • 对于 >5 个超参数或复杂景观的任务,使用 CmaEsSampler
  • 设置 restart_strategy='ipop',在卡住时自动重启并增大 σ。
  • 对于离散参数,使用 CategoricalCmaEsSampler
  • 始终在验证数据集上与 TPE 和 RandomSearch 进行比较。

关键要点

  • CMA-ES 不使用梯度——适用于任何黑盒函数。
  • 协方差矩阵适应使沿目标函数“谷底”的进展高效。
  • 动态步长防止过早收敛并加速最终精炼。
  • 在中等至大量迭代(>50)和高维空间中表现出色。
  • 在 Optuna 中,只需更换采样器即可启用——无需修改模型代码。

该算法特别适用于标准方法(如网格搜索或贝叶斯优化)失效的任务:不稳定指标、复杂参数交互、缺乏平滑性。其进化特性使其成为研究人员应对真实世界“棘手”机器学习问题的强大、通用工具。

— Editorial Team

Advertisement 728x90

继续阅读