更新于 2026年8月17日

原页面: https://developers.google.com/machine-learning/crash-course/linear-regression/hyperparameters

线性回归:超参数#

「超参数(Hyperparameters)」 是用于控制训练过程不同方面的变量。3个常见的超参数包括:

相比之下,「参数(Parameters)」是模型本身的变量,例如权重和偏置。也就是说,超参数是由你设置的值,而参数是模型在训练过程中计算得到的值。

MLWM:超参数(Hyper Parameter) 是决定模型训练过程和最终性能的关键配置。超参数是指那些不能通过数据集直接训练更新得到,而是需要我们手动设定的参数。它们在训练开始前就已经确定,用于控制算法的运行逻辑和模型的复杂度。

学习率#

「学习率(Learning rate)」是一个你设置的浮点数,它会影响模型收敛的速度。如果学习率设置过低,模型可能需要很长时间才能收敛。然而,如果学习率设置过高,模型反而永远不会收敛,只会在能够使损失最小化的权重和偏置附近来回跳动。我们的目标是选择一个既不太高也不太低的学习率,使模型能够快速收敛。

学习率的作用是决定梯度下降过程中每一步对权重和偏置进行调整的幅度。模型会将梯度乘以学习率,得到下一轮迭代的模型参数(权重和偏置值)。在梯度下降过程的第3步中,“沿负斜率方向移动的小步长”指的就是学习率。

MLWM: 梯度下降计算公式为 $w=w-\alpha \cdot \frac{\partial J}{\partial w}$,其中 $\alpha$ 便是学习率。

新旧模型参数之间的差值与损失函数的梯度成正比。例如,如果梯度较大,模型会迈出较大的步伐;如果梯度较小,模型会迈出较小的步伐。举例来说,如果梯度的大小为 2.5,学习率为 0.01,那么模型会将参数改变 0.025。

理想的学习率能够帮助模型在合理的迭代次数内收敛。在图 20 中,损失曲线显示模型在前 20 次迭代中明显改善,然后开始收敛:

图 20. 损失曲线先呈现陡峭下降,然后趋于平缓
图 20. 使用合适的学习率训练的模型,损失曲线快速收敛

相反,过小的学习率可能导致模型需要过多的迭代才能收敛。在图 21 中,损失曲线显示模型在每次迭代之后只取得了很小的改进:

图 21. 损失曲线接近 45 度的斜率
图 21. 使用较小学习率训练的模型的损失曲线

当然,过大的学习率则会让模型永远无法收敛,因为每次迭代要么让损失在最小值附近跳动,要么让损失持续增大。在图 22 中,损失曲线显示模型在每次迭代后损失先下降后上升;而在图 23 中,损失在后面的迭代中不断增大:

图 22. 损失曲线呈现锯齿状的上下波动
图 22. 使用过大学习率训练的模型的损失曲线,损失曲线剧烈波动,随迭代次数增加而上下跳动
图 23. 损失曲线在后面的迭代中不断增大
图 23. 使用过大学习率训练的模型的损失曲线,损失曲线在后面的迭代中急剧上升

练习:检查你的理解#

什么是理想的学习率?

  • A. 0.01

  • B. 理想的学习率取决于具体问题。

  • C. 1.0

点击查看答案
选择 B。

每个模型和数据集都有其对应的理想学习率。

批量大小#

批量大小(Batch size)也是一个超参数,它表示模型在更新权重和偏置之前会处理的样本(Examples)数量。你可能认为模型应该在更新权重和偏置之前,对数据集中的每一个样本都计算一次损失。然而,当数据集包含数十万甚至上百万个样本时,使用全批量并不现实。

