第1章 经典人工神经网络

人工智能的每一次飞跃,几乎都建立在同一类数学结构之上 - 由大量简单单元相互连接而成的神经网络。本章从大脑的神经元讲起,先回答”为什么神经网络能学习”,再沿着历史脉络介绍人工神经元、感知机、多层感知机与反向传播算法:它们正是今天 ChatGPT 背后深度学习与大模型的直接祖先。学完本章,你将拥有读懂全书乃至 AI 新闻的第一块基石:所谓”学习”,本质就是调整连接权重。

1.1 生物神经网络基本机理

人脑是迄今已知最复杂的计算装置:约 860 亿个神经元,每个神经元平均与数千个邻居相连,整个大脑形成约 100 万亿个突触连接。生物神经元的结构可以分成四个部分:树突(dendrites)像天线一样接收来自其他神经元的信号;胞体(soma)把接收到的信号汇集整合;轴突(axon)是一条细长的”输出线”,把整合结果传向远处;突触(synapse)则是两个神经元之间的”接口”,信号在此从上一个神经元的轴突末端传递给下一个神经元的树突。

图 1-1 生物神经元的结构:树突接收、胞体整合、轴突传导、突触传递

信号传递的机制可以概括为三步。第一步,上游神经元在突触处释放化学递质,使下游神经元的树突产生微小的电位变化 - 有的起兴奋作用(“加分”),有的起抑制作用(“减分”)。第二步,这些微小的电位在胞体处不断累加。第三步,当累加的总电位超过某个阈值(约 −55 mV,而静息电位约 −70 mV)时,神经元会”全或无”地发放一个动作电位(action potential):要么不响,一响就是完整的一枪,绝不半途而废。动作电位沿轴突高速传导,抵达末端后再次释放递质,把信号接力给下一个神经元。

除了结构,大脑还有一个更关键的性质:连接强度可以改变。心理学家唐纳德·赫布(Donald Hebb)在 1949 年提出著名的赫布学习律(Hebbian rule):“当神经元 A 的轴突反复参与激发神经元 B 时,A 与 B 之间连接的效能会增强。”通俗地说就是”一起放电的神经元,会连在一起”(fire together, wire together)。这正是”学习”最朴素的生物学解释:经验改变突触强度,突触强度改变行为。

提示

类比:神经元像一个小邮局
树突是收信口,胞体是分拣台,轴突是送信路线,突触是信筒。每封信(信号)的分量不同,分拣台按分量求和,一旦业务量超过”阈值”就派邮差送信。成千上万个这样的小邮局彼此通信,整个大脑就涌现出智能 - 智能不在任何一个邮局里,而在它们的连接模式之中。

重要

对人工模型的三大启示
把生物神经元抽象到极致,得到三条贯穿全书的启示:① 加权求和 - 突触输入按强度加权累加,对应数学上的 Σwᵢxᵢ;② 阈值激活 - 累加结果与阈值比较后”全或无”地决定是否发放,对应非线性激活函数;③ 连接可调 - 突触强度随使用而改变,对应可学习的权重 w。人工神经网络的全部故事,就是围绕这三件事展开的。

注记

补充
生物神经元的处理是异步、分布式且带随机性的,人工神经元只是对它的高度简化 - 但正是这种简化,让”智能”第一次变成可以写进公式、可以在计算机上运行的东西。神经元”离散而缓慢”(毫秒级),芯片”快速而确定”,二者各有胜负、互相启发。

1.2 人工神经元

1943 年,神经生理学家沃伦·麦克洛奇(Warren McCulloch)与逻辑学家沃尔特·皮茨(Walter Pitts)发表划时代论文,提出第一个人工神经元数学模型 - M-P 模型。它把 1.1 节的三条启示变成了可计算的公式:n 个输入信号 \(x_{1}\),…,\(x_{n}\) 分别乘以权重 \(w_{1}\),…,\(w_{n}\),求和后与阈值 \(\theta{}\) 比较,再经激活函数 \(f\) 输出:

