风起于青萍之末(下):从 XOR 到神经网络与 LLM
Posted on 二 14 7月 2026 in Tech
| Abstract | 风起于青萍之末(下):从 XOR 到神经网络与 LLM |
|---|---|
| Authors | Walter Fan |
| Category | Tech |
| Status | v1.0 |
| Updated | 2026-07-14 |
| License | CC-BY-NC-ND 4.0 |
一条直线,撞上了四个点
上篇讲到,感知机像一个拿着计分表的门卫:收集证据,乘以权重,加上偏置,再看总分是否过线。训练也不复杂,预测错了或刚好压线,就把权重往正确方向推一下。
这套办法对线性可分的数据很有效。说白了,只要两类样本能被一条直线切开,感知机就有机会找到那条线。
问题也恰恰出在“一条线”上。
有一个只有四条数据的小问题,单个感知机无论训练多久都解决不了。它叫 XOR。这个小钉子并没有钉死神经网络,反而撬开了一扇更大的门:原始空间分不开,能不能先学习一种新的表示?
这篇文章沿着这条线,回答四个问题:
- XOR 为什么能难住单个感知机;
- 多一层网络以后,为什么突然可以解决;
- 反向传播怎样让隐藏层学会有用的表示;
- 从多层感知机到 Transformer 和 LLM,什么发生了变化,什么一直没变。
这篇文章怎么读
| 你想带走什么 | 建议路线 | 可以放心跳过 |
|---|---|---|
| 只想听懂演进故事 | 第 1 至 6 节主干 | 所有“数学加餐” |
| 想理解神经网络训练 | 第 1、2、3、5 节 | XOR 不等式证明和第 4 节 Transformer |
| 想弄懂数学骨架 | 从头阅读,重点看 XOR 构造与链式法则 | 无 |
遇到“数学加餐”时,若不感兴趣,略过公式和推导,从加餐后的第一段正文继续即可。
1. 一道 XOR,把感知机难住了
异或(XOR)的规则是:两个输入不同时输出 1,相同时输出 0。
| \(x_1\) | \(x_2\) | XOR |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
把四个点画在平面上,两个正类落在对角,两个负类落在另一条对角。无论怎样画一条直线,都不能把它们完全分开。
不是训练时间不够,也不是学习率没调好,而是单个感知机的表达能力根本装不下 XOR。
数学加餐:用不等式证明“一刀切不开”
若一个感知机能表示 XOR,那么应满足:
由中间两式可知 \(w_1\ge-b\) 且 \(w_2\ge-b\),于是:
这和最后一式矛盾。几何图上的“画不出一条线”,在代数里就变成了四条无法同时成立的不等式。
1969 年,Marvin Minsky 和 Seymour Papert 在《Perceptrons》一书中系统研究了这类局限。后来很多简化版历史把它说成“他们证明了神经网络不行,于是 AI 进入寒冬”,这话说得太满。更准确的说法是:单层感知机的能力边界被严肃地摆上了桌面,而当时训练多层网络的方法、算力和数据都还不成熟。热情退潮不只由一本书造成,技术史也很少只有一个反派。
有意思的是,XOR 没有判感知机死刑,反倒给后人指了路:一刀分不开,能不能先换一个空间,再画一刀?
2. 多一层,为什么世界就不一样了
破局的办法不是苦练画出一条更聪明的直线,而是先换一组问题。第一层暂时不回答 XOR,只回答两个更简单的问题:
| 输入 | 至少一个为 1? | 两个都是 1? | 最终 XOR |
|---|---|---|---|
| 0, 0 | 0 | 0 | 0 |
| 0, 1 | 1 | 0 | 1 |
| 1, 0 | 1 | 0 | 1 |
| 1, 1 | 1 | 1 | 0 |
第二层拿到这两个新答案后,只需选择“至少一个为 1,但不能两个都是 1”。原来纠缠在一起的四个点,换一种表示后就能分开了。
这就是隐藏层的作用:不急着给最终答案,先把原始问题改写成一组更好用的新特征。
数学加餐:用两个隐藏单元写出 XOR
若想看具体参数,可以用两个隐藏单元把 XOR 拆开:
再组合一次:
这三个公式正是上面那张表的数学版本:第一层创造“至少一个为 1”和“两个都是 1”两个新特征,第二层再组合它们。
这才是多层神经网络真正厉害的地方:
前一层学习怎样表示问题,后一层学习怎样在新表示上作决定。
单个感知机只会在原空间画一条线;多个感知机组成隐藏层,可以把空间切成多个区域;层层组合以后,简单边界能够拼成复杂边界。图像网络的浅层可能响应边缘和纹理,深层再组合成部件和对象;语言模型的浅层处理局部词形和位置,后面的层逐步形成与语法、指代和语义有关的表示。
这里的“形成”不是工程师手工给每个神经元分配任务。我们只给目标和数据,表示是在优化过程中学出来的。这一点,比“多画了几条线”更深。
3. 光有多层还不够,还得解决“谁该背锅”
多层网络早就有人想到,麻烦在于怎样训练。
最后输出错了,输出层当然有责任,可前面几十层里的每个权重该改多少?这就是典型的信用分配问题(Credit Assignment Problem),用职场话说就是:项目出了问题,不能只让最后写汇报的人背锅,得沿着依赖链找到每个环节贡献了多少误差。
硬阶跃函数不适合这件事,因为它几乎处处导数为零。后来神经网络采用 Sigmoid、Tanh、ReLU 等非线性激活函数,让网络在保留非线性表达能力的同时,能够计算梯度。
先用一个项目复盘来理解反向传播:
| 阶段 | 神经网络 | 项目复盘 |
|---|---|---|
| 前向传播 | 输入逐层计算,得到预测 | 需求经过各团队,最后交付产品 |
| 计算损失 | 比较预测与正确答案 | 比较交付结果与目标 |
| 反向传播 | 从结果往回计算每层的责任 | 沿依赖链查每个环节贡献了多少偏差 |
| 更新参数 | 按责任大小调整权重 | 各环节针对性改进 |
反向传播并不是让错误数据倒着流一遍,而是把“最终误差对每个参数有多敏感”逐层算回去。某个参数对结果影响大,就多改一点;影响小,就少改一点。
只看主线的读者记住这一句即可:前向传播负责作答,反向传播负责追责,梯度下降负责整改。
数学加餐:链式法则怎样逐层追责
下面两条公式只是把“前向作答、反向追责”写得更精确。跳过它们,直接从“1986 年”那段历史继续即可。
对一个 \(L\) 层网络,前向计算可以概括为:
反向传播则用链式法则把最终损失逐层传回去:
1986 年,David Rumelhart、Geoffrey Hinton 和 Ronald Williams 在 Nature 发表论文,推动反向传播广为人知。反向传播的思想并非凭空在这一年出现,但这项工作清楚展示了:隐藏层能够通过误差反传学出有用的内部表示。
至此,感知机留下的几个零件终于组装成了更强的机器:
| 感知机里的种子 | 神经网络里的发展 |
|---|---|
| 加权求和 | 矩阵乘法,一次计算许多神经元 |
| 阈值激活 | 可导或几乎处处可导的非线性激活 |
| 错了就调权重 | 损失函数、梯度下降和反向传播 |
| 一个分类边界 | 多层表示与复杂决策边界 |
| 一条条处理样本 | 成批处理、GPU 和分布式训练 |
当然,能表示不等于能学会,能学会也不等于泛化得好。网络加深以后,还有梯度消失、过拟合、初始化、优化稳定性等一长串麻烦。技术的演进从来不是解决一个问题后从此太平,而是解决一个问题,换来一批更高级的问题。程序员对此应该很熟悉。
30 秒复盘:从一条线走到多层网络
到这里先停一下。前三节其实只完成了三次升级:
| 遇到的问题 | 解决办法 | 新能力 |
|---|---|---|
| 一条线分不开 XOR | 增加隐藏层 | 先学习新特征,再分类 |
| 隐藏层不知道怎么调整 | 使用可导激活与反向传播 | 把误差责任逐层传回去 |
| 一个神经元能力太小 | 大量单元并行并逐层组合 | 表达更复杂的模式 |
如果有点累,可以在这里停下来。前半篇已经回答了“神经网络为什么比单个感知机强”。后半篇只做一件事:看看这套老骨架怎样住进 Transformer。
4. 从多层感知机到 Transformer
走到这里,还不能说“多层感知机就是 LLM”。中间隔着卷积网络、循环网络、表示学习、注意力机制、海量语料、GPU 集群和许多工程突破。跳过这些直接画等号,差不多相当于说算盘就是云计算,祖上有关系,但不能冒充同一个产品。
不过,2017 年提出的 Transformer,身体里依然能看到感知机留下的基本动作。
线性投影:还是加权组合
模型会先把文本切成一个个基本片段,称为 token,它可能是一个字、一个词或词的一部分。自注意力再把每个 token 的输入表示复制成三份不同用途的版本:Query 表示“我在找什么”,Key 表示“我能提供什么线索”,Value 表示“我的实际内容是什么”。这三份不是原样复印,而是分别乘上可学习的权重:
不看公式也没关系,它表达的就是:同一份输入,经过三套不同的打分规则,变成三种角色。 这仍是学习权重后的线性变换,只不过从一个向量的一次点积,变成了大批向量的矩阵运算。
Attention:不只变换自己,还选择看谁
开会时,你不会同等关注每个人说的每句话。讨论数据库故障,你会多听数据库工程师;讨论页面颜色,你会多听设计师。Attention 做的事类似:处理当前 token 时,根据上下文动态决定其他 token 各有多重要。
公式里的 Softmax 负责把关注程度变成一组加起来等于 1 的比例。感知机只问“这些输入特征该各占多大权重”,自注意力进一步问“处理当前 token 时,序列里的其他 token 各该看多少”。权重不再完全固定,而是随上下文动态变化。
前馈网络:每一层里都住着一个 MLP
Attention 负责从上下文收集信息,接下来还要消化这些信息。Transformer 的每个块通常包含一个逐位置前馈网络,可以把它看成每个 token 都要单独经过的一间小型加工厂:先扩大和变换表示,经过非线性激活,再压回需要的尺寸。
这就是多层感知机(MLP)的现代版本。公式看不懂,只要记住“变换一次、激活一下、再变换一次”。具体模型可能采用 GELU、SwiGLU 等激活和门控结构,但“线性变换 + 非线性 + 再线性变换”的骨架还在。
训练目标:仍然从错误中调权重
LLM 在预训练时,常见目标是根据前文预测下一个 token。模型会给候选答案各分配一个概率,再用一种叫交叉熵的损失函数衡量预测与正确答案的差距:正确答案的概率给得越低,受到的惩罚越大。最后,反向传播更新所有层的参数。
| 模型 | 从错误中学习 |
|---|---|
| 感知机 | 样本分错或压线 → 直接调整相关权重 |
| LLM | 下一个 token 预测得不好 → 反传梯度 → 调整大量参数 |
二者规模相差巨大,目标和结构也不同,但“让误差告诉参数该往哪里走”这条主线没有断。
5. 为什么这么小的东西,能长出神经网络
回头看,感知机能成为神经网络的起点,不是因为它本身足够强,而是因为它有五个适合继续生长的基因。
1. 它把规则变成了可学习参数
传统程序由人写规则,感知机只规定计算框架,具体权重由数据决定。这个变化看似小,却把“编程”从手写判断推进到搜索参数空间。
2. 它可以组合
一个感知机表达一条边界,多个感知机可以并行表达多条边界,再把输出交给下一层。简单单元可堆叠,这是复杂系统生长的前提。晶体管也不会写博客,可足够多的晶体管组合起来,咱们就得开始担心 AI 会不会抢饭碗了。
3. 非线性让组合不再白堆
把一个只会放大两倍的机器,接到另一个只会放大三倍的机器后面,最终效果无非是放大六倍,完全可以换成一台机器。线性网络也是如此。
数学上,多次线性变换总能合并成一次,最后仍等价于一层。激活函数引入非线性,才让深度真正增加表达能力。没有非线性,百层网络只是把一张纸反复对折又摊平,看着忙,能力没变。
4. 梯度让庞大参数能够一起学习
感知机用局部错误更新权重,反向传播把这个思想推广到多层、可求导的计算过程。链式法则给每个参数算出责任份额,训练算法再统一调整。没有这套机制,多层网络只能靠碰运气试参数,规模一大就寸步难行。
5. 它的核心运算适合规模化
点积、矩阵乘法、逐元素激活,都容易批量并行,也适合 GPU、TPU 这类专门加速大规模计算的芯片。算法能组合,训练能求导,计算还能并行,三件事凑齐,规模化才不只是口号。
一句话:
感知机贡献的不是一个万能模型,而是一种可学习、可组合、可扩展的计算单元。
从感知机到 LLM,真正不断长大的,是表示能力、训练方法和计算规模。
6. 一张演进路线图
把八十多年的故事压缩一下,大致是这样:
这条路线不是一条笔直的大道,中间有退潮、有绕路,也有许多并行发展的分支。可那根最朴素的线一直在:输入经过带参数的变换产生输出,再根据误差修正参数。
最后一句:失败不是句号,是路标
感知机很简单,简单到只能解决线性可分问题;感知机也很深刻,深刻到它把“机器从例子中学参数”变成了一套明确算法。
它失败在 XOR,并不是一个尴尬的黑历史。恰恰是这次失败逼人们看见:原始特征不够,就学习新的表示;一层不够,就引入隐藏层;硬阈值没法传递责任,就换成可求导的非线性,用反向传播逐层更新;处理语言时需要灵活利用上下文,就让 Attention 动态决定该重点看谁。
所以,若想真正理解神经网络,不妨先亲手写一次感知机,再让它去学 XOR,看它怎样固执地犯错。成功让人知道算法会什么,失败才告诉人边界在哪里。
下篇动手清单
- [ ] 用上篇的感知机代码训练 XOR,记录每轮错误数;
- [ ] 用两个隐藏单元构造 XOR,理解“学习表示”是什么意思;
- [ ] 把阶跃函数换成 Sigmoid,推一遍链式法则;
- [ ] 打开一个 Transformer 实现,找到线性投影、Attention 和 FFN;
- [ ] 用自己的话解释感知机和 LLM 之间“像在哪里,不像在哪里”。
术语小抄
| 术语 | 一句话解释 |
|---|---|
| XOR | 两个输入不同时为 1,相同时为 0 |
| 隐藏层 | 在输入和输出之间学习新表示的网络层 |
| 梯度 | 参数稍微变化时,误差会怎样变化 |
| 反向传播 | 计算每个参数对最终错误应负多少责任 |
| token | 模型切分文本后处理的基本片段 |
| Attention | 根据当前上下文,动态决定应该重点看谁 |
| Transformer | 以 Attention 和前馈网络为核心的神经网络架构 |
| LLM | 用海量文本训练的大规模语言模型 |
参考资料
- Warren S. McCulloch, Walter Pitts, A Logical Calculus of the Ideas Immanent in Nervous Activity, 1943.
- Frank Rosenblatt, The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain, 1958.
- Marvin Minsky, Seymour Papert, Perceptrons: An Introduction to Computational Geometry, MIT Press, 1969.
- David E. Rumelhart, Geoffrey E. Hinton, Ronald J. Williams, Learning representations by back-propagating errors, 1986.
- Ashish Vaswani et al., Attention Is All You Need, 2017.
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。