两种在平均意义上获得合适梯度、无需查看数据集中每一个样本就能更新权重和偏置的常见方法是随机梯度下降(Stochastic Gradient Descent, SGD) 和小批量随机梯度下降(Mini-batch Stochastic Gradient Descent):

  • 随机梯度下降(SGD):随机梯度下降在每次迭代中只随机使用一个样本(即批量大小为 1)。只要迭代次数足够,SGD 也能工作,但过程非常嘈杂。这里的“噪声”指的是训练过程中出现的波动,这些波动会让损失在某次迭代中不降反升。“随机”一词表明组成每个批量的那一个样本是随机选取的。

    请注意在下图中,损失在使用 SGD 更新权重和偏置时会出现轻微波动,这会导致损失图中出现噪声:

    图 24. 损失曲线先陡峭下降,然后趋于平缓,但伴随大量细小的波动
    图 24. 使用随机梯度下降(SGD)训练的模型,损失曲线中出现噪声

    请注意,使用随机梯度下降时,噪声会出现在整条损失曲线上,而不仅仅是在收敛阶段。

  • 小批量随机梯度下降(Mini-batch SGD):小批量随机梯度下降是全批量梯度下降和 SGD 之间的折中方案。对于 $ N $ 个数据点,批量大小可以是大于 1 且小于 $ N $ 的任意值。模型会随机选择每个批量中包含的样本,对这些样本的梯度取平均,然后在每次迭代中只更新一次权重和偏置。

    确定每个批量中的样本数量取决于数据集和可用的计算资源。通常,较小的批量大小行为类似 SGD,而较大的批量大小行为类似全批量梯度下降。

    图 25. 损失曲线先陡峭下降,然后趋于平缓,在收敛附近波动更小
    图 25. 使用小批量 SGD 训练的模型

最后,在训练模型时,你可能会觉得噪声是一种应该被消除的不良特征。然而,一定程度的噪声反而是有好处的。在后续模块中,你将学习噪声如何帮助模型更好地 泛化(Generalize),并在 神经网络(Neural Network) 中找到最佳的权重和偏置。

MLWM: 一般来讲,我们在训练模型的时候几乎不会使用随机梯度下降,也极少使用小批量随机梯度下降,最常用的是使用小批量梯度下降。所谓小批量梯度下降是指讲整个数据集以固定的批大小(batch size)分成若干份,然后每一次迭代的时候就使用其中一份来更新模型参数。相关内容可以参见「Softmax分类实战:PyTorch DataLoader 随机梯度下降与小批量梯度下降」

训练轮数#

在训练过程中,一个「训练轮数(Epoch)」表示模型已经将训练集中的每个样本处理了一次。例如,给定一个包含 1,000 个样本的训练集,并且小批量大小为 100 个样本,那么模型需要 10 次「迭代(Iteration)」才能完成一个训练轮次。

训练通常需要很多个轮次,也就是说,需要对训练集中的每个样本进行多次处理才能获得一个好的效果。

训练轮数是一个你在模型开始训练之前设置的超参数。在许多情况下,你需要通过实验来确定模型收敛所需的训练轮数。一般来说,更多的训练轮次会产生更好的模型,但同时也需要更长的训练时间。

图 26. 全批量是整个数据集,小批量是数据集的一个子集,训练轮次是十个小批量的完整遍历
图 26. 全批量与小批量对比

下表说明了批量大小和训练轮数与模型更新参数次数之间的关系。

批量类型 权重和偏置更新的时机
全批量 模型使用数据集中的所有样本进行参数更新。例如,如果数据集包含 1,000 个样本,并且模型训练 20 个轮次,那么模型会更新权重和偏置 20 次,每个轮次更新一次。
随机梯度下降 模型使用数据集中的1个样本进行参数更新。例如,如果数据集包含 1,000 个样本,并且训练 20 个轮次,那么模型会更新权重和偏置 20,000 次。
小批量随机梯度下降(mini-batch SGD) 模型使用每个批量中的样本进行参数更新。例如,如果数据集包含 1,000 个样本,批量大小为 100,并且模型训练 20 个轮次,那么模型会更新权重和偏置 200 次。

练习:检查你的理解#

1. 使用 mini-batch SGD 时,最佳的批量大小是多少?

  • A. 每批 100 个样本。

  • B. 视情况而定。

  • C. 每批 10 个样本。

点击查看答案
选择 B。

理想的批量大小取决于数据集和可用的计算资源。

2. 以下哪一项陈述是正确的?

  • A. 学习率翻倍可能会减慢训练速度。

  • B. 较大的 batch size 不适合包含许多异常值的数据。

点击查看答案
选择 A。

A. 翻倍学习率可能导致学习率过大,从而造成权重“来回跳动”,进而增加收敛所需的时间。当然,最佳超参数始终取决于你的数据集和可用的计算资源。 B. 通过将更多梯度求平均,较大的批量大小有助于减轻数据中存在异常值的负面影响。

关键术语:

阅读 --