6.2 传统调优方法网格与随机搜索


6.2 传统调优方法网格与随机搜索

本节摘要:最朴素的两种搜索:全枚举的网格搜索与随机采样。本节对比二者在高维空间上的成本差异,解释"随机搜索为什么常常更划算",并给出何时能用网格、何时必须换随机的判据。

先建立一个关于"预算"的直觉

阅读完本节,你应当能够:

  1. 说清网格搜索穷举全部组合的原理与维度灾难。
  2. 解释随机搜索为什么在高维能更划算地找到不错的点。
  3. 给出"该用网格还是随机"的判断条件。

最省事也最容易踩坑的起手式

聊完旋钮,第一个想到的往往是"把所有组合都试一遍"。这就是网格搜索(Grid Search):为每个旋钮划几个档,然后把所有笛卡尔积组合全跑一遍,取验证最好的。简单、可并行、好理解,但它的成本恐怖。

之所以说它"容易踩坑",是因为它给初次接触的人一个错误的安全感——"我全试过了,答案总不会差"。可它真正的成本上行得最凶:每多加一个旋钮、每个旋钮多加一档,总组合数就指数翻倍,你在"穷举"这个幻象里烧掉了大量算力。

维度灾难:组合数是怎么爆掉的

假设 4 个旋钮各有 5 档,组合是 5 的四次方等于 625 组。加到 8 个旋钮,就是 5 的八次方约 39 万组——在昂贵模型上这基本跑不动。问题不在于"试得多",而在于穷举的组合数随维度指数上涨

维数一高,网格像"把搜索空间均匀铺一层砖"——每个维都只踩到固定那几个点,还不一定踩到最值。而且它有个常被忽略的浪费:大多数组合往往都不好,花在它们身上的算力大多打水漂。

随机搜索:同样的预算,更有惊喜

随机搜索不变粒度高,是在每个旋钮定义域里随机采样 N 组去跑。乍看"随机会不会更差?"——其实在高维空间里,它用同样预算覆盖到的"互不相同的取值"更多:因为每个维度都能取到任意值,而不是像网格那样被钉在若干档上。

  • 网格均匀但稀疏,每个维只在固定几个点上采样。
  • 随机满域更密,同一预算能探索到更丰富的组合。

更深的直觉与贝叶斯优化衔接:很多时候只有少数几个旋钮影响结果。网格把大量组合花在"次要旋钮的排列"上;随机则更自然地让重要旋钮取到多样取值,更可能命中那个好点的邻域。这正是下一节聪明搜索的思想先声。

再说透一点:随机搜索真正的优势在于"无偏地铺满整个空间"。假如学习率是最要紧的旋钮,而它的取值范围横跨四个数量级(从 1e-4 到 1),网格多半只会踩到 1e-4、1e-3……这些整档,未必能踩中 3.5e-3 这种优值;而随机搜索会让 36 个样本里的大多数,其学习率都落在对结果影响最关键的那个区间里,更容易被你后续精修发现。换句话说,随机搜索"平均而言更不亏",这正是它常被文档默认推荐的原因。

# 示意:网格与随机的成本对比(概念性) import itertools, random choices = {"lr": [1e-4,1e-3,1e-2,1e-1], "bs": [32,64,128], "reg": [0,1e-4,1e-3]} grid = list(itertools.product(choices["lr"], choices["bs"], choices["reg"])) # 4*3*3=36 random_cfg = [(random.choice(...) for _ in range(36))] # 同预算但取值更自由

尺度跨度大的旋钮,记得用"对数均匀"采样

随机搜索还有一个网格最不好复制的好处:它能按你想要的分布来采样。对学习率、正则强度这类跨越多个数量级的旋钮,让它在对数尺度上均匀采样(即随机取 10^n 的指数 n)往往比均匀采样好得多——否则你会把大量样本砸在数值大的一端,而忽略了对数上同样重要的那一端。不少随机搜索实现默认就这么做,但你要知道自己为什么这么设:不是随便"撒点",而是为每个旋钮选一个合理的采样分布,这本身就是一次小的实验设计。

先粗后精:让预算一箭双雕

随机搜索在"定范围"这一步特别有用:它不直接给你一个终值,而是帮你把好点的邻域圈出来。所以一套省算力的经典流程是两阶段收口——第一段用随机搜索在很宽的范围内跑前一半预算,把你以为的最佳点邻域摸出来;第二段再在这个更窄的邻域里用小网格或再随机一轮,把答案钉得更准。这样既不浪费宽范围探索的信息,又不会像纯网格在宽范围里浪费一大半算力。很多实际项目就是这么跑的:先用随机把"大概在哪儿"找着,再用精搜把"具体定在哪儿"定下来。这套"粗搜定范围、精搜定终值"的两段式,也是在算力有限时性价比最稳的粗调策略——它既保留了宽范围探索带给你的"何处值得深挖"信息,又避免了在宽范围上整套铺满的浪费。

网格还没过时:什么时候仍值得用

随机搜索往往胜出,但网格并没过时:

情形 推荐 原因
旋钮少(2-3)且档位是离散枚举 网格 组合可控、直观
维数高或取值是连续量 随机 更划算、覆盖更密
要严格可复现、逐格报告 网格 好讲、好审计
有充足算力可铺开 各试 网格打底+随机补盲点

⚠️ 常见坑:把"搜到的验证最优"当真理。搜索本来就是拿验证信号选点,验证有噪声,审慎起见用多种子或交叉验证复核后再定,别把一次运气当结论(这条全册反复出现)。

💡 直觉:如果你预算只够跑一个数量级的搜索,随机搜索通常会比同预算的网格更快地帮你锁定"学习率先调两个档"。先用随机定范围,再用小网格/后续自适应方法在范围内精修,是省算力的经典起手。

本节要点回顾

  • 要点一:网格穷举全部组合,简单直观但组合数随维数指数爆炸。
  • 要点二:随机搜索同预算覆盖更丰富,高维下更划算。
  • 要点三:旋钮少且离散时网格还有价值,维数高/连续时优先随机。
  • 要点四:先用随机定大范围,再用小网格/精修方法收口。
  • 要点五:搜索结论要经多种子/交叉验证复核,别拿一次运气当真理。

随机搜索已经比网格聪明了,而真正的懂王是让搜索用历史结果反哺下一组——自动化调优。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U