超参数怎么调优?网格搜索、随机搜索、贝叶斯优化有什么区别?
简化版
超参数是训练前要人为设定、不在一次常规拟合中由训练目标直接估计、而由外层流程选择的配置(如学习率、树深、正则强度、K 值)。调优就是找一组让模型泛化最好的超参数,都在交叉验证上评估。三种主流方法:网格搜索(Grid Search)——把每个超参的候选值排列组合、全部试一遍,简单彻底但组合爆炸、维度高时极慢;随机搜索(Random Search)——在参数空间随机采样若干组试,相同预算下常比网格搜索更快找到好参数(因为重要参数被更充分探索);贝叶斯优化(Bayesian Optimization)——用已试结果建代理模型、智能地选下一组最有希望的参数,在合适的低维昂贵目标上常以更少试验找到较好配置,适合训练昂贵的场景。
详细版
超参数 vs 参数:
- 参数:模型从数据里学出来的(如线性回归的权重 w、树的分裂点)。
- 超参数:训练前人为设定的(学习率、树深、正则 λ、K、C、γ、树的数量…),需调优。
三种调参方法对比:
| 方法 | 思路 | 优点 | 缺点 |
|---|---|---|---|
| 网格搜索 | 候选值全组合遍历 | 简单、彻底、可并行 | 组合爆炸、维度高极慢 |
| 随机搜索 | 随机采样若干组 | 相同预算常更优、可控成本 | 有随机性、非最优保证 |
| 贝叶斯优化 | 用代理模型指导下一步 | 少试验找好解、样本高效 | 实现复杂、串行为主 |
关键: 所有方法都在交叉验证上评估每组超参、选平均得分最好的;且要在独立测试集上做最终确认(防对验证集过拟合)。
完整版教学
一、先分清:超参数不是参数
- 参数(parameters):模型从训练数据中自动学到的量——线性回归的系数 w、逻辑回归的权重、神经网络的连接权重、决策树的分裂特征和阈值。它们由训练过程(如梯度下降)求出。
- 超参数(hyperparameters):训练开始前人为设定、模型自己学不出来的配置——学习率、正则强度 λ、树的深度、树的数量、K-means 的 K、SVM 的 C 和 γ、KNN 的 K……
超参数直接决定模型的复杂度和学习方式,选得好不好对效果影响巨大。「调参」就是在候选空间里搜索一组让模型泛化最好的超参数。
参数与超参数是相对于训练层级的区分,不表示某个数数学上永远不能学习。例如正则强度 λ 通常由外层交叉验证选择,也可放进双层优化或经验贝叶斯框架估计;常规面试语境仍将它称为超参数。
条件超参数也要正确建模:选择 kernel=linear 时 γ 无效,不能把全部组合都当成同一个矩形网格,否则既浪费预算,也会干扰配置间的公平比较。
二、评估的载体:交叉验证
调参的本质是「试很多组超参数,看哪组好」。「好」必须用交叉验证来衡量——每组超参数都跑一次交叉验证,取平均验证得分,选得分最高的那组(详见交叉验证专题)。
关键红线:不能用测试集来调参。测试集只在最后确认泛化能力用;用它调参会「偷看答案」,导致对测试集过拟合、评估虚高。严谨做法是嵌套交叉验证(内层调参、外层评估)。
三、方法一:网格搜索——全组合遍历
网格搜索(Grid Search) 最直接:为每个超参数列出候选值,把所有超参数的候选值做笛卡尔积、逐一组合全试一遍:
学习率 ∈ {0.01, 0.1, 0.3}
树深 ∈ {3, 5, 7}
→ 组合 = 3 × 3 = 9 组,每组跑交叉验证,选最优
- 优点:简单、彻底(候选内不遗漏)、天然可并行。
- 缺点:组合数随超参数个数指数爆炸(维度灾难)——5 个超参各 5 个候选就是 5⁵=3125 组,每组还要跑 K 折,成本巨大。且候选值是人为离散设定的,可能错过网格之间的更优值。
网格搜索适合超参数少、候选值不多的情况。
四、方法二:随机搜索——随机采样
随机搜索(Random Search) 不遍历所有组合,而是在参数空间里随机采样固定数量的组合来试(如随机试 50 组)。
为什么随机搜索常常更高效(重要认知):真实问题中,往往只有少数超参数真正重要,其余影响很小。
网格搜索:在「不重要参数」上浪费了很多次尝试(重复试它的不同值)
随机搜索:每次采样让「重要参数」都取到不同值 → 重要维度探索更充分
在相同的试验预算下,随机搜索通常能在重要超参数上探索到更多不同取值,因此常比网格搜索更快找到好的配置。而且随机搜索的成本可控(想试多少组就多少组),还能覆盖连续取值。缺点是有随机性、不保证找到全局最优。
五、方法三:贝叶斯优化——智能地选下一组
网格和随机搜索都是「盲目」试——每次尝试不利用之前的结果。贝叶斯优化(Bayesian Optimization) 更聪明:用已经试过的结果建立一个「代理模型」(surrogate,如高斯过程),预测参数空间里哪些区域最有希望,然后有针对性地选下一组参数去试。
流程直觉:
1. 试几组初始参数,记录得分
2. 用代理模型拟合「参数 → 得分」的关系(含不确定性)
3. 用「采集函数」权衡「探索未知区域」和「利用已知好区域」,选下一组最值得试的参数
4. 试它、更新代理模型,重复
- 优点:样本高效——在合适问题上常用更少的试验次数找到较好超参数,较适合单次训练非常昂贵且搜索维度可控(如大模型、深度网络)的场景。
- 缺点:实现复杂、主要是串行(每步依赖前面结果,不易并行)、初期有开销。
- 工具:Optuna、Hyperopt、scikit-optimize 等。
代理模型给出目标值及不确定性,采集函数再权衡 exploitation 与 exploration。它不是每次都选预测均值最高点,也没有全局最优保证。
| 场景 | 更现实的选择 |
|---|---|
| 低维、单次训练昂贵 | GP 或 TPE 贝叶斯优化 |
| 高维、强条件参数 | TPE、随机搜索 |
| 可大量并行或有预算层级 | ASHA、Hyperband |
标准高斯过程方法在高维、强噪声和大规模并行下可能变差,不能把智能搜索当成无条件优于随机搜索。
贝叶斯优化是否省预算,要用相同总计算成本与随机搜索比较。目标噪声大时,应重复评估或让代理模型显式表达噪声。维度很高、条件参数很多或需要大规模并行时,标准高斯过程方法未必占优。工程上还要记录失败试验、随机种子和早停资源,才能复现实验结论。
六、实践建议
- 超参少、候选少 → 网格搜索(简单彻底)。
- 超参多、想控成本 → 随机搜索(性价比高,常作默认)。
- 单次训练很贵、想省试验次数 → 贝叶斯优化(Optuna 等)。
- 先粗后细:先大范围随机/粗网格找到好区域,再在附近细搜。
- 对数尺度采样:学习率、正则强度等跨数量级的参数,在对数尺度上采样(如 10⁻⁴~10⁻¹)。
- 配合早停:GBDT/神经网络调参时用早停省时间。
- 别用测试集调参,用交叉验证;最终在独立测试集确认。
七、常见追问
- 超参数和参数区别? 参数是模型学出来的(权重、分裂点);超参数是训练前人设的(学习率、树深、λ、K)。
- 随机搜索为什么常比网格好? 相同预算下重要超参数被更充分探索,不在不重要参数上浪费。
- 贝叶斯优化好在哪? 利用历史结果指导搜索,常以更少试验找到较好配置,适合训练昂贵场景。
- 调参能用测试集吗? 不能——用交叉验证,测试集只做最终确认,否则过拟合验证集。
- 调参和交叉验证关系? 每组超参都在交叉验证上评估、选平均最优。
八、先算拟合预算,再决定搜索算法
4 个超参数各放 5 个网格值,会产生 5⁴=625 组;配 5 折交叉验证就是 3125 次拟合。若随机搜索预算为 60 组,则只需 300 次拟合,成本约为网格的 9.6%。这并不保证随机搜索得分更高,只表示它能把固定预算分配到更多不同的连续坐标。
| 搜索器 | 适合的预算形态 | 主要风险 |
|---|---|---|
| Grid | 少量离散、强交互且范围已知 | 组合爆炸 |
| Random | 维度较多、可并行、先找范围 | 结果有随机波动 |
| Bayesian | 单次评估昂贵、试验数有限 | 代理模型开销与串行依赖 |
| Hyperband/ASHA | 可按轮数逐步淘汰 | 早期指标未必代表最终 |
定义搜索空间(连续参数常用 log-uniform)
→ 固定 CV 与随机种子策略
→ 搜索只看训练/验证数据
→ 锁定配置并全量重训
→ 测试集只评估一次
贝叶斯优化用采集函数权衡 exploitation 与 exploration,不是“每次都选预测均值最高点”。在高维、强条件参数或大量并行 worker 下,TPE、随机搜索和多保真方法可能比标准高斯过程更合适。
心法:调参先问“允许多少次 fit、每次多贵”,再选 Grid、Random 或 Bayesian,而不是按算法名气选择。
九、常见误区与追问
- 误区:网格搜索覆盖候选就等于找到连续空间全局最优。 它只穷举人为给定的离散网格。
- 误区:贝叶斯优化必然比随机搜索好。 效果依赖维度、噪声、代理模型、预算和并行方式。
- 追问:学习率为什么常按对数分布采样? 它的有效变化通常跨数量级,线性均匀会浪费大量点。
- 追问:阈值算超参数吗? 它是决策层配置,也应只在验证数据选择,不能用测试集调。
- 追问:搜索结束后为什么还要重训? CV 中每个模型只见过部分训练数据,锁定配置后应利用全部训练数据。
十、加强记忆
超参数是训练前人设、由外层验证流程选择的配置(学习率、树深、λ、K、C/γ…),区别于从数据学出的参数(权重、分裂点);调参就是在交叉验证上找泛化最好的一组,绝不用测试集调。三法:网格搜索(候选值全组合遍历,简单彻底但组合爆炸、维度高极慢、会错过网格间取值);随机搜索(随机采样若干组,相同预算下因重要超参数探索更充分而常更优、成本可控);贝叶斯优化(用已试结果建代理模型、智能选下一组最有希望的参数,样本高效、适合训练昂贵,但复杂且串行)。实践:超参少用网格、想控成本用随机、训练贵用贝叶斯,先粗后细、对数尺度采样、配合早停。