\[ \begin{aligned} y&=f\!\left(\sum_{i=1}^{n}w_ix_i-\theta\right),\\ z&=\sum_iw_ix_i+b,\qquad b=-\theta. \end{aligned} \]

其中求和 Σwᵢxᵢ 对应树突的电位累加,减去阈值 θ 对应”是否达到发放线”,激活函数 f 对应”全或无”的发放规则。若把 −θ 改写为偏置 b,公式就变成更通用的 \(z\) = \(w\)·\(x\) + \(b\) 形式 - 偏置的作用是平移决策边界,让神经元”天生敏感”或”天生迟钝”。

图 1-2 人工神经元:对输入加权求和、减去阈值(或加偏置),再经激活函数输出

激活函数决定了神经元的”脾气”。早期 M-P 模型使用阶跃函数,输出非 0 即 1,对应”全或无”,但它在临界点不连续、处处不可导,无法用于基于导数的学习。后来人们引入平滑可导的 sigmoid 与 tanh;2010 年代后,计算简单且能缓解梯度消失的 ReLU 成为深度学习的事实标准。下表对比四种常见激活函数:

激活函数 公式 输出范围 特点
阶跃函数
Step
\(f\)(\(z\)) = 1(\(z\) ≥ 0),否则 0 {0, 1} 不连续、不可 导;M-P 模型与感知机的经典选择
Sigmoid \(\sigma{}\)(\(z\)) = (1)/(1 + e−z) ( 0, 1) 平 滑可导,输出可看作概率;导数最大仅 0.25,深层叠加易梯度消失
tanh tanh(\(z\)) = (ez − e−z)/(ez + e−z) (−1, 1) 输出 零均值,收敛通常快于 sigmoid;两端同样饱和
ReLU \(f\)(\(z\)) = max(0, \(z\)) [0, +∞) 计算极简,正 区间导数恒 1,缓解梯度消失;负区间导数恒 0(“死亡神经元”)
注记

补充
需要强调两点:其一,1943 年的 M-P 模型权重是人工设定的,还不能自动学习 - “会学习”要等 1958 年罗森布拉特的感知机(1.3 节);其二,为什么激活函数必须是”非线性”的?如果 \(f\)(\(z\)) = \(z\) 是线性函数,那么无论叠加多少层,整个网络仍等价于一个线性函数,多层就失去了意义。非线性的存在,是”深层网络能表达复杂函数”的前提 - 1.4 节还会从万能逼近定理的角度再谈一次。

1.3 单层感知机

1958 年,美国心理学家弗兰克·罗森布拉特(Frank Rosenblatt)在 M-P 模型的基础上造出了第一个能自动学习的神经网络 - 感知机(perceptron),并研制了名为 Mark I 的硬件原型机。当时的报纸惊呼”海军宣布造出会学习的电子大脑”,感知机迅速成为人工智能第一波热潮的明星。

感知机的结构与 1.2 节的人工神经元几乎相同,只是把阶跃函数换成符号函数(输出 ±1),并配上了学习规则。给定输入 \(x\),感知机先计算加权和 \(z\) = \(w\)·\(x\) + \(b\),再输出 \(\hat{y}\) = sign(\(z\))。它的几何含义非常直观:方程 \(w\)·\(x\) + \(b\) = 0 在二维平面上是一条直线,在高维空间是一个超平面 - 感知机用这个超平面把样本空间切成两半,一边判为正类,一边判为负类。因此感知机本质上是一个线性分类器图 1-3)。

图 1-3 感知机的几何意义:用一条直线(超平面)把两类样本分开,“学习”就是调整直线的位置

如何让超平面自动找对位置?罗森布拉特给出了一条朴素而深刻的学习规则:逐样本扫描训练集,每当预测与标签不一致(ŷ ≠ y),就按下式更新权重:

