🧠

多层神经网络

为什么 4 个点的分类问题,单层永远做不到?
而加一层隐藏层之后,竟然可以拟合任何形状?

1 一个"看似简单"的分类问题

我们有 4 个点,分别属于两个类别。任务:画一条分界线,把红色蓝色分开。

x₁x₂类别
A00红 (0)
B10蓝 (1)
C01蓝 (1)
D11红 (0)
💡 规律:两个输入相同(都是 0 或都是 1)时是红色,两个输入不同时是蓝色。这就是经典的 XOR(异或)问题——人工智能史上最著名的例子之一,1969 年 Minsky 用它让整个神经网络研究停滞了十年。

2 试试看:能用一条直线分开吗?

用鼠标拖动两个蓝色圆圈(P1 和 P2),它们决定了这条分界线的位置和角度。看看最多能分对几个点:

红色区 (类别 0) 蓝色区 (类别 1)
拖动圆圈改变分界线角度和位置
? / 4
分对的点数
拖动圆圈,看看最多能分对几个
⚠️ 结论:无论你怎么画,最多只能分对 3 个。这不是"你画得不好",而是数学上根本不可能——因为一条直线把平面分成两个半平面,但 XOR 的两类点不能被任何半平面分开。

这是"单层感知机"的根本局限:只能解决线性可分的问题

3 突破:加一层"隐藏层"

既然一条直线不够,那就用两条直线!具体做法是——在输入层和输出层之间,加入一个隐藏层

模型参数(课件给定值)

第一层权重 & 偏置
w₁₁ = −5,   w₁₂ = 5
w₂₁ = −5,   w₂₂ = 5
b₁ = 8,   b₂ = −3
第二层权重 & 偏置
w₁ₖ = 5,   w₂ₖ = 5
bₖ = −8
 
关键直觉:隐藏层的每个神经元各画一条直线,它们的组合就可以形成复杂的曲线边界。两条直线+一个"组合规则",恰好能切出 XOR 所需的形状。

4 一步步算给你看

选一个点,然后用 "下一步" 按钮一步一步看数据如何从输入流到输出:

👆
请先点击上面任意一个点,开始演算
✅ 观察:四个点全部被正确分类!其中 A、D(对角线上的点)激活了隐藏层的不同组合,所以输出层最终给出"红色";B、C 激活了两个隐藏神经元都强烈响应,输出层加起来超过阈值 → "蓝色"。

5 看看整个平面:网络画出了什么?

不只是 4 个点——整个平面上的每一个位置,网络都能给出一个"是红还是蓝"的预测。下面是网络在整个 (x₁, x₂) 空间上的决策边界

这就是隐藏层的魔力:网络在平面上画出了一条非线性的弯曲边界,刚好把 4 个训练点分开。注意边界不是一条直线,而是一个"S 形"的曲面投影——这是激活函数 + 两层组合带来的非线性能力。

6 进一步:多层网络可以拟合"任何"函数

XOR 只是开始。当隐藏层越多、神经元越多,网络能拟合的决策边界就越复杂——理论上可以逼近任何连续函数(这就是著名的通用近似定理 Universal Approximation Theorem)。

① 单个神经元
只能画一条直线
适合线性可分的简单问题。
② 2 个隐藏神经元(我们的例子)
两条线组合 → 弯曲边界
能解决 XOR 这种经典难题。
③ 更多神经元
可以画出圆形、环形等复杂边界。
适合更复杂的分类问题。
④ 深层多神经元
可以拟合任意形状的边界。
这就是深度学习的力量源泉。
💡 通用近似定理(简版):一个包含至少一层隐藏层、神经元足够多的神经网络,可以在任意精度下逼近任何连续函数

但注意:"能做到"不等于"容易做到"——网络层数、神经元数量、训练方法都会影响实际效果。而且强大的拟合能力也带来了可解释性差("黑箱")过拟合等新问题。

🎓 从单层到多层,关键转折

单层 = 一条线
只能处理线性可分问题,XOR 这样的"交叉"问题就没辙
🔑
隐藏层 = 多条线
每个隐藏神经元画一条线,组合起来形成非线性边界
🌟
多层 = 任意形状
足够多神经元 + 足够多层 → 可以拟合任何连续函数

深度学习的革命,本质上就是把网络从"一层"变成了"很多层"——每层都在前一层的基础上学习更抽象的特征,最终让网络拥有了近乎"万能"的表达能力。