K 的一隅

AI 神经网络基础

数据怎样穿过一层层网络:前向传播的完整过程

让一个固定的输入向量依次经过输入层、隐藏层和输出层,逐层查看真实计算结果。

5 分钟阅读 更新于 2026-07-28
本文目录

假设现在有一个很小的网络:两个数字进去,经过两个隐藏神经元,最后只得到一个数。这里先不讨论模型理解了什么,只记录输入向量在每一层发生的数值变化。

逐层播放器

跟着一个输入向量走完 2 → 2 → 1

按播放看信号沿连线流动;也可按左右方向键或按钮切换层。每一层数字都来自同一套固定参数。

输入

x11
x22

隐藏 · ReLU

h10.5z=0.5
h21z=1

输出

Logit0.13原始分数

第 1 站 · 输入层

两个输入数字先站上输入层。它们本身不做加权求和,只是下一层的原料。

x = [x₁, x₂]

x₁ = 1x₂ = 2

这两个数是下一层的输入;输入层不做加权求和,也没有自己的偏置。

读取输入 x = [1, 2]隐藏层 h = ReLU(Wx + b)输出 Logit 原始分数 · ŵᵀh + b
第 1 / 3 层
1 · 读取输入2 · 计算隐藏层3 · 得到输出 Logit(原始分数)

当前:读取输入 连线亮起时,信号正沿着固定权重向前传播。

第一步:输入层提供数值

这次的输入向量是:

x = [1, 2]

它进入的是输入层。输入层很像一张号码牌:第一个位置放 1,第二个位置放 2,方便下一层逐一取用。它不是一个正在“思考”的计算层,因此在普通全连接网络的画法里,输入层本身没有要计算的权重和偏置。

接下来发生的事叫前向传播:数据沿着网络从输入端往输出端走;每一层拿到上一层的数,用现有参数算出新数,再把新数继续传下去。

这里的“现有”很关键。前向传播使用的是已经存在的权重和偏置,不更新任何参数。换一组输入,中间结果会变;但如果正处于推理阶段,权重和偏置不会因为这次计算而临时换一套。

第二步:隐藏层分别完成计算

输入向量到达隐藏层时,会遇到两个神经元。它们都看见同样的 [1, 2],但每个神经元有自己的一组权重和一个偏置,所以算出来的答案不同。

播放器里的第一个隐藏神经元按下面的规则计算:

z₁ = 1 × 0.5 + 2 × (−0.25) + 0.5 = 0.5

接着经过 ReLU:

h₁ = ReLU(0.5) = 0.5

第二个隐藏神经元则用另一套参数:

z₂ = 1 × 1 + 2 × 0.5 − 1 = 1
h₂ = ReLU(1) = 1

于是,原来的两个输入被转换为新的隐藏层输出:

text
[1, 2]  →  [0.5, 1]

这不是“复制”输入,而是两次独立的加权求和、加偏置和激活。网络越往后,数字通常越不再对应原始特征,而是前面各层加工后的表示。

终点:输出层给出一个原始分数

最后来到输出层。在这个例子中,它只含一个神经元,接收 [0.5, 1]

z = 0.5 × 0.75 + 1 × (−0.5) + 0.25 = 0.125

播放器把这个 0.125 标成 Logit(原始分数)。多分类时才会同时出现一组 Logits;这里只有一个输出单元,所以就是单个原始分数,还没有被转换成容易解读的概率。

所以,输出不一定是概率。如果任务是预测房价,最后可能直接输出一个实数;如果是二分类,常常再把单个 Logit 送进 Sigmoid,才得到 0 到 1 之间的数;多分类通常把一组 Logits 送进 Softmax,才得到总和为 1 的概率分布。输出层有什么激活函数,取决于任务想让答案以什么形式出现。

完整的数据流

从外面看,这张 2 → 2 → 1 网络只是在反复执行同一种小计算:

text
输入层 [1, 2]
  ↓  使用第一组权重、偏置与 ReLU
隐藏层 [0.5, 1]
  ↓  使用输出层的权重与偏置
输出层 Logit = 0.125

“一层一层往前算”就是前向传播最朴素的意思。更大的网络当然会有更多层、更多神经元、更多矩阵运算,但数据流向没有变:从输入开始,经过已有参数,直到得到输出。

它没有做什么

理解前向传播时,知道它的边界很重要。它会:

  • 根据当前输入和现有参数算预测;
  • 让每一层的输出成为下一层的输入;
  • 在输出层得到原始分数、概率或连续数值。

它不会:

  • 判断预测到底对不对;
  • 自己修改权重和偏置;
  • 自动把每个输出解释成概率。

“算得出了什么”到“这次算错了多少”,中间还差一个标签和损失函数;再往后才会出现反向传播与优化器。先看清这条单向计算路径,后面理解错误怎样逆向影响参数,就不会把两件事混成一件事。把前向传播记成「按现有参数把输入推到输出」,比死记层数公式更稳。下一章谈参数量时,你会看到这些「推」的动作背后,其实是一组可数的权重与偏置在参与计算。

播放器应该怎么看

第一次播放时只观察方向:输入层亮起以后,信号只能向右流动。第二次播放再暂停到隐藏层,核对两组权重为什么得到不同结果。最后拖动进度条来回比较隐藏层与输出层,你会看到后一层只读取前一层已经算好的输出,不会绕过中间层直接读取原始输入。这三次观察分别对应方向、计算和依赖关系。