\[ w\leftarrow w+\eta(y-\hat y)x\qquad b\leftarrow b+\eta(y-\hat y) \]

其中 \(\eta{}\) 是学习率。直觉上:若把正样本(\(y\) = +1)误判为负(\(\hat{y}\) = −1),则 \(y\)\(\hat{y}\) = 2 > 0,权重沿 \(x\) 方向增大,超平面向”把 \(x\) 判为正类”的方向转动;反过来同理 - 每次犯错,都把分界面往正确的一侧”拽”一点。完整的训练过程如代码所示。

初始化 w = 0, b = 0, 学习率 η
重复,直到所有训练样本都被正确分类:
  对每个样本 (x, y):
    ŷ = sign(w·x + b)
    若 ŷ ≠ y:
      w ← w + η·(y − ŷ)·x
      b ← b + η·(y − ŷ)

罗森布拉特 1962 年证明了一个漂亮的结论 - 感知机收敛定理:只要训练数据线性可分(存在某个超平面能把两类样本完全分开),上述更新规则必在有限步内收敛到某个正确分类的超平面;Novikoff 还进一步给出了迭代次数的上界。这是机器学习史上第一个带严格证明的学习算法,“学习”第一次有了数学保证。

然而”线性可分”四个字埋下了隐患。1969 年,明斯基(Minsky)与帕珀特(Papert)在《感知机》一书中严格证明:单层感知机连异或(XOR)这样简单的函数都无法表示。XOR 的真值表如下 - 两个输入不同才输出 1:

$x_{1}x_{2}x_ {1}$ ⊕ $x_{2} $
0 0 0
0 1 1
1 0 1
1 1 0

把四组输入画到平面上(图 1-4),问题一目了然:输出为 0 的两个点 (0,0) 与 (1,1) 落在主对角线上,输出为 1 的两个点 (0,1) 与 (1,0) 落在另一条对角线上 - 两类点互相”穿插”,任何直线都无法把它们分开:沿主对角线画线,两个红点分居两侧;向任一方向平移、旋转,总有一类被切成两半。XOR 因此成为线性不可分的经典例子。

图 1-4 XOR 线性不可分:红色虚线是”沿主对角线的直线”,两个红点分居两侧 - 任何直线都无法分开红蓝两类;而绿色曲线(非线性边界)可以把两个红点圈出。这解释了单层感知机为什么学不会 XOR

注记

补充
单层感知机并非一无是处:它可以表示”与”(AND)、“或”(OR)、“非”(NOT)等线性可分函数,这也是它曾被称作”阈值逻辑单元”的原因。只有异或这类”非线性”函数才是它的禁区 - 而禁区之外,还有更广阔的世界。

《感知机》一书的打击是毁灭性的:它证明了单层感知机连 XOR 都学不会,又赶上当时算力与数据的极度匮乏,神经网络研究由此进入长达十余年的第一次人工智能寒冬。今天回头看,寒冬的真正教训不是”神经网络无用”,而是”单层不够” - 出路在 1.4 节:增加隐藏层,引入非线性。

1943M-P 模型:第一个神经元数学模型,权重靠人工设定。

1958罗森布拉特提出感知机:第一个能自动学习的神经网络。

1962感知机收敛定理:数据线性可分时,学习必在有限步内收敛。

1969明斯基与帕珀特证明 XOR 不可表示,神经网络进入第一次寒冬。

1986BP 算法复兴神经网络(1.5 节)。

1.4 多层感知机

走出寒冬的钥匙朴素得令人惊讶:在输入与输出之间,加一层”中间层”。我们把这种”输入层—隐藏层—输出层”的结构称为多层感知机(Multi-Layer Perceptron, MLP):那些不直接接触数据、也不直接产出结果的层称为隐藏层(hidden layer)。图 1-5 给出了输入 4 个神经元、隐藏 3 个、输出 2 个的典型 MLP - 层与层之间全连接,信号逐层从左向右流动。

