一句话定义
超参数搜索(Hyperparameter Search)就是系统地试出模型里那些“不靠训练自动学、只能由人预先设定”的数值——比如学习率(learning rate)、批大小(batch size)——挑出表现较好的一组。
它到底在搜什么
训练模型时有两类数。一类是权重(weight)、偏置,靠反向传播自动更新;另一类是学习率、批大小、网络层数、正则化强度这类,模型自己算不出来,得人来定。这些“人定的数”就是超参数(hyperparameter),搜索就是替它们找组合。
打个比方,像调洗衣机:水位、转速、时长这些旋钮,机器不会自己告诉你哪组最好;衣服材质和水温才是它内部处理的事。你要么凭经验拧,要么一组组试,看哪组洗得干净又不伤衣服。
几种常见做法
- 网格搜索(Grid Search):每个参数取几个候选,排列组合全试一遍。好懂,但参数一多组合数指数爆炸。
- 随机搜索(Random Search):在区间里随机撒点。看着粗糙,高维时常常比网格更划算——网格里大量试次浪费在不重要的参数上。
- 贝叶斯优化(Bayesian Optimization):根据已试过的结果推测下一组哪儿更可能好,像有经验的师傅,而不是瞎撞。
- 早停(Early Stopping):一组配置跑到一半发现不行就掐掉,把预算留给有希望的。
和“参数”别搞混
| 谁决定 | 例子 | 怎么得到 | |
|---|---|---|---|
| 参数 | 训练自动学 | 权重、偏置 | 梯度下降 |
| 超参数 | 人定或搜索 | 学习率、批大小、层数 | 网格/随机/贝叶斯 |
为什么容易过拟合验证集
验证集(validation set)本来是拿来看一眼的。可一旦用它反复挑配置,试了几百组之后,胜出的那组很可能只是碰巧踩中了这批数据的噪声。像招聘用同一套笔试题筛人,选出来的不一定真强,只是最会答这套题;换一批测试数据,成绩就掉。这叫对验证集过拟合,和模型对训练集过拟合是两码事。
对策也不玄:留一份独立的测试集,最后只揭晓一次;用交叉验证(cross-validation)多折平均摊薄运气;把搜索范围、随机种子、试了多少组记下来,别只盯最好那一格。
对从业者和普通人的意义
干这行的,先搜最关键的一两个(通常是学习率和正则强度),在对数刻度上粗撒(如 1e-2、1e-3、1e-4),再局部细化;别一上来就全量开搜,先用小规模实验摸清方向。
不干这行的,它其实就是“凭经验试参数”的正式版:广告出价倍率、缓存大小、排班人数,凡是“结果取决于几个你拍脑袋定的数”的场合都能用。方法论上的那句教训最值钱:拿同一把尺子量太多次,你就会开始骗自己。具体工具和默认值,以官方页面为准。
