LESSON 13 · 卷II 神经网络

神经网络、前向传播与训练

从一个神经元到整层矩阵,沿数据流看清前向传播,再认识完整训练循环。

第 1 站

一个神经元不够,那就织一张网

前两课,我们把那台猜水果的机器从零造了出来:第 11 课造好神经元(加权求和 + 偏置 + 激活), 第 12 课给它装上激活函数,让多层叠起来真正有了表达能力。可到现在,我们手里始终是零件—— 这一课,把零件正式拼成整机:神经网络,再讲清楚它是怎么「学」会本事的。

先回顾一个已经见过的拼法。第 11 课末尾,我们给每种水果配一个神经元、并排站成一排, 再用 softmax 把它们的分数压成一组概率——这「一排神经元」,就是一层(layer)。 下面这台就是那一层,转旋钮再感受一下:

🎛 四个旋钮 = 四个输入特征
尺寸大小0.50
小大
颜色0.50
偏绿偏红
酸甜度0.50
酸甜
水分0.50
干多汁
尺寸大小0.50颜色0.50酸甜度0.50水分0.50🍎2.4🍌2.2🍉1.4🍋2.1softmax分数→概率每个神经元给一种水果打分
机器觉得最像:🍎 苹果
🍎 苹果36%
🍌 香蕉27%
🍉 西瓜13%
🍋 柠檬24%
四个神经元各给一种水果打分(圆圈旁的数字),softmax 把四个分数挤成一组加起来 = 100% 的概率。试试把旋钮调到「大 + 多汁」,看西瓜怎么后来居上。
互动 13-A一层网络:四个神经元各看同样的四条线索,各算各的分数,softmax 合成一个概率分布。把旋钮调向「又大又多汁」,看西瓜的概率怎么爬到最高。

关键的一步来了:把前一层的输出,当作后一层的输入,一层接一层叠下去——这就是神经网络。 最前面接收原始特征的叫输入层,最后给出答案的叫输出层,夹在中间、不直接和外界打交道的,统称隐藏层。

输入层(4 特征)隐藏层隐藏层输出层(4 水果)🍎🍌🍉🍋深度 = 层数;宽度 = 每层神经元个数;相邻两层「全连接」(每条线是一个权重)
图 13-1一张全连接神经网络。节点是神经元,连线是权重。层数叫网络的「深度」,每层神经元个数叫「宽度」。第 12 课证过:层与层之间必须夹着激活函数,否则再深也等于一层。
第 2 站

整张网络,其实是「一个带参数的大函数」

别被那张网吓住。从头到尾看一遍:输入 进来,每一层做的都是同一件事—— 先来个线性变换 ,再过一道激活函数,把结果交给下一层。整张网络不过是这套动作重复几次:

换句话说,整张网络就是一个大函数:喂它一组特征,它吐出一个预测 。 而函数的「脾气」全由那一大堆权重 和偏置 决定—— 它们合在一起,记作 ,就是网络的参数。

参数有多少?数一数上面那张小网(4 → 5 → 5 → 4):第一层权重 个、偏置 5 个; 第二层 + 5;第三层 + 4——加起来 79 个参数。 这么小的网就有近百个旋钮;GPT-3 则有 1750 亿 个。

⚠️ 遇到的拦路虎 · 方案局限

网络的全部「本事」,就藏在这堆参数 里。结构(多少层、多少神经元)定下了它能表达多复杂的规律;而具体表达成什么样、是会认水果还是会写诗, 完全取决于这些数取什么值。换一组参数,就是换一套判断规则。

一张网有成千上万个参数,总不能像第 11 课那样一个个手工去猜吧?那它们到底从哪来?
第 3 站

前向传播:把节点图翻译成矩阵计算

第 04 课已经会把许多次点积打包成矩阵乘法,第 06 课会读数据轴。现在把工具放回水果机器:输入 x 的四个分量分别是尺寸、颜色、甜度、水分;隐藏层的三个神经元各有一行权重。每一行与同一个 x 做点积,再加自己的偏置,得到三个中间分数。

x: [4,1] → z₁ = W₁x + b₁: [3,1] → h = ReLU(z₁): [3,1]
z₂ = W₂h + b₂: [4,1];W₁: [3,4],W₂: [4,3]