图 1-5 多层感知机:输入层 → 隐藏层 → 输出层,层间全连接;隐藏层把输入重表达为新的特征空间

为什么加上隐藏层就”行了”?数学上有一个漂亮的保证 - 万能逼近定理(Universal Approximation Theorem):只要隐藏层神经元足够多、激活函数是非线性的,一个单隐藏层的前馈网络就能以任意精度逼近任意连续函数。Cybenko(1989)对 sigmoid 型激活给出了证明,Hornik 进一步把它推广到一大类激活函数。这个定理告诉我们:表达力不是瓶颈 - 任何你想要的连续映射,理论上都存在一个足够大的 MLP 可以实现它。

但必须注意两点。第一,定理只说”存在”,没说”怎么找到” - 找到正确的权重要靠 1.5 节的 BP 算法,这是”理论与工程之间隔着一条鸿沟”的典型例子。第二,它强烈依赖非线性激活:如果所有神经元都用线性激活 \(f\)(\(z\)) = \(z\),那么多层叠加后仍是线性变换(线性函数的复合还是线性函数),隐藏层再多也白搭,整个网络退化成一条直线。非线性,是网络”变弯”的能力来源。

多层感知机如何解决 XOR?秘密在于:隐藏层把原始输入重新表达成新空间,在新空间里问题变得线性可分。以 XOR 为例,两个隐藏神经元就能完成”翻译”:令 \(h_{1}\) = step(\(x_{1}\)+\(x_{2}\)−1.5)(相当于”与”),\(h_{2}\) = step(\(x_{1}\)+\(x_{2}\)−0.5)(相当于”或”),输出 \(y\) = step(\(h_{2}\)\(h_{1}\)−0.5),验证如下表:

(\(x_{1}\), \(x_{2}\)) $h_{1} $ = “与” \(h_{2}\) = “或” \(y\) = step($ h_{2}\(−\)h_{1}$−0.5)
(0, 0) 0 0 0
(0, 1) 0 1 1
(1, 0) 0 1 1
(1, 1) 1 1 0

这个手工构造说明:多层结构 + 非线性,可以让网络先学会”中间概念”(与、或),再组合成”异或”。这正是”深层网络逐层提取特征”思想的最早雏形,也是 40 年后深度学习的基本工作方式:浅层学简单模式,深层在简单模式之上组合出复杂模式。

提示

类比:神经网络像一家公司
输入层是一线员工,只汇报原始信息(像素、数值);隐藏层是中层管理者,把琐碎信息提炼成”这个人是不是熟面孔”“这句话是不是批评”之类的中间判断;输出层是 CEO,基于中层汇报做最终决策。层数越多,管理层级越多,能处理的概念就越抽象 - 今天大模型的”上千层”相当于一家巨型公司的完整管理体系,每一级都在上一级的结论之上做更抽象的加工。

重要

本节要点
① 隐藏层让网络从”单层线性”升级为”多层非线性”,表达力大幅跃升;② 万能逼近定理保证单隐藏层网络可逼近任意连续函数(存在性);③ 非线性激活不可或缺 - 全线性网络等价于单层;④ XOR 示例揭示”隐藏层 = 特征重表达”,这是深度学习的哲学起点。

1.5 BP人工神经网络

单隐藏层网络已经”能表达”,但如何学到正确的权重?1986 年,鲁梅尔哈特(Rumelhart)、辛顿(Hinton)与威廉姆斯(Williams)发表经典论文《Learning representations by back-propagating errors》,系统化地推广了反向传播算法(Backpropagation,BP),神经网络迎来全面复兴 - 这正是本节标题”BP 人工神经网络”的由来。

BP 的目标很明确:在训练集上最小化损失函数(loss function),它衡量预测与真值的差距。回归问题常用均方误差(MSE),分类问题常用交叉熵(cross-entropy):

