03 从 MLP 到 LeNet:一个分类模型,究竟是怎样做出判断的?

一个分类模型,究竟是怎样做出判断的?

很多人在接触分类模型时,最直观的理解往往是:输入一个样本,模型输出一个类别。

表面上看,这件事似乎很简单,但真正值得理解的问题是:

模型内部到底发生了什么,才让输入最终变成了一个分类结果?

这个问题之所以重要,是因为后面无论讨论 sigmoid、softmax、损失函数,还是前向传播与反向传播,核心都建立在同一个前提上:模型必须先产生一个可计算、可比较的输出结果,后续训练才有基础。


一、分类模型并不是"直接给答案",而是在做计算

"分类"这个词很容易让人产生一种错觉,好像模型像人在答题一样,看到输入之后直接说出答案。

实际上,分类模型的工作方式更接近于一个计算过程:

  1. 接收输入
  2. 根据当前参数进行运算
  3. 得到一组输出结果
  4. 再从输出结果中确定最终类别

这意味着,模型做判断并不是凭直觉,而是依赖一套确定的数值计算规则。

例如,在一个三分类问题中,模型可能对某个输入输出这样一组值:

python 复制代码
[1.2, 3.8, 0.5]

这组值本身还不是最终标签,它更像是模型对三个类别的"打分结果":

  • 第 0 类:1.2
  • 第 1 类:3.8
  • 第 2 类:0.5

如果只看最终结果,模型会把它归到分数最大的那个类别,也就是第 1 类。

所以,从更准确的角度说,分类模型不是"先知道答案",而是:

先算出每个类别的相对倾向,再据此做出判断。


二、输入为什么会变成一组类别分数?

要理解分类模型怎样做判断,关键是先接受一个事实:

模型不会直接理解输入的意义,它只会处理输入对应的数值表示。

比如一个样本可以写成一个向量:

python 复制代码
x = [2.0, 1.0]

这组数本身可能代表:

  • 两个特征
  • 两个统计量
  • 两个像素聚合值
  • 或者别的可量化信息

模型面对这个输入时,会用自己内部的参数去做运算。

最常见、也最基础的一种形式,就是:

  • 输入向量
  • 乘上权重
  • 加上偏置
  • 得到每个类别对应的输出分数

也就是说,模型并不是在"理解这个输入是什么",而是在回答另一个问题:

在当前参数条件下,这个输入更像哪一类?

这个"更像"最开始体现为一组数值,而不是一句自然语言答案。


三、同一个模型,为什么能对不同输入做出不同判断?

分类模型不是为每个输入单独写一套规则,而是用同一套参数化规则去处理所有输入。

这件事非常重要,因为模型的泛化能力正是从这里开始体现的。

假设有两个输入:

python 复制代码
x1 = [1.0, 2.0]
x2 = [3.0, 1.0]

模型面对这两个输入时,使用的仍然是同一组参数。

但是由于输入本身不同,计算出来的输出分数也会不同,因此最终预测类别也会不同。

这说明模型做判断依赖的是两个因素共同作用的结果:

  • 输入本身的数值结构
  • 模型当前的参数设置

如果输入不变、参数改变,结果会变。

如果参数不变、输入改变,结果也会变。

因此,分类判断并不是一个"固定答案",而是输入与参数共同作用后的输出结果。


四、一个最小例子:分类模型如何从输入得到输出

下面用一个非常小的例子,把"输入 → 分数 → 预测类别"这个过程完整展示出来。

python 复制代码
import numpy as np

# 两个输入样本,每个样本有两个特征
x1 = np.array([1.0, 2.0])
x2 = np.array([3.0, 1.0])

# 三个类别对应的参数
W = np.array([
    [0.5, 1.0],   # 第0类的权重
    [1.0, -0.5],  # 第1类的权重
    [-0.5, 0.5]   # 第2类的权重
])

b = np.array([0.1, 0.2, 0.3])  # 三个类别的偏置

def model(x):
    scores = np.dot(W, x) + b
    pred = np.argmax(scores)
    return scores, pred

for x in [x1, x2]:
    scores, pred = model(x)
    print(f"输入: {x}")
    print(f"输出分数: {scores}")
    print(f"预测类别: {pred}")
    print("-" * 30)

输出:

log 复制代码
输入: [1. 2.]
输出分数: [2.6 0.2 0.8]
预测类别: 0
------------------------------
输入: [3. 1.]
输出分数: [ 2.6  2.7 -0.7]
预测类别: 1
------------------------------

这个例子里有几个非常关键的点:

1. 模型没有直接输出"这是第几类"

它先输出的是每个类别的一组分数。

2. 最终类别来自分数比较

这里通过 argmax 取最大值的位置,作为最终预测结果。

3. 不同输入进入同一个模型,得到不同结果

这正是分类模型工作的基本逻辑。


五、权重和偏置到底在起什么作用?

上面的例子中,真正决定输出分数的不是输入本身,而是参数:

  • 权重 W
  • 偏置 b

1. 权重决定模型"更看重什么"

权重可以理解成模型对不同输入特征的重视程度。

