在深度学习中,我们经常会听到一个说法:训练模型,本质上就是寻找合适的模型参数 。这些参数通常包括两类:权重(weights) 和 偏置(biases)。
很多初学者第一次看到神经网络结构图时,容易被大量连线、节点和公式吓到。实际上,只要抓住一个核心原则:
神经网络的参数,主要来自层与层之间的连接权重,以及每个神经元自身的偏置项。
下面我们结合一张典型的全连接神经网络图,系统解释其中的参数量是如何计算出来的。

一、这张图表示了什么网络结构?
图中展示的是一个用于手写数字识别的简单全连接神经网络。它的结构可以概括为:
text
输入层:784 个输入节点
隐藏层 1:16 个神经元
隐藏层 2:16 个神经元
输出层:10 个神经元
也可以写成:
text
784 → 16 → 16 → 10
其中:
- 784 表示输入层有 784 个特征;
- 16 表示第一层隐藏层有 16 个神经元;
- 16 表示第二层隐藏层也有 16 个神经元;
- 10 表示输出层有 10 个神经元。
这里的 784 通常来自 MNIST 手写数字图片。MNIST 图片大小为:
text
28 × 28 = 784
也就是说,一张 28×28 的灰度图像被拉平成一个长度为 784 的向量,每个像素点对应一个输入特征。
输出层的 10 个神经元,则分别对应数字 0 到 9。模型最终会给出这张图片属于每个数字类别的可能性。
二、什么是权重参数 weights?
在全连接神经网络中,前一层的每一个神经元,都会和后一层的每一个神经元相连。
每一条连接线上都有一个参数,这个参数就叫做 权重 weight。
可以把权重理解成:
当前一个输入对后一个神经元输出结果的影响程度。
如果某个权重较大,说明对应输入对后续计算的影响更强;如果某个权重接近 0,说明这个输入对结果影响较弱;如果权重为负,则说明这个输入会对后续结果产生反向影响。
对于任意两层之间的全连接结构,权重数量的计算公式是:
text
权重数量 = 上一层神经元数量 × 下一层神经元数量
三、图中的权重数量如何计算?
这张网络有三组层间连接:
text
输入层 784 → 隐藏层 1 的 16 个神经元
隐藏层 1 的 16 个神经元 → 隐藏层 2 的 16 个神经元
隐藏层 2 的 16 个神经元 → 输出层的 10 个神经元
因此,权重数量需要分三部分计算。
1. 输入层到第一隐藏层
输入层有 784 个节点,第一隐藏层有 16 个神经元。
由于是全连接,所以每个输入节点都要连接到 16 个隐藏层神经元:
text
784 × 16 = 12,544
也就是说,仅从输入层到第一隐藏层,就有 12,544 个权重参数。
2. 第一隐藏层到第二隐藏层
第一隐藏层有 16 个神经元,第二隐藏层也有 16 个神经元。
因此这一层之间的权重数量为:
text
16 × 16 = 256
也就是 256 个权重参数。
3. 第二隐藏层到输出层
第二隐藏层有 16 个神经元,输出层有 10 个神经元。
所以权重数量为:
text
16 × 10 = 160
也就是 160 个权重参数。
4. 总权重数量
把三部分加起来:
text
784 × 16 + 16 × 16 + 16 × 10
= 12,544 + 256 + 160
= 12,960
所以,这个网络中一共有:
text
12,960 个权重参数
这也就是图中上半部分公式:
text
784×16 + 16×16 + 16×10 weights
的含义。
四、什么是偏置参数 biases?
除了权重之外,神经网络中的每个神经元通常还会有一个额外参数,叫做 偏置 bias。
如果说权重控制的是"输入影响有多大",那么偏置控制的是:
这个神经元整体输出的基础偏移量。
一个神经元的计算可以简化理解为:
text
输出 = 激活函数(输入1 × 权重1 + 输入2 × 权重2 + ... + bias)
如果没有 bias,那么神经元的输出完全依赖输入和权重;加入 bias 后,模型可以更加灵活地调整决策边界。
从直觉上看,bias 类似于线性函数中的截距项。例如:
text
y = wx + b
其中:
w是权重;b是偏置。
没有 b 的时候,函数必须经过原点;有了 b,函数可以上下平移,表达能力更强。
五、图中的偏置数量如何计算?
偏置参数不是出现在输入层,而是出现在后续的神经元中。
原因是:输入层只是负责接收原始数据,本身通常不执行带参数的计算;真正进行计算的是隐藏层和输出层的神经元。
因此,每个隐藏层神经元和输出层神经元通常各有一个 bias。
这张图中:
text
隐藏层 1:16 个神经元 → 16 个 bias
隐藏层 2:16 个神经元 → 16 个 bias
输出层:10 个神经元 → 10 个 bias
所以总偏置数量为:
text
16 + 16 + 10 = 42
也就是说,这个网络中一共有:
text
42 个偏置参数
这也就是图中公式:
text
16 + 16 + 10 biases
的含义。
六、总模型参数量如何计算?
模型的总参数量由两部分组成:
text
总参数量 = 权重参数数量 + 偏置参数数量
对于这张图中的网络:
text
权重参数数量 = 12,960
偏置参数数量 = 42
因此:
text
总参数量 = 12,960 + 42 = 13,002
所以图中的 13,002 表示:
这个神经网络一共有 13,002 个可训练参数。
这些参数在训练开始时通常会被随机初始化,随后通过反向传播和梯度下降不断调整,最终让模型在训练数据上表现越来越好。
七、为什么说"训练模型就是寻找正确的权重和偏置"?
神经网络本身可以看作一个复杂函数。
对于手写数字识别任务来说,它接收一张图片作为输入,然后输出这张图片属于数字 0 到 9 的概率。
假设输入是一张手写数字"7"的图片,理想情况下模型应该输出类似这样的结果:
text
数字 0:0.01
数字 1:0.02
数字 2:0.01
数字 3:0.03
数字 4:0.01
数字 5:0.01
数字 6:0.00
数字 7:0.88
数字 8:0.02
数字 9:0.01
其中数字 7 的概率最高,说明模型判断这张图片最可能是"7"。
但一开始,模型的权重和偏置是随机的,所以它的判断通常也是错误的。
训练过程要做的事情,就是不断比较:
text
模型预测结果 vs 正确答案
如果模型预测错了,就根据误差调整权重和偏置;如果预测越来越接近正确答案,就继续沿着这个方向优化。
因此,所谓"训练模型",本质上就是在寻找一组参数:
text
weights + biases
让模型能够从输入中提取有效规律,并输出正确结果。
八、从矩阵角度理解参数量
在深度学习框架中,神经网络的计算通常不是一条线一条线地处理,而是使用矩阵运算。
比如从输入层到第一隐藏层,可以表示为:
text
h1 = activation(W1 × x + b1)
其中:
x是输入向量,长度为 784;W1是权重矩阵;b1是偏置向量;h1是第一隐藏层输出,长度为 16。
对应的参数形状可以理解为:
text
W1:784 × 16
b1:16
第二层:
text
W2:16 × 16
b2:16
输出层:
text
W3:16 × 10
b3:10
所以整个网络的参数结构可以整理为:
| 层级 | 权重矩阵形状 | 权重数量 | 偏置向量形状 | 偏置数量 |
|---|---|---|---|---|
| 输入层 → 隐藏层 1 | 784 × 16 | 12,544 | 16 | 16 |
| 隐藏层 1 → 隐藏层 2 | 16 × 16 | 256 | 16 | 16 |
| 隐藏层 2 → 输出层 | 16 × 10 | 160 | 10 | 10 |
| 合计 | - | 12,960 | - | 42 |
最终总参数量为:
text
12,960 + 42 = 13,002
九、参数越多,模型一定越好吗?
不一定。
参数越多,通常意味着模型的表达能力越强,可以拟合更加复杂的函数关系。但这也带来几个问题:
1. 更容易过拟合
如果模型参数太多,而训练数据太少,模型可能会把训练集中的噪声也记下来。
这会导致模型在训练集上表现很好,但在新数据上表现很差。
这种现象叫做 过拟合。
2. 训练成本更高
参数越多,计算量越大,训练需要的显存、时间和算力也越高。
这就是为什么大模型训练需要大量 GPU、TPU 或其他高性能计算资源。
3. 推理速度可能变慢
模型训练完成后,实际使用时也需要进行前向计算。参数越多,推理时通常也需要更多计算资源。
所以,好的模型设计并不是盲目堆参数,而是在:
text
模型容量、训练数据、计算资源、泛化能力
之间取得平衡。
十、全连接网络与现代大模型参数的关系
这张图中的网络只有 13,002 个参数,规模非常小。
而现代大语言模型的参数量可能达到数十亿、数百亿甚至更多。
不过底层思想是一致的:
模型参数就是模型中可以通过训练被更新的数值。
无论是简单的全连接网络,还是复杂的 Transformer 大模型,它们都包含大量可训练参数。
区别在于:
- 简单全连接网络的参数主要来自神经元之间的连接矩阵;
- 卷积神经网络的参数主要来自卷积核;
- Transformer 模型的参数主要来自注意力层、前馈网络、嵌入矩阵、归一化层等模块。
虽然结构不同,但训练目标都是相似的:
text
通过数据不断调整参数,使模型输出更接近目标答案。
十一、一个通用的参数量计算公式
对于一个普通的全连接神经网络,假设每一层的神经元数量为:
text
n0 → n1 → n2 → ... → nk
其中:
n0是输入层维度;n1到nk-1是隐藏层神经元数量;nk是输出层神经元数量。
那么总权重数量为:
text
n0×n1 + n1×n2 + ... + n(k-1)×nk
总偏置数量为:
text
n1 + n2 + ... + nk
总参数量为:
text
总参数量 = 总权重数量 + 总偏置数量
应用到这张图:
text
784 → 16 → 16 → 10
所以:
text
总权重 = 784×16 + 16×16 + 16×10 = 12,960
总偏置 = 16 + 16 + 10 = 42
总参数 = 12,960 + 42 = 13,002
十二、总结
这张图中的核心信息可以总结为一句话:
一个全连接神经网络的模型参数量,等于所有层间连接权重数量,加上所有非输入层神经元的偏置数量。
对于图中的网络结构:
text
784 → 16 → 16 → 10
参数量计算如下:
text
权重参数:784×16 + 16×16 + 16×10 = 12,960
偏置参数:16 + 16 + 10 = 42
总参数量:12,960 + 42 = 13,002
因此,图中所说的 13,002 个参数,指的就是这个神经网络中所有可以通过训练被调整的权重和偏置。
理解了这个例子后,再去看更复杂的神经网络,比如 CNN、RNN、Transformer 或大语言模型,就会更容易理解"参数量"到底是什么意思。
模型参数不是一个抽象概念,它本质上就是模型内部大量可学习的数字。训练模型,就是通过数据不断调整这些数字,让模型从最初的随机猜测,逐渐变成能够做出正确判断的智能系统。