h 是隐藏层传给下一层的表示,z₂ 是四种水果的原始得分 logits,还不是概率。隐藏神经元未必分别表示某个可命名属性;这里的权重只是教学示例,不是训练结果。按输入 → 仿射运算 → 激活 → 下一层这个方向算完一次,就叫前向传播。

水果网络 · 从输入走到原始得分

单个输入与批量输入:每一列是一个水果
对象形状轴的意义
X[4,B]4 个特征 × B 个样本
W₁[3,4]3 个隐藏神经元 × 4 个输入
H[3,B]3 个隐藏特征 × B 个样本
Z₂[4,B]4 个类别 × B 个样本
H = ReLU(W₁X + b₁),Z₂ = W₂H + b₂;偏置沿样本轴广播
把边界说清楚

本课沿用数学卷的列向量约定。若框架把样本放在行上,X_row = Xᵀ,同一层写成 X_row W₁ᵀ + b₁,形状为 [B,3];只是存放约定改变,不是另一个模型。

把一个水果变成一批水果,需要为每个水果重新学习一套权重吗?
第 4 站

「训练」:把参数交给数据去定

网络刚出生时,参数是随机的——这时喂它一个苹果,它多半瞎猜「30% 像香蕉」。 所谓训练(training),就是拿一大批已知正确答案的例子(带标签的数据), 一点一点地微调参数,让网络的预测越来越贴近真实答案。

打个比方:第 11 课你手动把颜色的权重调大、把门槛挪到 2.4,是为了让那台机器「分对」手里的水果。 训练做的是同一件事,只不过交给机器自动完成、而且面对的是成千上万个例子。它靠的是一个不断重复的循环:

训练数据(带正确答案)① 前向计算网络算出预测 ŷ② 算损失错得有多离谱 L③ 求梯度每个参数该往哪调④ 更新参数θ ← θ − 学习率×梯度重复成千上万次:损失一步步变小,参数一步步变好
图 13-2训练的循环。喂一批数据 → 网络前向算出预测 → 损失函数量出错多少 → 反推每个参数的梯度(该往哪调)→ 更新参数,迈出一小步。如此往复,直到损失足够小。

把循环看成接下来章节的地图,而不是现在就背完整求导公式:

  • ② 算损失 → 第 15 课《损失函数》:预测与标签的差距怎样变成一个分数。
  • ④ 更新参数 → 第 17 课《梯度下降与优化器》:使用梯度决定这一步怎么走。
  • ③ 求梯度 → 第 16 课《反向传播》:在计算图上高效计算各参数的梯度。

最后区分两个常被混淆的词:训练是「调参数」的过程,要用到正确答案、要算损失和梯度,很费算力; 训练完成后,参数就固定下来,拿去对新数据做预测,叫推理(inference)——你平时用 ChatGPT,用的就是它训练好、参数冻住后的样子。

第 5 站

数据、参数与超参数,各自负责什么

一个水果是一个样本,尺寸和颜色是特征,已知的水果类别是标签。参数是由训练更新的权重与偏置;超参数是学习率、网络宽度等训练配置。样本、参数、配置不能混为一谈。

训练循环是一张地图:前向计算 → 合适的输出 → 损失 → 反向求梯度 → 优化器更新。验证集留给选配置,测试集留给最后评价;第 19 课展开这三份数据的职责。

第 6 站

总结

💡 章节速记 · 本课核心

神经元组成一个带参数的大函数。先沿前向路径算出预测,再比较标签、计算梯度、更新参数;接下来的章节拆开这个循环,再检查训练稳定性与泛化。

💡 用大白话梳理:这一课的核心直觉

  • 网络结构:层的堆叠;输入层 / 隐藏层 / 输出层;深度与宽度;相邻层全连接。
  • 参数 θ:所有权重 W 与偏置 b 的总和,网络的「本事」全在其中。
  • 训练:用带标签的数据自动调参,让预测逼近真实答案。
  • 训练循环:前向计算 → 算损失 → 求梯度 → 更新参数,重复成千上万次。
  • 训练 vs 推理:训练调参、推理用固定参数做预测。
小测验

学习小测验

动动脑筋:核心直觉小测验(选出你的答案后点击「提交」,即可查看生动通俗的详细解析)

Q1同一网络接收一个水果,或一批水果,哪个说法正确?
Q2一次训练步骤中,计算预测后的正确顺序是什么?