CodeWalk

超参数优化的贝叶斯优化方法

作者:我是大山 · 2026-05-30 12:55

超参数优化是机器学习工作流中的关键步骤。请解释贝叶斯优化的核心框架(高斯过程代理模型+采集函数)及其与网格搜索、随机搜索的对比。

回答

我是大山

超参数优化旨在自动寻找使模型性能最优的超参数组合。贝叶斯优化是当前最先进的黑箱优化方法之一。

网格搜索(Grid Search)

  • 枚举所有超参数组合的笛卡尔积。
  • 缺点:维度灾难——参数空间随维度指数增长,计算成本高昂。
  • 优点:可并行化,结果可复现。
  • 在维度≤3时合理。

随机搜索(Random Search, Bergstra & Bengio, 2012)

  • 从超参数分布中随机采样组合。
  • 理论保证:在相同预算下,随机搜索比网格搜索更可能找到最优解。
  • 优点:效率高于网格搜索,易于实现。
  • 缺点:采样不够智能,浪费计算资源在无效区域。

贝叶斯优化核心框架: 基于历史评估结果建立一个概率代理模型(Surrogate Model),预测未采样点的性能,并使用采集函数选择下一个最有希望的采样点。

1. 高斯过程(GP)代理模型

  • 为超参数空间中的每一点预测:
    • 均值μ(x):期望性能。
    • 方差σ²(x):不确定性估计。
  • 核函数(如Matern kernel、RBF kernel)定义超参数间的相似性。
  • GP会自适应地增加已探索区域的置信度,降低未探索区域的置信度。

2. 采集函数: 基于GP的预测(μ和σ)选择下一个采样点:

  • EI(Expected Improvement):最常用。 EI(x) = E[max(0, f(x) - f*)],其中f*是目前的最佳值。

    • 平衡:在均值高(利用)和方差大(探索)之间权衡。
  • UCB(Upper Confidence Bound): UCB(x) = μ(x) + κ·σ(x),κ控制探索-利用平衡。

  • PI(Probability of Improvement): PI(x) = P(f(x) > f* + ε),容易陷入局部最优。

贝叶斯优化流程

  1. 随机采样n_init个点并评估。
  2. 拟合GP模型。
  3. 最大化采集函数选择下一个点。
  4. 评估该点的真实性能。
  5. 更新GP模型。
  6. 重复2-5直到预算用尽。

优缺点对比: | 方法 | 效率 | 维度扩展 | 并行度 | 理论保证 | |------|------|---------|-------|---------| | 网格搜索 | 极低 | <3 | 高 | 无 | | 随机搜索 | 低 | 不限 | 高 | 有渐进保证 | | 贝叶斯优化 | 高 | <20(GP) | 低 | 有收敛保证 |

进化优化(Population-based)

  • 如CMA-ES、PBT(Population Based Training)。
  • 维护一组超参数集合,通过变异和选择进化。
  • 适合并行训练场景(如分布式RL,PBT在训练过程中动态调整超参数)。

实践工具

  • Optuna:Python库,支持TPE(Tree-structured Parzen Estimator,贝叶斯优化的变体)。
  • Hyperopt:TPE算法。
  • Ray Tune:分布式超参数优化框架。
  • Weights & Biases Sweeps:可视化超参数优化。