如果某个特征对应的权重大,说明这个特征对某个类别的分数影响更明显。

如果权重为负,说明这个特征增大时,反而可能降低某个类别的分数。

2. 偏置提供整体平移

偏置的作用可以理解为给每个类别一个基础起点。

即使输入全为 0,偏置依然会让输出不一定为 0。

所以,分类模型并不是简单地"看输入",而是:

根据参数设定的方式,对输入做加权计算,得到每个类别的响应强度。

这也是为什么机器学习中的"学习"本质上就是调参数。

模型的判断能力,并不是写死的,而是由参数塑造出来的。


六、为什么很多模型先输出分数,而不是直接输出概率?

这是一个非常常见、也非常值得提前想清楚的问题。

上面的例子中,模型输出的是分数,例如:

python 复制代码
[2.6, 0.2, 0.8]

这些值能说明哪个类别更可能,但它们还不是严格意义上的概率。

比如:

  • 它们可能大于 1
  • 可能是负数
  • 所有值加起来也不一定等于 1

为什么模型不一开始就直接输出概率?

因为从计算角度看,先得到一组原始分数更自然

后面如果确实需要把这些分数变成概率,再通过特定函数处理即可。

这也是为什么输出层经常会引入 sigmoid 或 softmax,用来把原始输出变成更适合解释和比较的形式。

换句话说,分类模型的判断过程通常不是:

输入 → 概率 → 类别

而更常见的是:

输入 → 原始分数 → 概率或最大值 → 类别

这一步区分非常重要,因为后面很多训练细节都建立在"原始输出"和"最终输出"之间的关系上。


七、从判断结果回头看,真正需要理解的是什么?

理解分类模型怎样做出判断,重点不在于背下某个公式,而在于把下面几件事连起来:

1. 输入不是"答案的提示",而是模型计算的起点

模型面对的是数值表示,而不是人类语义。

2. 参数决定了模型如何响应输入

权重和偏置不是附属品,而是模型行为的核心来源。

3. 输出往往先是一组数值,再转成最终判断

模型通常不是直接说"这是第 3 类",而是先给出一组类别分数。

4. 最终类别只是输出结果的一种解释方式

真正可训练、可比较的对象,往往是模型内部先得到的那组输出值。

这也是为什么后面继续讨论 sigmoid、softmax、损失函数时,会自然进入"输出层到底在做什么"这个问题。


八、最容易混淆的几个点

1. 模型输出的就是最终类别

不一定。

很多分类模型首先输出的是一组原始分数,最终类别只是从这组分数中选出来的。

2. 分类模型面对不同输入会切换不同规则

不是。

通常是同一个模型、同一套参数,作用在不同输入上,得到不同结果。

3. 输出分数越大,就一定表示概率越大

不完全是。

原始分数可以反映相对倾向,但它本身未必是标准概率。

是否转成概率,要看输出层后续是否使用特定函数。

4. 参数只是实现细节,不影响模型本质

不是。

参数正是模型行为的核心,它决定了同一个输入会得到怎样的输出。


九、总结

一个分类模型做出判断的过程,本质上就是:

输入进入模型后,先经过参数化计算得到一组类别分数,再根据这些分数确定最终输出类别。

这个过程里最重要的并不是"模型猜中了什么",而是:

  • 输入如何参与计算
  • 参数如何影响输出
  • 为什么最终类别来自一组数值结果

只要把这三个问题理解清楚,后面继续讨论输出层函数、损失函数和训练过程时,逻辑就会自然连起来。

如果把全文压缩成一句话,可以概括为:

分类模型的判断结果,本质上是输入和参数共同作用后的数值计算结果。

相关推荐
热点推送2 小时前
爱电竞酒店2026开年加速扩张,1-2月签约开业多点开花,生态协同效应凸显
人工智能
QBoson2 小时前
基于多任务变分自编码器的晶格超材料力学性能逆向设计方法
人工智能·深度学习
xx_xxxxx_2 小时前
常见多模态架构CLIP/BLIP/Llava/CogVLM
人工智能·深度学习·机器学习·transformer·多模态
大嘴皮猴儿2 小时前
零基础入门:跨境电商产品图片多语言翻译的完整流程与跨马翻译实操
大数据·数据库·人工智能·自动翻译·教育电商
明月醉窗台2 小时前
[Jetson] 在Jetson Xavier AGX编译opencv+cuda
人工智能·opencv·计算机视觉·cuda·jetson
秋名山码民2 小时前
2026 年生成式优化引擎新范式:陕西灵怡秦智科技灵怡云系统深度解析 —— 从流量争夺到语义共鸣的营销变革
人工智能·科技
Yao.Li2 小时前
Dify Workflow 硬核解读(万字长文)
人工智能·python
艾莉丝努力练剑2 小时前
【QT】QT快捷键整理
linux·运维·服务器·开发语言·图像处理·人工智能·qt
2601_955363152 小时前
B端拓客号码核验:行业困局拆解与技术升级的理性思考氪迹科技法人号码核验系统、阶梯式价格
大数据·人工智能