\[ \begin{aligned} L_{\mathrm{MSE}}&=\frac12\sum_i(y_i-\hat y_i)^2,\\ L_{\mathrm{CE}}&=-\sum_i\left[y_i\ln\hat y_i+(1-y_i)\ln(1-\hat y_i)\right]. \end{aligned} \]

与 MSE 相比,交叉熵对”高置信度的错误预测”惩罚更重(预测 0.01 而标签为 1 时,ln 0.01 的惩罚远大于平方误差),因此与 sigmoid/softmax 搭配时训练更稳、更快。

损失 \(L\) 是所有权重的函数。要让它变小,最朴素的办法是梯度下降(gradient descent):算出 \(L\) 对每个权重 \(w\) 的偏导数(梯度),沿负梯度方向迈一小步:

\[ w\leftarrow w-\eta\frac{\partial L}{\partial w} \]

这就像在浓雾中下山:你看不清全貌,但只要每次朝”最陡的下降方向”迈一步,就能一步步接近谷底(至少是局部谷底)。学习率 \(\eta{}\) 就是步长 - 太大可能一步跨过山谷甚至越走越高,太小则寸步难行。

真正的难点在于:隐藏层的权重并不直接出现在损失里,如何求 (∂L)/(∂w)?答案就是链式法则 - 把”误差对输出的导数”逐层往回乘:

\[ \frac{\partial L}{\partial w}=\frac{\partial L}{\partial\hat y}\frac{\partial\hat y}{\partial z}\frac{\partial z}{\partial w} \]

反向传播的精髓在于:误差信号从输出层出发逐层往回”广播”,每一层只需把后一层传来的梯度乘上本层的局部导数,就能递推得到本层所有权重的梯度 - 一次前向、一次反向,全部梯度到手,避免了逐项暴力求导。图 1-6 展示了整个过程。

图 1-6 BP 算法的完整循环:实线为前向传播(计算预测与损失),红色虚线为反向传播(误差逐层回传、求梯度),最后按梯度下降更新所有权重

下面用一个最小的数值例子体会”前向—反向—更新”的完整循环。设网络只有两个神经元:输入 \(x\) = 1 经权重 \(w_{1}\) = 0.5 得到隐藏值 \(a\) = 0.5,再经 \(w_{2}\) = 0.8 得输出 \(\hat{y}\) = 0.4(为便于手算,暂用线性激活),目标 \(y\) = 1,损失取 MSE,学习率 \(\eta{}\) = 0.1:

