K 的一隅

AI 神经网络基础

这个网络为什么有 330 个参数:把每一层拆开数

“10、10、10、1”这个网络看起来像 330 个参数?逐层计算权重和偏置后,答案其实是 231。

4 分钟阅读 更新于 2026-07-27
本文目录

先写下一个看起来很顺手的答案:有两层隐藏层、每层 10 个神经元,输出层也有 10 个神经元,所以 110 + 110 + 110 = 330

这个算式没问题,但它回答的是另一个网络。今天的网络结构其实是:

text
输入层 10 个数 → 隐藏层 10 个神经元 → 隐藏层 10 个神经元 → 输出层 1 个神经元

最后不是 10 个输出,而是 1 个。修正输出层规模后,总参数就不再是 330

参数量搭建器

修改层规模,查看参数量变化

每个连接层的参数 = 上一层节点数 × 当前层节点数,再加上当前层每个神经元各自的偏置。

默认结构 10 → 10 → 10 → 1 的总参数量是 231。

先数 10 × 10 条连接上的权重,再给 隐藏层 1 的每个神经元加 1 个偏置,得到小计 110。

第 1 笔 100 + 10 = 110 第 2 笔 100 + 10 = 110 第 3 笔 10 + 1 = 11
总参数量231个可训练数字
1 · 第 1 笔 · 输入层 → 隐藏层 12 · 第 2 笔 · 隐藏层 1 → 隐藏层 23 · 第 3 笔 · 隐藏层 2 → 输出层

当前:第 1 笔 · 输入层 → 隐藏层 1 播放时会逐层点亮连接:先数权重,再数偏置。

第一层连接:输入层到第一个隐藏层

第一个隐藏层有 10 个神经元。每一个神经元都接收上一层的 10 个输入,因此各自有 10 个权重(weight)。

text
10 个输入 × 10 个隐藏神经元 = 100 个权重

偏置也要单独计算:偏置(bias)不是一整层共用一个,而是当前层每个神经元一个。这层有 10 个神经元,因此再加 10 个偏置。

text
100 个权重 + 10 个偏置 = 110 个参数

这里常见的误会是把输入层的 10 个数字也算成参数。它们不是。输入层只摆放本次样本的数值;输入层没有这类可训练连接参数。真正被训练、会被更新的,是从输入层连到当前计算层的权重,以及当前层神经元各自的偏置。

第二层连接:两个隐藏层之间

下一层仍然有 10 个神经元,上一层也仍然输出 10 个数,所以连接数没有变:

text
10 × 10 = 100 个权重
10 个神经元 = 10 个偏置
小计 = 110 个参数

到这里,我们已经有 110 + 110 = 220 个参数。数字看起来与第一笔重复,但不是同一批数字:每一层之间都保存着自己独立的一张权重表。

输出层连接:10 个隐藏输出如何变成 1 个答案

这就是刚才 330 失效的地方。最后的输出层(output layer)只有 1 个神经元;它接收最后一个隐藏层传来的 10 个输出。

text
10 × 1 = 10 个权重
1 个输出神经元 = 1 个偏置
小计 = 11 个参数

于是总参数量是:

110 + 110 + 11 = 231

默认搭建器显示的 231 不是约数,也不是“神经元的数量”。它表示这个网络里有 231 个可以在训练中调整的数字。

可复用的参数量公式

只要是普通全连接层(dense layer),从规模为 m 的上一层走到规模为 n 的当前层:

参数量 = m × n + n

前半段 m × n 数的是权重:每条连接一个。后半段 +n 数的是偏置:当前层的每个神经元一个。

输出层的神经元数并不固定。二分类常见 1 个输出;识别 10 类手写数字常见 10 个输出;预测房价也可能只要 1 个连续值。任务改变,输出层规模和对应参数量也会改变。

试着把搭建器里的输出层改为 10:这时最后一笔会变回 110,全网总数才会是 330。先确认网络到底有几个输出,再算参数,通常比背一个大数更可靠。

用矩阵形状快速复核

若上一层有 m 个输出,当前层有 n 个神经元,权重可以排成 n × m 的矩阵,偏置排成长度为 n 的向量。因此当前层参数量也可以写成:

n × m + n = n(m + 1)

这个视角能及时发现三类错误:忘记偏置会少算 n 个参数;把输入层当计算层会多算一组;没有先确认输出类别数会让最后一层整体算错。大型模型也是同样的方法,只是把 Embedding、Attention、FFN 等模块里的每个可训练矩阵逐一数完再相加。

参数量在工程上意味着什么

231 不只是考试答案。每个可训练参数在推理时至少要占一份存储;训练时还要为优化器额外留出动量、梯度等状态,内存往往是“参数体积”的数倍。层宽翻倍时,全连接层的权重按 m × n 近似平方级上涨,所以“再加几个神经元”并不便宜。

因此读模型卡上的“70 亿参数”时,先问:这些数字落在哪些矩阵上?本章的小网络把问题压到三层,正是为了练同一套数法。后面进入 Transformer 时,你会再次用 词表大小 × 维度隐藏维 × 隐藏维 去拆 Embedding 与注意力投影。