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. 参数只是实现细节,不影响模型本质

不是。

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


九、总结

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

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

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

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

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

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

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

相关推荐
奔跑中的小象1 天前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南1 天前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang1 天前
LangGraph 状态机实战
人工智能
刹那芳华19921 天前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作1 天前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门1 天前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜1 天前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟1 天前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦1 天前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
阿里云云原生1 天前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能