超参数、模型参数

超参数

“超参数”(Hyperparameter)是在机器学习模型训练开始之前需要人为设定的参数,它们不是通过训练数据自动学习得到的,而是由开发者或研究人员根据经验、实验或调优策略来指定的。

定义

在训练开始前由开发者手动设定的配置项。

作用

控制模型结构、训练过程或正则化方式。

如何获得

不能从数据中学到,需通过经验、实验或调优方法确定。

是否需要人工设定

✅ 是。

为什么超参数重要?

超参数对模型性能影响极大。例如:

  • 学习率太大 → 模型不收敛;
  • 学习率太小 → 训练太慢甚至陷入局部最优;
  • 正则化太强 → 欠拟合;
  • 网络太深但数据太少 → 过拟合。

因此,超参数调优(Hyperparameter Tuning) 是机器学习工作流中的关键步骤。


常见的超参数调优方法

  1. 手动调参:基于经验尝试;
  2. 网格搜索(Grid Search):遍历预设的参数组合;
  3. 随机搜索(Random Search):随机采样参数组合,通常比网格更高效;
  4. 贝叶斯优化(Bayesian Optimization):智能地选择下一个最有希望的参数;
  5. 自动化工具:如 Optuna、Ray Tune、Hyperopt、Keras Tuner 等。

模型参数

模型在训练过程中自动学习的内部变量。

作用

直接决定模型的预测结果。

如何获得

通过优化算法(如梯度下降)从训练数据中学习得到。

是否需要人工设定

❌ 不需要,由训练过程自动更新。

例子

假设训练一个神经网络:

模型参数(Parameters)

神经网络中的权重(weights)和偏置(biases)。这些是模型在训练过程中自动学习的——通过反向传播和梯度下降不断调整。

模型类型 模型参数
线性回归 权重 w_1, w_2, ... ,w_n ,偏置 b
神经网络 所有层的权重矩阵 W 和偏置向量 b
逻辑回归 权重和偏置
支持向量机(SVM) 支持向量对应的系数(在对偶形式中)

超参数(Hyperparameters)

不能被模型自己学会,必须在训练前就定好:

类别 超参数示例
模型结构 神经网络层数、每层神经元数、卷积核大小、注意力头数
优化相关 学习率(learning rate)、优化器类型(Adam/SGD)、批量大小(batch size)
训练设置 训练轮数(epochs)、早停耐心值(patience)
正则化 L1/L2 正则化系数(λ)、Dropout 比例、数据增强强度

代码例子(神经网络)

用 PyTorch 训练一个全连接网络:

model = nn.Sequential(
    nn.Linear(784, 128),   # ← 这里的 784 和 128 是超参数(结构设计)
    nn.ReLU(),
    nn.Linear(128, 10)
)

optimizer = torch.optim.Adam(model.parameters(), lr=0.001)  # ← lr=0.001 是超参数
  • 模型参数:Linear 层中的权重矩阵和偏置向量(训练时自动更新)。

  • 超参数:输入/输出维度(784, 128, 10)、激活函数类型、优化器类型、学习率 0.001。

二者关系图

你(开发者)
   │
   ├── 设定超参数 ──▶ 控制 ──▶ 模型结构 & 训练过程
   │                         │
   │                         ▼
训练数据 ───────────▶ 模型自动学习 ──▶ 模型参数
                                 │
                                 ▼
                             预测结果

超参数 vs 模型参数 对比

项目 模型参数(Parameters) 超参数(Hyperparameters)
是否自动学习? ✅ 是(通过训练) ❌ 否(需人工设定)
例子 权重、偏置 学习率、网络结构、正则化强度
数量 通常非常多(百万级) 相对较少(几个到几十个)
调整方式 由优化算法自动更新 通过交叉验证、网格搜索、贝叶斯优化等手动/自动调优

原文出处:/show_1GW2gYvYnxXc.html