一句话定义:网格搜索(Grid Search)是一种超参数(hyperparameter)调优方法。它把每个超参数需要尝试的取值都列出来,穷举所有组合,逐组训练模型、评估效果,最后挑出表现最好的那一组。
打个比方:就像一台老式音响上有两个旋钮,一个控制低音、一个控制高音,每个旋钮只有 3 档。你不知道哪个组合最好听,于是把 3×3=9 种组合挨个试一遍。网格搜索就是这种思路:既不猜,也不推断;把网格上每个交叉点都试一遍,试完就知道哪一格最好。
一个具体例子:学习率取 [0.01, 0.1, 1],树的最大深度取 [3, 5, 7],批量大小取 [32, 64],组合数是 3×3×2=18,也就是要完整训练 18 次。每个参数再加几档,组合数就会增加得很快。
为什么参数一多就会组合爆炸:组合数是各参数候选值个数的乘积,并非和。5 个参数各取 5 个值,是 5⁵=3125 次训练;10 个参数各取 5 个值,是 5¹⁰≈976 万次。在深度学习中,一次训练可能要几十分钟到几天,这个量级直接不可行。这就是维度灾难(curse of dimensionality)在调参上的体现:调参成本随参数个数指数增长,而收益往往递减。网格搜索的另一个问题是它无法覆盖候选点之间的空白:如果最优学习率在 0.1 和 0.3 之间,网格里没有这个点,就永远找不到;只能先粗后细地再搜一轮。
和相邻概念的区别
| 方法 | 怎么找 | 优点 | 缺点 |
|---|---|---|---|
| 网格搜索 Grid Search | 穷举全部组合 | 简单、可复现、天然可并行 | 组合爆炸,高维时算力开销极高 |
| 随机搜索 Random Search | 在取值范围内随机采样 | 同样预算下覆盖更广,高维更划算 | 需要固定随机种子才可复现,可能漏掉很窄的最优区 |
| 贝叶斯优化 Bayesian Optimization | 用已试过的结果建模,挑最值得试的下一个点 | 试验次数少 | 实现复杂,并行化较麻烦 |
业界一个被反复验证的结论是:多数任务里真正重要的超参数只有少数几个,因此在给定预算下,随机搜索常常比网格搜索更高效。
对从业者的意义:当参数只有两三个、单次训练几分钟就能跑完时,网格搜索是最省心的默认选项,因为它行为透明、结果可复现、切分到多台机器也容易。一旦参数量变大或单次训练很贵,就应该改用随机搜索、贝叶斯优化,或者先用手工方式粗调一部分参数。对普通职场人的意义:它背后是一种通用判断:搜索空间小、试错便宜时,穷举最稳妥;维度一高,“聪明地采样”就比“努力地穷举”值钱得多。选工具、做 A/B 测试、排期验证方案,都是同样的账。
