感知器学习模拟器 返回
机器学习模拟器

感知器学习模拟器 — 线性分类器的收敛

可视化二输入单层感知器 y = sign(w1·x1 + w2·x2 + b) 的学习规则。在线性可分数据上,通过调节学习率与初始值,观察决策边界逐步收敛的过程。

参数设置
学习率 η
训练轮数
w_1 初值
b 初值

w_2 的初值固定为 0.5。数据由固定种子 LCG(seed = 42)生成,每次重绘出现的都是相同的 20 个点。

计算结果
最终分类精度
学习后 w_1
学习后 w_2
收敛所用轮数
最终决策边界

蓝点=类+1/红叉=类-1/绿实线=学习后的决策边界/灰虚线=真实边界 x1+x2=0

理论与主要公式

单层感知器是一个二输入的线性阈值单元,输出由加权和的符号给出:

$$y = \operatorname{sign}(w_1 x_1 + w_2 x_2 + b)$$

学习规则(感知器学习算法,PLA)。$t \in \{+1,-1\}$ 为标签,$y$ 为模型输出:

$$w_i \leftarrow w_i + \eta\,(t - y)\,x_i,\quad b \leftarrow b + \eta\,(t - y)$$

决策边界为 $w_1 x_1 + w_2 x_2 + b = 0$,绘图时整理为:

$$x_2 = -\frac{w_1 x_1 + b}{w_2}$$

边距(点到边界的有符号距离)用权重范数归一化:

$$\gamma = \frac{w \cdot x_{\text{target}} + b}{\|w\|}$$

当数据线性可分时,感知器收敛定理保证经过有限次更新一定能得到分离超平面。

什么是感知器学习模拟器

🙋
「感知器」是神经网络课程一开始就会出现的术语吧。现在还有必要学这个吗?
🎓
有必要。跳过这里,后面深度学习的原理就会显得像「神秘咒语」。单层感知器就是「用两个输入加权和的符号把数据分成两类」的最小模型,学习规则也只有一行 $w \leftarrow w + \eta(t-y)x$。上方「最终分类精度」是100%,是因为数据线性可分。
🙋
把学习率 η 调到接近1.0时,决策边界的斜率跳动得很厉害。
🎓
那是因为更新步长太大,一个误分类点就把权重甩得很远。线性可分时最终还是会收敛,但收敛所需的轮数会增加,或者边界停在远离真实边界 x1+x2=0 的位置上。实务上的常规做法是从小 η(0.01–0.1)开始,振荡太大就再调低。
🙋
「收敛所用轮数」卡片在默认值下显示的数字很小,这具体表示什么?
🎓
是「把全部数据过一遍后零误分类的第一轮」。默认 w=(0.5, 0.5), b=0 已经能干净地把数据分开,所以基本上第一轮就达到零误差。把 w_1 初值改成 -2 试试,模型一开始会把红叉和蓝点分反,就能观察到需要几轮才能翻过来。
🙋
那「学习」说白了就是从最初的瞎猜一点点往正确答案靠近?
🎓
对,而且只在出现误分类时才更新,做法非常节俭。这是在线学习的原型,对流式数据很有优势。Rosenblatt 在1958年提出的这个算法,与当今 SGD(随机梯度下降)一脉相承。一边拖动滑块一边看边界怎么动,能体会到一点深度学习优化器的心情。

常见问题

不能。XOR不是线性可分的,无论训练多少轮,权重都会一直振荡,决策边界不会收敛。Minsky和Papert于1969年在《Perceptrons》一书中指出了这一局限,成为第一次神经网络寒冬的导火索。增加一个隐藏层的多层感知器(MLP)可以通过对特征空间进行非线性变换来表示XOR。
单层感知器只能解决线性可分问题,而增加一层或多层隐藏层后,可以以任意精度逼近任意连续函数(通用近似定理)。训练使用误差反向传播法(backpropagation),激活函数也从阶跃函数换成了sigmoid或ReLU。当今的深度学习正是把这种多层结构做得更深。
两者都在寻找线性分离超平面,但优化目标不同。感知器只是「找到任意一个能分离的超平面」,解依赖于数据呈现顺序和初始值,不是唯一的。SVM寻找「使边距(边界到最近数据的距离)最大化的超平面」,解唯一且泛化性能更好。SVM还能通过核方法扩展到非线性问题。
最主要的原因是数据并非线性可分。此时感知器收敛定理不成立,权重会一直振荡。应对办法包括:(1) 用散点图确认数据是否真的线性可分;(2) 使用口袋算法(pocket algorithm)保留「迄今为止误分类最少的权重」;(3) 若线性不可分,则改用MLP或核SVM。本模拟器使用线性可分的固定数据集,因此一定能达到100%精度。

实际应用

历史意义(1958年起):Frank Rosenblatt 提出的单层感知器是现代神经网络与深度学习的起点。当时还做出了硬件实现,作为「会学习的机器」引起广泛关注。在Minsky和Papert指出其线性可分局限后曾一度进入寒冬,但通过多层化和误差反向传播法的发现得以复活,并直接通向今天的深度学习。

线性SVM和逻辑回归的理论基础:「学习一个把二分类数据线性分离的超平面」这一基本结构,是线性SVM、逻辑回归、线性判别分析(LDA)等当今仍广泛使用的线性分类器所共有的。理解感知器后,就能把这些方法的差异梳理为「损失函数」和「优化方法」的差异。

在线学习与流式数据:感知器是每来一个样本就更新一次权重的「在线学习」原型。它不需要保留整个批次,内存占用小,因此在数据顺序到达的场景(广告点击预测、欺诈检测、IoT传感器分析等)中至今仍在发挥作用。

教学与概念验证:感知器是机器学习入门教材中出现最频繁的算法之一。只需几行代码就能体验到「权重」「偏置」「学习率」「收敛」「过拟合」「线性可分性」这些至今对深度模型仍然重要的核心概念。

常见误解与注意事项

最常见的误解是认为「只要训练得足够久,任何数据最终都能被分开」。感知器收敛定理的形式是「如果数据线性可分,算法在有限步内收敛」;对于线性不可分的数据,跑100轮或10000轮都不会收敛。本模拟器特意使用线性可分的固定数据集,所以一定能达到100%精度,但现实数据如果不做特征工程,多数情况下并不能线性分离。

其次常见的陷阱是认为「学习率越大收敛越快」,把 η 调到接近1.0。步长确实变大了,但一个误分类点就会把权重甩得很远,导致边界斜率需要更多轮数才能稳定,或者最终停在远离真实边界(x1+x2=0)的位置。在上方模拟器中把 η 从 0.01 缓慢调到 1.0,比较「学习后 w_1, w_2」与「决策边界」的变化。实务上的常规做法是:先用小 η 开始,振荡大就调低,收敛太慢就调高。

最后,不要误以为「感知器的解是唯一的」。线性可分的数据存在无数个分离超平面(只要有一点边距,就能在该范围内平移或旋转边界)。感知器只是返回「最早达到零误差时的权重」,因此训练数据的呈现顺序和初始值不同会得到不同的边界。需要唯一的「最优边界」时,标准选择是把边距最大化作为目标函数的 SVM。