什么是模型参数
模型参数是属于模型并从数据中学习得到的值。它们是训练过程调整、推理过程使用的值。
对于一个简单的线性模型,
[
y = wx + b
]
(w) 和 (b) 都是参数。模型会学习它们,而不是在每次预测时将它们作为新的输入接收。
神经网络将参数存储在张量中,张量是由数字组成的多维数组。单个张量可能包含许多标量参数。当描述一个模型具有多少参数时,这个数字通常指其参数张量中的标量值总数,而不是张量的数量。
什么是模型权重
模型权重有两种常见含义。
在狭义的数学含义中,权重会与输入或中间值相乘。在 (y = wx + b) 中,(w) 是权重,(b) 是偏置。二者都是参数,但只有其中一个是权重。
在更广义的软件含义中,“权重”指使训练后的模型表现出当前行为的已存储数值状态。“权重文件”可以包含权重矩阵、偏置,有时还包含其他持久化张量。这个标签描述的是整个集合,而不是其中每个数字的数学作用。
二者的区别
最可靠的规则是:
权重通常是参数的一种,但“模型权重”常常是模型完整已学习状态的简称。
| Context | “Parameters” usually means | “Weights” usually means |
|---|---|---|
| A layer equation | All learned values, including weights and biases | Values multiplied by inputs or activations |
| A parameter count | The number of learned scalar values across parameter tensors | Often used loosely as a synonym for the same count |
| A framework API | Registered model values that may be trainable or frozen | A framework-specific collection that may include biases and non-trainable state |
| A model download or checkpoint | Learned values, if the term is used at all | The 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) 项分开命名的公式中,这种说法成立。但在框架和检查点语境中通常不成立,因为“权重”可能指同时包含二者的集合。
“参数”指训练设置
模型参数是模型内部的已学习值。学习率等为训练过程选择的设置属于超参数。名称相似并不意味着它们属于同一类值。
参数越多,模型越好
参数量表示模型包含多少个已学习的标量值。它不能说明架构有多实用、训练数据质量如何,也不能说明模型在你的任务上的表现有多好。
接下来阅读
阅读什么是模型参数?,了解如何统计和使用模型中的已学习值。阅读什么是模型权重?,了解权重如何影响层的输出,以及该术语在模型文件中的用法。