胡慧华
菜单
首页人工智能机器学习深度学习智能体项目实践关于我
跳至课程正文
← 返回深度学习课程

DEEP LEARNING · COURSE 03

神经网络如何,
完成一次预测?

跟随一组数值穿过网络,逐层查看计算结果。
这一课只做前向传播,不更新任何参数。

零基础约 30–35 分钟8 个学习环节
数据依次穿过神经网络各层并形成输出概率的概念图
本课你将能够
  • 解释什么是前向传播
  • 区分类别分数与概率
  • 正确理解模型的一次预测
01

延续手写数字场景

给模型一张新图片,会发生什么?

训练已经结束,权重和偏置都固定下来。现在放入一张没有参与本次计算的新图片,请模型从 3、8、9 三个候选中选择。
INPUT一张待识别图片

先转换为与训练时一致的数值。

MODEL固定参数的网络

信息从前向后逐层计算。

OUTPUT类别 8

当前分数最高的候选答案。

一次预测不等于一次训练

预测只使用当前参数计算结果;没有答案对比,也不修改参数。第 04、05 课才会进入“发现错误并更新参数”的训练过程。

02

输入必须遵守约定

模型不会自动理解任意格式的数据

训练时怎样整理输入,预测时也要用同样的方法。尺寸、顺序、数值范围或文字切分方式发生变化,都可能让结果失去意义。
  1. 统一形状

    例如把数字图片处理成固定宽高,并保持像素排列顺序。

  2. 统一范围

    如果训练时像素缩放到 0–1,预测时也要做同样缩放。

  3. 组成一批

    即使只有一张图片,框架通常也会保留“批次”这一维。

  4. 交给同一模型

    使用训练完成并正确加载的网络结构与参数。

容易忽略

模型表现突然变差时,先检查输入处理是否与训练一致,再判断是不是模型能力不足。

03

互动实验 · 前向传播

逐层查看一组数值怎样变成预测

为了看清过程,实验把图片概括为三个演示特征,并只比较三个候选数字。真实模型会有更多输入、神经元和类别。

笔画较亮,重心接近中央,上下结构较对称。

3 个演示特征

输入

先把输入整理成训练时约定的数值形式。真实图像模型通常直接处理大量像素或特征图。

v10.85
v20.72
v30.91
输入隐藏层输出分数概率

实验参数固定,数值由页面中的真实计算产生,但这是教学网络,不代表课程 01 的数字识别模型,也不用于评估真实准确率。

04

把重复计算写得更紧凑

一层其实在同时计算许多神经元

每个神经元都对同一组输入做加权求和。把一组权重排成矩阵,就能一次表达整层计算。
输入向量 x[0.85, 0.72, 0.91]3 个输入数值
权重矩阵 W3 行 × 3 列3 个神经元各有 3 个权重
偏置 b[−0.20, 0.05, −0.35]每个神经元一个偏置
隐藏层 h[1.00, 0.92, 0.95]经过 ReLU 的输出

整层写法h = ReLU(xW + b)

矩阵不是新的模型部件

它只是把许多神经元的重复计算整理在一起。理解“每个输出都是输入的加权组合”,就已经抓住核心。

05

从 logits 到相对概率

原始分数还不能直接叫概率

输出层产生的原始类别分数可以是任意实数。Softmax 会放大相对差异,再把结果转换为正数,并让它们相加等于 1。
数字 316.6%
数字 859.0%
数字 924.5%

温度较低时差距被放大,温度较高时分布更平缓。最高类别在本例中没有改变,但概率数值发生了变化。

原始分数 · logits

用于比较的模型输出

可以为负数,也不需要落在 0–1。

Softmax 概率

候选类别间的相对分配

总和为 1,便于排序与展示。

最终类别

选择最大值的位置

分类任务中常用 argmax 选择最高的一项。

06

结果需要被正确解释

高概率不等于一定正确

模型只在当前候选和当前输入下表达倾向。输入偏离训练数据、类别缺失或概率没有校准时,即使数值很高也可能出错。
看 Top-1最可能的类别

适合必须给出单一答案的场景,但要同时考虑出错成本。

看 Top-k保留前几个候选

可用于搜索、推荐或人工复核,避免过早丢掉合理选项。

设置信心门槛不确定时暂不自动处理

把低信心结果交给人工或其他规则,门槛需用验证数据确定。

概率、准确率和置信度不是同一个概念

一次输出的 80% 不是“模型整体准确率为 80%”。整体表现要在有代表性的测试集上统计;概率是否可信,还需要单独检查校准情况。

07

可选代码实践

用 NumPy 表达一次前向传播

代码把“输入乘权重、加偏置、经过激活、转换概率”依次写出。数值来自一个小型教学例子。
forward-pass.py
import numpy as np

x = np.array([0.85, 0.72, 0.91])
W1 = np.array([[0.9, -0.2, 0.4],
               [-0.3, 1.1, 0.2],
               [0.7, 0.3, 0.9]])
b1 = np.array([-0.2, 0.05, -0.35])
W2 = np.array([[0.5, 0.7, -0.1],
               [-0.4, 0.4, 0.8],
               [-0.2, 0.9, 0.25]])
b2 = np.array([0.0, 0.15, 0.0])
h = np.maximum(0, x @ W1 + b1)
logits = h @ W2 + b2
probs = np.exp(logits - logits.max())
probs = probs / probs.sum()
print(dict(zip(["3", "8", "9"], probs.round(3))))
  1. x

    保存已经整理好的输入。

  2. W1、W2 与偏置

    两组数组保存隐藏层和输出层已经训练好的参数。

  3. x @ W1 + b1

    @ 表示矩阵乘法,完成隐藏层所有神经元的加权求和。

  4. np.maximum

    逐项应用 ReLU,把负数变为 0。

  5. 最后两行

    先计算指数,再除以总和,得到 Softmax 概率。减去最大值可让计算更稳定。

这段代码可以直接运行;它只演示一次预测,不包含读取图片或训练参数。第 15 课会在完整项目中串起全部流程。

08

知识检查与阶段总结

第一阶段,到这里形成闭环

先回答三个问题,再把前三课串起来:知道什么时候使用深度学习,看懂网络由什么组成,也能跟随它完成一次预测。

已回答 0 / 3 题 · 当前答对 0 题

01前向传播时会自动更新权重吗?
02Softmax 之前的类别分数有什么特点?
03最高概率为 80% 应怎样理解?
  1. 预测前,输入处理必须与训练时保持一致。
  2. 前向传播按当前权重和偏置逐层计算,不更新参数。
  3. 隐藏层重新组合数值,输出层产生类别原始分数。
  4. Softmax 把 logits 转成相加为 1 的相对概率。
  5. 一次高概率输出仍可能出错,需要用真实数据评估。

下一课 · COURSE 04

损失函数与梯度下降

从一次预测继续前进:衡量错误,再沿着减少错误的方向调整参数。

第二阶段 · 第 1 课
开始下一课 ↗