如何理解神经网络中的权重参数?从一张图看懂模型参数量计算

在深度学习中,我们经常会听到一个说法:训练模型,本质上就是寻找合适的模型参数 。这些参数通常包括两类:权重(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 是输入层维度;
  • n1nk-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 或大语言模型,就会更容易理解"参数量"到底是什么意思。

模型参数不是一个抽象概念,它本质上就是模型内部大量可学习的数字。训练模型,就是通过数据不断调整这些数字,让模型从最初的随机猜测,逐渐变成能够做出正确判断的智能系统。

相关推荐
2301_779622411 小时前
mysql如何通过主从备份实现读写分离_配置mysql架构模式
jvm·数据库·python
炜宏资料库1 小时前
【专家观点】河钢数字:工业AI质检助力生产制造企业持续提质降本增效
人工智能·制造
核数聚1 小时前
给四足机器人装上 “智慧大脑”!核数聚具身数据集,让园区巡检又快又稳
人工智能·机器学习·ai·机器人
m0_741173331 小时前
HTML5中WebSocket在弱网环境下的延迟抖动算法补偿
jvm·数据库·python
l1t1 小时前
astral-sh发布的musl和gnu版本standalone python 性能比较
开发语言·python
2401_871492851 小时前
Pandas如何做时间差对齐_pd.merge_asof按最近的时间戳合并两表
jvm·数据库·python
wuxinyan1231 小时前
大模型学习之路007:RAG 零基础入门教程(第四篇):生成侧核心技术与大模型集成
人工智能·学习·rag
亚鲁鲁2 小时前
02-启动流程
人工智能
sg_knight2 小时前
Python 设计模式:迭代器模式——用优雅的方式遍历一切
python·设计模式·迭代器模式