一句话定义:超参数(Hyperparameter)是在训练开始之前就由人设定好的配置项,模型自己不会去学它,只能被动接受。
它是"人定的规矩",不是"模型学出来的本事"
拿烤面包打比方。烤箱温度、烘烤时长、烤盘放哪一层,这些是你在按下启动键之前就得先定好的;而面团在炉子里怎么膨胀、表皮上色到什么程度,是食材自己发生的变化,你没法"让面团自己决定温度"。
训练一个模型也是这个道理。像学习率(Learning Rate,每走一步迈多大)、批大小(Batch Size,一次看多少条样本)、训练轮数(Epoch,把数据过几遍)、网络层数和每层宽度、正则化强度、AI 词典:Dropout">Dropout 比例,这些都得在开训前写进配置里。开了训它们基本就不动了。而权重(Weight,也叫参数 Parameter)正相反:它是训练过程中一步步被优化算法改出来的,模型文件里绝大部分体积都是它。
两者最直观的区别在于数量级:超参数通常就几个到几十个,权重则是海量。
| 维度 | 超参数 Hyperparameter | 权重 Parameter / Weight |
|---|---|---|
| 谁决定 | 训练前由人设定,或由调参算法搜索 | 训练中由优化算法自动更新 |
| 数量 | 通常几个到几十个 | 极多,占满模型文件 |
| 一次训练中 | 一般固定不变 | 每个训练步都在变 |
| 例子 | 学习率、批大小、轮数、层数 | 各类矩阵权重、偏置项 |
| 调错的代价 | 不收敛、过拟合、算力白烧 | — |
为什么说调错了,再大的模型也白搭
模型规模像是发动机马力,超参数更像是传动比。马力再大,挡位挂错了也跑不起来。
学习率设太大,损失会来回震荡甚至发散,模型越训越糊涂;设太小,收敛慢得像爬,算力烧完了还没走到位。批大小和轮数配得不合适,容易过拟合(Overfitting,在训练集上表现很好、见到新数据就露怯)或欠拟合(Underfitting,连训练集都没学会)。这些毛病跟模型有多少参数关系不大——几亿参数的大模型照样能被一个糟糕的学习率拖垮。而且调一次要重训一遍,成本是实打实的,所以先在小规模上做代理实验、由粗到细地筛,比一上来就在大模型上网格搜索聪明得多。想省事也可以交给超参数搜索(Hyperparameter Search)来做,常见的有随机搜索(Random Search)和贝叶斯优化(Bayesian Optimization),自动机器学习(AutoML)工具里也常带这类功能。
对普通人的意义
即使不训练模型,你也在跟超参数打交道。调用大模型接口时设置的温度(Temperature)、最大输出长度这类推理参数,广义上同属"人来定的旋钮":温度调低输出更稳更保守,调高更发散更有创意。改一个数,体验立刻不一样。
所以下次看到"模型效果不好",先别急着怪模型不够大,翻翻配置文件——那些没人注意的旋钮,往往才是关键。具体工具和平台的参数默认值各有差异,以官方页面为准。
