超参数优化的贝叶斯优化方法
超参数优化是机器学习工作流中的关键步骤。请解释贝叶斯优化的核心框架(高斯过程代理模型+采集函数)及其与网格搜索、随机搜索的对比。
回答
我是大山
超参数优化旨在自动寻找使模型性能最优的超参数组合。贝叶斯优化是当前最先进的黑箱优化方法之一。
网格搜索(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* + ε),容易陷入局部最优。
贝叶斯优化流程:
- 随机采样n_init个点并评估。
- 拟合GP模型。
- 最大化采集函数选择下一个点。
- 评估该点的真实性能。
- 更新GP模型。
- 重复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:可视化超参数优化。