什么是模型参数

模型参数是属于模型并从数据中学习得到的值。它们是训练过程调整、推理过程使用的值。

对于一个简单的线性模型,

[
y = wx + b
]

(w) 和 (b) 都是参数。模型会学习它们,而不是在每次预测时将它们作为新的输入接收。

神经网络将参数存储在张量中,张量是由数字组成的多维数组。单个张量可能包含许多标量参数。当描述一个模型具有多少参数时,这个数字通常指其参数张量中的标量值总数,而不是张量的数量。

什么是模型权重

模型权重有两种常见含义。

在狭义的数学含义中,权重会与输入或中间值相乘。在 (y = wx + b) 中,(w) 是权重,(b) 是偏置。二者都是参数,但只有其中一个是权重。

在更广义的软件含义中,“权重”指使训练后的模型表现出当前行为的已存储数值状态。“权重文件”可以包含权重矩阵、偏置,有时还包含其他持久化张量。这个标签描述的是整个集合,而不是其中每个数字的数学作用。

二者的区别

最可靠的规则是:

权重通常是参数的一种,但“模型权重”常常是模型完整已学习状态的简称。
Context“Parameters” usually means“Weights” usually means
A layer equationAll learned values, including weights and biasesValues multiplied by inputs or activations
A parameter countThe number of learned scalar values across parameter tensorsOften used loosely as a synonym for the same count
A framework APIRegistered model values that may be trainable or frozenA framework-specific collection that may include biases and non-trainable state
A model download or checkpointLearned values, if the term is used at allThe saved tensors needed to reproduce the trained model’s behavior

下表描述的是惯例,并非普遍适用的标准。需要精确理解时,请查看附近的公式、API 定义或文件规范。

一个具体示例

假设一个全连接层接收三个输入值并产生两个输出值。它计算:

[
\mathbf{y} = \mathbf{x}\mathbf{W} + \mathbf{b}
]

权重矩阵 (\mathbf{W}) 的形状为 (3 \times 2),因此包含六个标量权重。偏置向量 (\mathbf{b}) 包含两个标量偏置。

因此,该层包含:

  • 6 个标量权重
  • 2 个标量偏置
  • 总计 8 个标量参数

如果某个库保存这个层的“权重”,保存的集合通常会同时包含 (\mathbf{W}) 和 (\mathbf{b})。数学本身没有改变,改变的只是“权重”一词的范围。

措辞为何重要

在阅读方程、实现层或核对参数量时,狭义区别很重要。如果只统计权重矩阵中的元素,就可能因为遗漏偏置和其他已学习参数张量而低估模型的参数量。

在下载、加载、冻结或共享模型时,广义含义很重要。某个框架可能将每个持久化的层变量都称为权重。检查点还可能包含推理时使用的缓冲区,即使训练过程并未将它们作为参数进行优化。

冻结会带来另一种混淆。冻结参数在本次训练过程中不再更新,但它仍然是模型的一部分,并继续影响模型输出。因此,对于同一个模型,“可训练参数”和“全部参数”可能会得到不同的计数。

参数量和检查点大小也是两种不同的度量。文件大小取决于每个值的编码方式、张量是否经过量化或共享,以及检查点是否包含额外状态。没有格式细节,就无法仅凭其中一个可靠地推断另一个。

人们容易混淆的概念

“权重”总是排除偏置

在将 (W) 和 (b) 项分开命名的公式中,这种说法成立。但在框架和检查点语境中通常不成立,因为“权重”可能指同时包含二者的集合。

“参数”指训练设置

模型参数是模型内部的已学习值。学习率等为训练过程选择的设置属于超参数。名称相似并不意味着它们属于同一类值。

参数越多,模型越好

参数量表示模型包含多少个已学习的标量值。它不能说明架构有多实用、训练数据质量如何,也不能说明模型在你的任务上的表现有多好。

接下来阅读

阅读什么是模型参数?,了解如何统计和使用模型中的已学习值。阅读什么是模型权重?,了解权重如何影响层的输出,以及该术语在模型文件中的用法。