感知机(Perceptron)是 1958 年 Frank Rosenblatt 提出的模型,也是所有神经网络的基础。
一、什么是感知机?
从本质上来说,感知机是一个二分类 的模型。核心思想:在特征空间中寻找一个线性的超平面(在二维空间中就是一条直线),将两类不同的数据彻底分开。
数学形式非常简单:
f(x)=sign(w⊤x+b)f(x) = \text{sign}(\mathbf{w}^\top \mathbf{x} + b)f(x)=sign(w⊤x+b)
其中:
- x=x1,x2,...,xd\mathbf{x} = x_1, x_2, \\dots, x_dx=x1,x2,...,xd:输入特征
- w=w1,w2,...,wd\mathbf{w} = w_1, w_2, \\dots, w_dw=w1,w2,...,wd:权重,每个特征的重要性
- bbb:偏置,决定分类的"及格线"
- sign(z)={+1,z>0−1,z≤0\text{sign}(z) = \begin{cases} +1, & z > 0 \\ -1, & z \leq 0 \end{cases}sign(z)={+1,−1,z>0z≤0:符号函数,输出正负
二、损失函数(Loss Function)
感知机使用的损失函数公式为:
L=max(0,−yf(x))L = \max(0, -y f(x))L=max(0,−yf(x))
其中 f(x)=w⊤x+bf(x) = \mathbf{w}^\top \mathbf{x} + bf(x)=w⊤x+b(注意这里没有经过 sign 函数,是原始的线性输出),y∈{−1,+1}y \in \{-1, +1\}y∈{−1,+1} 是真实标签。
这个设计的巧妙之处在于:
-
当分类正确时 :yyy 和 f(x)f(x)f(x) 同号,yf(x)>0y f(x) > 0yf(x)>0,因此 −yf(x)<0-y f(x) < 0−yf(x)<0,外层的 max\maxmax 函数将其与 0 比较取最大值,此时损失为 0。这意味着模型当前表现很好,不产生任何惩罚。
-
当分类错误时 :yyy 和 f(x)f(x)f(x) 异号,yf(x)<0y f(x) < 0yf(x)<0,因此 −yf(x)>0-y f(x) > 0−yf(x)>0,损失为正值。误分类越严重(∣f(x)∣|f(x)|∣f(x)∣ 越大),损失越大。
三、模型优化:梯度下降
在根据损失函数更新模型参数时,感知机采用的策略非常轻量。
感知机在执行梯度下降时,使用的是批量大小(batch size)为 1 的方式。
这意味着算法每次只拿出一个样本进行错误评估和参数调整,这其实也就是我们常说的**随机梯度下降(SGD)**的早期应用。
更新规则如下:
wj←wj+η⋅y⋅xjw_j \leftarrow w_j + \eta \cdot y \cdot x_jwj←wj+η⋅y⋅xj
b←b+η⋅yb \leftarrow b + \eta \cdot yb←b+η⋅y
其中 η\etaη 是学习率。
每次更新只在一个误分类样本上进行,而且更新方向非常直观:
- 如果真实类别是 +1+1+1 但预测为 −1-1−1,说明 f(x)f(x)f(x) 太小,需要把权重往 xxx 的方向移动
- 如果真实类别是 −1-1−1 但预测为 +1+1+1,说明 f(x)f(x)f(x) 太大,需要把权重往 −x-x−x 的方向移动
这种"一次只看一个样本"的策略让感知机非常轻量、计算开销极小,但也带来了一个缺点:如果数据有噪声,单个样本的误分类可能导致参数来回震荡。
四、感知机收敛定理(Novikoff 定理)
只要数据本身就是可以通过一条线完美分开的(线性可分),感知机就不会无限循环下去。
定理核心 :如果训练集线性可分,则感知机算法在有限步内必然收敛。

我们可以通过数据在空间中的分布来直观理解收敛的速度:
- 数据越收敛(集中在一定的半径范围内),模型越容易调整
- 两类数据之间的分界线越宽 (余量 γ\gammaγ 越大),模型越能够轻松分类
数学上,收敛步数 kkk 满足:
k≤(Rγ)2k \leq \left(\frac{R}{\gamma}\right)^2k≤(γR)2
其中 RRR 是数据到原点的最大距离,γ\gammaγ 是两类数据之间的最小间隔。
- RRR 越小 → 数据越集中 → 收敛越快
- γ\gammaγ 越大 → 类别间隔越宽 → 收敛越快
只要满足这些条件,感知机算法就能保证在经过有限步的调整后,彻底收敛并找到那个完美的分类边界。
五、缺陷:XOR 问题

感知机不能拟合 XOR(异或)函数。
XOR 的真值表:
| 输入 x₁ | 输入 x₂ | 输出 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
为什么感知机搞不定 XOR?
这是因为感知机的数学结构决定了它只能产生线性的分割面。在二维空间中,感知机只能画一条直线来分开两类数据。
如果我们把 XOR 函数的四个状态画在坐标轴上,会发现:
(0,1) 类别 1 (1,1) 类别 0
(0,0) 类别 0 (1,0) 类别 1
相同类别的点分布在对角线的位置上(例如第一、三象限是一类,第二、四象限是另一类),在二维平面上,我们绝对无法只画一条单一的直线就把这两种颜色(类别)完美切分开。
这就是线性不可分------不存在一条直线能把两类完全分开。
这个发现的影响有多大?
1969 年,Minsky 和 Papert 在《感知机》一书中指出了这个局限,直接导致了神经网络研究的第一次寒冬。人们认为:如果连 XOR 这么简单的问题都解决不了,神经网络还有什么用?
直到后来引入了多层感知机(MLP)和非线性激活函数,深度学习才迎来了真正的爆发。
参考资料:
- Rosenblatt, F. (1958). The perceptron: a probabilistic model for information storage and organization in the brain.
- Minsky, M. & Papert, S. (1969). Perceptrons.
- 李航《统计学习方法》第 2 章:感知机