步骤 计算 结果
① 前向 \(a\) = 0.5×1 = 0.5;\(\hat{y}\) = 0.8×0.5 = 0.4;\(L\) = (1)/(2)(1−0.4)² \(L\) = 0.18
② 反向(输出层) (∂L)/(∂w2) = (\(\hat{y}\)\(y\)\(a\) = (0.4−1)×0.5 = −0.3 $w_{2} $ ← 0.8 − 0.1×(−0.3) = 0.83
③ 反向(隐藏层) (∂L)/(∂w1) = (\(\hat{y}\)\(y\)\(w_{2}\)·\(x\) = (0.4−1)×0.8×1 = −0.48 \(w_{1}\) 0.5 − 0.1×(−0.48) = 0.548
④ 再前向 \(a'\) = 0.548;\(\hat{y}'\) = 0.83×0.548 ≈ 0.455;\(L'\) = (1)/(2)(1−0.455)² \(L'\) 0.149 < 0.18 ✓ 损失下降

注意第 ③ 步:隐藏层权重 \(w_{1}\) 的梯度,正是由输出层的误差 (\(\hat{y}\)\(y\)) 一路”乘回来”得到的 - 误差每穿过一层就乘一次局部导数,这就是”反向传播”四个字的含义。如此循环成千上万次,网络就”学成”了。

提示

类比:BP 像公司的逐级追责
前向传播是层层汇报业绩(输出 ŷ),损失函数是董事会发现业绩不达标(L 大);反向传播则是从 CEO 开始逐级追问”你这层该负多大责任”,每个中层把自己应负的责任乘上自己的”局部影响”传给下级;最后每个岗位(权重)按责任大小做改进(更新)。追责从顶层开始、一层层传到最底层 - “反向”二字由此而来。

BP 让神经网络大放异彩,但也暴露了深层网络的痼疾 - 梯度消失(vanishing gradient)。链式法则要求把一串导数连乘,而 sigmoid 的导数最大只有 0.25:十层连乘后梯度可能缩到 10⁻⁶ 量级,深层权重几乎收不到更新信号,网络”学不动”。这正是 1990 年代神经网络再次让位于 SVM 等方法的深层原因之一。今天深度学习的许多技巧,本质上都在与梯度消失搏斗:用正区间导数恒为 1 的 ReLU、用残差连接(第 3、5 章)、用更聪明的初始化与归一化。

重要

训练 BP 网络的基本技巧

  • 权重初始化:不能全零(对称性会让同一层的神经元学成一模一样);常用 Xavier / He 小随机初始化,让信号在前向与反向中既不爆炸也不消失。
  • 学习率:太大震荡甚至发散,太小收敛极慢;实践中常配合学习率衰减或 Adam 等自适应优化器。
  • 输入归一化:把各特征缩放到相近尺度(如均值 0、方差 1),避免梯度方向被数值大的特征”绑架”,也能显著加速收敛。
  • 小批量与正则化:用 mini-batch 在效率与稳定性间取平衡;配合 L2 正则化、dropout 等抑制过拟合。
重要

本章要点

  • 生物神经元给人工模型三条启示:加权求和、阈值激活、连接可调
  • M-P 模型(1943)是第一个神经元数学模型:\(y\) = \(f\)\(w_{i}x_{i}\)\(\theta{}\));激活函数(阶跃 / sigmoid / tanh / ReLU)决定神经元的”脾气”。
  • 感知机(1958)是第一个可学习模型,本质是线性分类器;学习规则 \(w\)\(w\) + \(\eta{}\)(\(y\)\(\hat{y}\))\(x\) 在数据线性可分时保证收敛(1962)。
  • XOR 困境(1969):单层感知机无法处理线性不可分问题,神经网络进入第一次寒冬。
  • 多层感知机靠隐藏层 + 非线性激活获得万能逼近能力;隐藏层把输入重表达为可分的新空间(XOR 可手工构造解决)。
  • 反向传播(1986)= 损失函数 + 梯度下降 + 链式法则:一次前向算误差,一次反向得全部梯度,参数按 \(w\)\(w\)\(\eta{}\)·∂\(L\)/∂\(w\) 更新。
  • 梯度消失是深层网络的宿敌;ReLU、合理初始化、归一化、残差连接是对策。
  • 今日深度学习 = 本章的神经网络 + 大数据 + 强算力 + 更好的结构(CNN / RNN / Transformer)与优化器。
警告

延伸阅读 · 与现代 AI 的联系

  • BP 从未过时:今天训练 GPT 这类大模型,用的仍是”前向算损失、反向求梯度、梯度下降更新” - PyTorch / TensorFlow 的自动微分就是反向传播的工程实现,第 5 章将看到它如何驱动 Transformer。
  • 三件套贯穿全书:加权求和、非线性激活、可调权重 - 卷积网络(第 3 章)加的是”局部连接 + 权值共享”,循环网络(第 4 章)加的是”参数共享 + 循环”,Transformer(第 5 章)用注意力做”数据驱动的动态加权求和”,万变不离其宗。
  • 表达力 vs 学到:万能逼近定理保证网络”能表达”,但真正”学到”还要靠数据、算力与优化;大模型时代的每一次突破,都是这三者的又一次匹配。
  • 推荐阅读:Rumelhart 等 1986 年原文;Michael Nielsen《Neural Networks and Deep Learning》(免费在线书,第 2 章手推反向传播);3Blue1Brown 的《反向传播》可视化视频。