P5-1.1 感知机(perceptron)的直觉¶
Section ID:
P5-1.1Version:v2026.07.20
Part 4 把机器学习读成了问题定义、数据划分、泛化、评估与模型选择的流程。现在到了 Part 5,我们先问一个更小的问题:当模型接收数值并生成输出时,最小的神经网络计算单元到底长什么样。这个问题会把我们带到感知机(perceptron)。感知机是最简单的神经网络判断单元:它把多个输入(input)乘上不同的重要度(weight),再把这些结果相加,并依据这个结果给出输出。
如果后面的章节里需要再次快速确认感知机这个术语,可以回到英文概念词汇表里的 perceptron 条目作为基准线。
感知机要收住的第一个问题¶
本节整理以下问题。
- 感知机是在什么历史背景下出现的?
- 输入(input)、权重(weight)、求和(sum)、输出(output)是怎样连成一条流程的?
- 为什么感知机会被当作神经网络(neural network)的起点?
- 怎样用一个很小的数字例子检查感知机计算?
线性组合的几何含义与感知机边界的直觉会在 P5-1.2 里紧接着继续。XOR 问题与多层神经网络(multilayer neural network)的必要性,会在 P5-2.1 与 P5-2.2 里重新连接。激活函数种类的比较会在 P5-3.1 到 P5-3.5 里单独处理。也就是说,这一节先要抓住的是感知机最小的计算语法。
输入分数与决策边界的判断标准¶
- 能把感知机解释成
把输入值收集成加权和并据此作出判断的单元。 - 能说明权重(weight)是让不同输入具有不同重要度的值。
- 能理解为什么感知机看起来像线性模型与神经网络之间的连接桥梁。
- 能用一个小型数值比较跟着感知机的前向传播(forward pass)计算走一遍。
为什么从感知机开始¶
深度学习(deep learning)最终讲的是由很多层(layer)组成的神经网络。但如果一开始就看深层网络,计算会立刻显得复杂,也会让人更难看清为什么需要这种结构。
所以更适合先从最小单元开始。
- 输入进来。
- 每个输入被赋予一个重要度。
- 看合起来之后的结果。
- 决定输出什么。
这条简单流程在感知机里已经存在。
换句话说,感知机是理解神经网络到底在计算什么的起点。
历史背景¶
感知机这个名字因为 Frank Rosenblatt 在 1958 年的论文而广为人知。那个时期研究的核心想法其实很简单。
能不能让一个系统接收多个输入信号,并在超过某个标准时作出反应?
这个视角也连到更早的 McCulloch 与 Pitts 在 1943 年提出的人工神经元(artificial neuron)模型。记住下面这两点就够了。
- McCulloch-Pitts:把神经元看成非常简单的逻辑反应单元的早期视角
- Rosenblatt perceptron:把它发展成带有输入与权重、还能学习的判断装置的早期视角
所以,感知机并不是一个能解释今天所有深度学习结构的完整成品模型,但它是最早清楚展示接收输入,形成加权和,再据此判断这套基本语法的代表性例子。
用一个场景看感知机¶
感知机的计算流程可以被压缩得非常短。
flowchart TD
A["输入值<br/>x1, x2, x3"]
B["权重<br/>w1, w2, w3"]
C["加权和<br/>x1w1 + x2w2 + x3w3 + b"]
D["输出<br/>0 或 1,或一个分数"]
A --> B
B --> C
C --> D
这张图里最重要的是权重(weight)。结构里已经包含了这样一层意思:不是所有输入都被一视同仁地对待,有些输入会被看得更重,有些则更轻。
输入、权重、偏置分别是什么意思¶
阅读感知机时,最先出现的基本词有三个。
| 术语 | 英文 | 简单含义 |
|---|---|---|
| 输入 | input | 当前判断中进入的值 |
| 权重 | weight | 调整每个输入有多重要的值 |
| 偏置 | bias | 把整体基准线稍微移动的值 |
例如,把一条产线是否批准重启的判断极度简化,可以想成下面三个输入。
泄压是否完成重启清单是否确认是否还留有阻断报警
这三个输入会进入模型,而且每个输入都可以给不同的权重。
- 泄压完成可能是高重要度信号。
- 清单确认可能是中等重要度信号。
- 阻断报警哪怕只出现一次,也可能是强烈的扣分信号。
也就是说,感知机看的不只是有没有这个输入,还会一起表达什么应该被看得更重要。
为什么加权和(weighted sum)重要¶
感知机的核心计算是加权和(weighted sum)。
可以这样理解。
当同时查看多个信号时,给每个信号不同的权重,再把它们收拢成一个类似分数的值。
这个感觉也会连到 Part 4 中看过的线性回归(linear regression)与逻辑回归(logistic regression)。那些模型最终也都是把输入与系数(coefficient)相乘后再加总。
感知机之所以重要,是因为这个加权和会在后面的整个神经网络里不断重复,成为最基本的计算单元。
也就是:
- 接收输入。
- 乘上权重。
- 把结果加起来。
- 把结果交给下一步判断。
当这条流程随着层数不断堆叠重复,就会通向多层神经网络(multilayer neural network)。
为什么偏置(bias)要单独保留¶
读者很容易理解权重,却把偏置(bias)漏掉。但偏置是调节标准本身的重要数值。
如果用最直观的话说,偏置就是:
即使所有输入都接近 0,也决定模型默认更倾向哪一侧的值
例如,如果某个判断必须非常严格:
- 加权和稍微高一点时也不能立刻输出 1
- 必须让它跨过更高的标准
相反,如果系统需要非常敏感地反应:
- 即便是很小的信号,也能更容易让输出改变
偏置承担的就是移动这条基准线的作用。
感知机会输出什么¶
早期解释感知机时,常常会用反应 / 不反应,也就是 1 / 0 这样的二元输出(binary output)来讲。
但更准确的理解方式是:
感知机会先形成一个像分数一样的值,再根据这个值决定最终输出到哪一侧。
这一点之所以重要,是因为当后面出现激活函数(activation function)时,输出方式会变得更加多样。
所以在 1.1 里,先把感知机固定成用加权和形成分数,再把这个分数接到判断上的单元。
案例与例子¶
案例 1. 产线重启批准¶
可以想象一条产线停机后,操作员要决定是否批准重启的场景。操作员会快速扫过泄压是否完成、重启清单是否确认、是否还留有阻断报警,然后作出决定。人类也会同时看多个条件,但在实际判断中,并不会把所有条件都看得一样重。感知机会把这个场景转成数字,留下哪些输入会抬高分数,哪些输入会强烈拉低分数。
先把这个场景整理成一张表,可以得到下面这样。
| 输入项 | 值 | 权重 | 解读 |
|---|---|---|---|
| 泄压完成 | 1 | 0.8 | 强批准信号 |
| 清单确认完成 | 1 | 0.7 | 额外批准信号 |
| 仍有阻断报警 | 0 | -1.0 | 一旦出现就是强扣分信号 |
| 偏置 | - | -1.0 | 默认基准线 |
把这些值带入感知机计算后,可以这样阅读。
| 项目 | 值 |
|---|---|
| 泄压完成 | 1 x 0.8 = 0.8 |
| 清单确认 | 1 x 0.7 = 0.7 |
| 阻断报警 | 0 x -1.0 = 0.0 |
| 加上偏置 | -1.0 |
| 最终和 | 0.8 + 0.7 + 0.0 - 1.0 = 0.5 |
如果最终和高于标准,就可以读成批准,否则就读成拒绝。这个场景里重要的不是批准这个词本身,而是泄压与清单会把分数往上推,而阻断报警会在 weighted sum 里把分数大幅拉低。
把这个案例的判断顺序再压成一个小流程,就是下面这样。
flowchart TD
A["产线停机后等待重启"] --> B["检查泄压 / 清单 / 阻断报警"]
B --> C["旧标准:凭整体印象判断"]
B --> D["感知机标准:分开看各输入权重"]
D --> E["计算加权和 + 偏置"]
E --> F{"是否高于边界?"}
F -- "是" --> G["批准重启"]
F -- "否" --> H["暂缓重启"]
如果换个角度,从只改变一个输入时,判断会被摇动多大来重新看这个场景,会更清楚。
| 情形 | 改变的输入 | weighted sum | 判断 |
|---|---|---|---|
| 可以重启的场景 | block_alarm = 0 | 0.5 | 批准 |
| 仍留有阻断报警的场景 | block_alarm = 1 | -0.5 | 拒绝 |
人常常会把条件一起看完,然后凭整体感觉决定通过还是不通过。换到感知机视角时,会把每个输入分别看成它把分数提高了多少、拉低了多少。尤其阻断报警带有 -1.0 的权重,会明显拉低最终和。因此,与其只看批准 / 拒绝结果,更重要的是追踪到底是哪一个输入把结果推过了边界,进而把判断翻转了。
案例 2. 报警处置优先级的一次判定¶
报警处置优先级的一次判定,也可以用同样方式来读。人会把温度是否再次偏离、压力波动是否很大、是否发生现场呼叫放在一起看,再给出一个大概的风险感。感知机会给这些信号不同权重,把它们汇成一个分数,表示整体上离立即处置还有多近。于是原本模糊的看起来有风险会变成哪些输入对分数贡献了多少这种更清楚的形式。
可以先设一个非常简单的一次判定标准。
| 输入项 | 值 | 权重 | 贡献度 |
|---|---|---|---|
| 温度再次偏离 | 0 | 0.9 | 0.0 |
| 压力波动很大 | 1 | 0.8 | 0.8 |
| 发生现场呼叫 | 1 | 0.7 | 0.7 |
| 偏置 | - | - | -1.0 |
| 最终和 | - | - | 0.0 + 0.8 + 0.7 - 1.0 = 0.5 |
在这个场景里,即使没有温度再次偏离,只要压力波动与现场呼叫同时升高,最终和也会越过标准。也就是说,原本可能用温度没问题,所以先当作安全这种单一项就结束的判断,会变成把多个输入一起汇总后的分数判断。
如果把没有温度再次偏离就先算安全当作标准,它会过度依赖单个输入。换到感知机视角重新阅读时,先看的应该是把压力波动与现场呼叫也一起合进去的加权和,然后再分开看哪些信号真正把分数推得更多。所以在这个案例里要确认的结果不是单个温度信号,而是把压力波动与现场呼叫也一起放进 weighted sum 后,是否能更清楚地暴露出真正翻转判断的关键输入。
把这两个案例压成一句话,感知机的核心是一样的。
把多个输入按不同权重合成为一个分数,再根据这个分数作出判断。
再往前推一步,感知机也不只是把东西加起来,还可以读成一种让你看见到底哪个输入更关键地把结果推过边界的计算。
在产线重启批准案例里,像 block_alarm 这样的强扣分输入会把最终和往下拖。在报警处置优先级的一次判定里,压力波动与现场呼叫这类贡献更大的输入,会比温度这一项更直接地推动最终判断。两个案例里,读者首先要抓住的结论都是:感知机的重点不是看了很多条件,而是把真正推动或翻转最终判断的输入,用数字留下来。
练习与例题¶
即使不看 Python 代码,只要把同一组输入换成三个场景,也足够检查感知机到底在算什么。先看下面这张表,再尝试说明每个场景为什么会走向批准或拒绝。
| 情形 | 改变的输入 | weighted sum | 判断 | 首先该读的变化 |
|---|---|---|---|---|
| 可以重启的场景 | checklist = 1, block_alarm = 0 | 0.5 | 批准 | 两个批准信号跨过了基准线 |
| 刚好在边界下方的场景 | checklist = 0, block_alarm = 0 | -0.2 | 拒绝 | 少了一个清单信号后结果掉到边界下方 |
| 仍留有阻断报警的场景 | checklist = 1, block_alarm = 1 | -0.5 | 拒绝 | 阻断报警作为强扣分起作用 |
在这张表里,读者首先要抓住的不是结果标签,而是究竟哪个输入把结果推过边界,或把它重新拉了下来。
简单检查一下,可以得到下面几条。
可以重启的场景与刚好在边界下方的场景的差别,不是阻断报警,而是清单确认是否完成。刚好在边界下方的场景与仍留有阻断报警的场景虽然都是拒绝,但前者是批准信号不足,后者是强扣分信号造成的。- 因此,感知机不只是
把东西加总,而是让你读出哪个输入真正翻转了结果。
换句话说,阅读感知机的第一感觉可以先这样固定下来。
输出不是突然出现的,而是输入、权重和偏置一起形成的和所导出的结果。
什么时候先用感知机视角来读¶
第一次展开深度学习结构时,与其立刻从一个很深的网络名字开始,不如先抓住把多个输入按不同重要度汇成一个判断的最小计算单元是什么。
| 先遇到的问题场景 | 为什么先用感知机视角更有用 | 紧接着要接上的问题 |
|---|---|---|
| 需要解释多个输入信号怎样一起形成一次初步判断 | 它能最短地展示输入、权重、偏置、输出各自的角色。 | 接下来要确认这个判断是不是只形成了一条线性边界。 |
| 需要向第一次学神经网络的读者介绍计算语法 | 因为输入 -> 加权和 -> 输出这条流程是后面所有层结构的共同语法。 | 之后还得继续看为什么需要激活与多层结构。 |
| 想展示线性模型与神经网络的连接 | 它能让读者在进入 Part 5 时,不丢掉 Part 4 建立的线性模型感觉。 | 很快还要确认只重复线性组合为什么不够。 |
| 需要先用肉眼确认前向计算 | 小数字例子能立刻看出每个项目的贡献度与最终输出。 | 损失与反向传播还不是这一节的主题。 |
为什么它现在还不像深度学习¶
这里自然会出现一个疑问。
这不就是带权重的线性判断吗?为什么它会是深度学习的起点?
这个疑问是对的。只看一个感知机,它确实还不深。层只有一层,表达也很简单。
但深度学习最核心的计算语法已经在这里出现了。
- 值进入
- 权重被乘上去
- 结果被加起来
- 输出再被传给下一步计算
当这个单元被堆成多层,加入激活函数(activation function),再通过反向传播(backpropagation)调整权重时,就会通向我们通常说的深度学习模型。
也就是说,与其把感知机看成深度学习的完成形态,不如把它看成深度学习不断重复的最小计算单元,这样更准确。
这一节真正的重点,不是背住感知机这个名字,而是把神经网络计算里最小的语法先固定下来。
| 当前这一节先要抓住的东西 | 下一步马上要接上的问题 | 这一节还不会做的事 |
|---|---|---|
| 输入、权重、偏置怎样汇成一个输出 | 把这个单元堆成多层后会有什么变化 | 如何通过损失形成误差,再用反向传播修正权重 |
检查清单¶
- 能否把感知机解释成
输入 -> 权重 -> 求和 -> 输出这条流程? - 能否说明为什么感知机会被当作神经网络的起点?
- 能否解释感知机是把多个输入汇成加权和并生成输出的最简单神经网络判断单元?
- 能否说明权重(weight)与偏置(bias)分别承担输入重要度调节与基准线移动的作用?
- 是否知道后面的多层神经网络与深度学习,其实都是在重复并扩展这个基本计算单元?
- 当第一次解释神经网络时,能否在比起复杂层结构更适合先抓最小计算单元的场景里,先想到感知机视角?
- 当多个输入信号怎样汇成一个判断开始变模糊时,能否重新回到带权重与偏置的加权和计算?
- 是否知道只靠感知机说明,目前还只闭合到了线性判断单元,激活与多层结构会交给下一节与下一章?
出处与参考资料¶
- Frank Rosenblatt,
The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain, Psychological Review, 1958, 确认日期: 2026-07-19. https://doi.org/10.1037/h0042519 - Warren S. McCulloch, Walter Pitts,
A Logical Calculus of the Ideas Immanent in Nervous Activity, The Bulletin of Mathematical Biophysics, 1943, 确认日期: 2026-07-19. https://doi.org/10.1007/BF02478259 - Ian Goodfellow, Yoshua Bengio, Aaron Courville,
Deep Learning, MIT Press, 2016, 确认日期:2026-06-28. https://www.deeplearningbook.org/ - Yann LeCun, Yoshua Bengio, Geoffrey Hinton,
Deep learning, Nature, 2015, 确认日期:2026-06-28. https://www.nature.com/articles/nature14539