Skip to content

Chapter 7 神经网络


一、从生物神经元到数学模型

疾旋鼬观察到:人脑由约 860 亿个神经元组成,每个神经元接收来自其他神经元的信号,当信号总和超过某个阈值时,就会"激活"并向下游发送信号。

1943 年,McCulloch 和 Pitts 提出了 M-P 神经元模型

\[y = f\left(\sum_{i=1}^d w_i x_i - \theta\right)\]

其中 \(x_1, \ldots, x_d\) 是输入信号,\(w_1, \ldots, w_d\) 是连接权重,\(\theta\) 是阈值,\(f\) 是激活函数。

神经网络学得的知识蕴含在连接权与阈值中。

激活函数

要求:连续并可导(允许少数点不可导)的非线性函数;导函数值域在合适区间内;单调递增。

激活函数为模型引入非线性,大大增强了模型的表达能力 (Expressivity)。没有激活函数,多层网络等价于单层线性变换。

激活函数 公式 导数 特点
Sigmoid \(\sigma(z) = \frac{1}{1+e^{-z}}\) \(\sigma(z)(1-\sigma(z))\) 输出 \((0,1)\),可能梯度消失
Tanh \(\tanh(z)\) \(1 - \tanh^2(z)\) 输出 \((-1,1)\),关于原点对称
ReLU \(\max(0, z)\) \(\mathbb{I}(z > 0)\) 缓解梯度消失,深度学习首选

Sigmoid 导数推导

\[\sigma'(z) = \frac{d}{dz}\frac{1}{1+e^{-z}} = \frac{e^{-z}}{(1+e^{-z})^2} = \frac{1}{1+e^{-z}} \cdot \frac{e^{-z}}{1+e^{-z}} = \sigma(z)(1-\sigma(z))\]

ReLU 的优势: - 计算简单,求导容易 - 正区间梯度恒为 1,缓解梯度消失 - 产生稀疏激活(部分神经元输出为 0)

二、多层前馈网络 (MLP)

结构

  • 输入层\(x \in \mathbb{R}^d\)
  • 隐层\(q\) 个神经元,\(h = f(W_1 x + b_1)\)
  • 输出层\(l\) 个神经元,\(\hat{y} = f(W_2 h + b_2)\)

前馈网络:各神经元属于不同层,层内无连接,相邻层全部两两连接,信号从输入层向输出层单向传播。

FNN 是非线性函数的复合函数

\[a^{(\ell)} = f(W^{(\ell)} a^{(\ell-1)} + b^{(\ell)}), \quad a^{(0)} = x\]

其中 \(a^{(\ell)}\) 是第 \(\ell\) 层的输出(激活值)。

万有逼近定理

定理 [Hornik et al., 1989]:仅需一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数。

这意味着神经网络有强大的表示能力。但"如何设置隐层神经元数"仍是未决问题,实践中常用试错法。

XOR 问题

单层感知机无法解决 XOR(异或)问题 [Minsky & Papert, 1969]。但加入一个隐层即可:

\[W_1 = \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix}, \quad b_1 = \begin{pmatrix} 0 \\ -1 \end{pmatrix}, \quad W_2 = \begin{pmatrix} 1 & -2 \end{pmatrix}, \quad b_2 = 0\]

激活函数用 ReLU。第一层将数据从原始空间映射到新特征空间,在新空间中线性可分。

三、BP 算法完整推导

网络设定

  • 输入:\(d\) 维特征向量
  • 隐层:\(q\) 个神经元
  • 输出:\(l\) 个神经元
  • 激活函数:Sigmoid
  • 隐层→输出层权重:\(w_{hj}\)\(h=1,\ldots,q\)\(j=1,\ldots,l\)
  • 输入→隐层权重:\(v_{ih}\)\(i=1,\ldots,d\)\(h=1,\ldots,q\)
  • 隐层阈值:\(\gamma_h\),输出层阈值:\(\theta_j\)

需学习参数总数:\((d+1) \times q + (q+1) \times l\)

前向传播

对训练例 \((x^{(k)}, y^{(k)})\)

隐层\(\(\alpha_h = \sum_{i=1}^d v_{ih} x_i^{(k)}, \quad b_h = f(\alpha_h - \gamma_h)\)\)

输出层\(\(\beta_j = \sum_{h=1}^q w_{hj} b_h, \quad \hat{y}_j^{(k)} = f(\beta_j - \theta_j)\)\)

均方误差

\[E_k = \frac{1}{2}\sum_{j=1}^l (\hat{y}_j^{(k)} - y_j^{(k)})^2\]

反向传播(链式法则详细推导)

BP 基于梯度下降:\(\Delta w = -\eta \frac{\partial E_k}{\partial w}\)

更新 \(w_{hj}\)

\(w_{hj}\) 先影响 \(\beta_j\),再影响 \(\hat{y}_j^{(k)}\),最后影响 \(E_k\)。由链式法则:

\[\frac{\partial E_k}{\partial w_{hj}} = \frac{\partial E_k}{\partial \hat{y}_j^{(k)}} \cdot \frac{\partial \hat{y}_j^{(k)}}{\partial \beta_j} \cdot \frac{\partial \beta_j}{\partial w_{hj}}\]

逐项计算:

第一项\(\frac{\partial E_k}{\partial \hat{y}_j^{(k)}} = \hat{y}_j^{(k)} - y_j^{(k)}\)

第二项\(\frac{\partial \hat{y}_j^{(k)}}{\partial \beta_j} = f'(\beta_j - \theta_j) = \hat{y}_j^{(k)}(1 - \hat{y}_j^{(k)})\)(Sigmoid 导数)

第三项\(\frac{\partial \beta_j}{\partial w_{hj}} = b_h\)(因为 \(\beta_j = \sum_h w_{hj} b_h\)

\(g_j = -\frac{\partial E_k}{\partial \hat{y}_j^{(k)}} \cdot \frac{\partial \hat{y}_j^{(k)}}{\partial \beta_j} = \hat{y}_j^{(k)}(1 - \hat{y}_j^{(k)})(y_j^{(k)} - \hat{y}_j^{(k)})\)

则:\(\(\boxed{\Delta w_{hj} = \eta \cdot g_j \cdot b_h}\)\)

更新 \(\theta_j\)

\[\frac{\partial E_k}{\partial \theta_j} = \frac{\partial E_k}{\partial \hat{y}_j^{(k)}} \cdot \frac{\partial \hat{y}_j^{(k)}}{\partial \theta_j} = (\hat{y}_j^{(k)} - y_j^{(k)}) \cdot (-\hat{y}_j^{(k)}(1 - \hat{y}_j^{(k)})) = -g_j\]
\[\boxed{\Delta \theta_j = -\eta \cdot g_j}\]

更新 \(v_{ih}\)(误差从输出层"逆传播"回隐层)

这是 BP 的核心——误差通过权重从输出层传回隐层。

\[\frac{\partial E_k}{\partial v_{ih}} = \sum_{j=1}^l \frac{\partial E_k}{\partial \beta_j} \cdot \frac{\partial \beta_j}{\partial b_h} \cdot \frac{\partial b_h}{\partial \alpha_h} \cdot \frac{\partial \alpha_h}{\partial v_{ih}}\]

逐项: - \(\frac{\partial E_k}{\partial \beta_j} = -g_j\) - \(\frac{\partial \beta_j}{\partial b_h} = w_{hj}\)(因为 \(\beta_j = \sum_h w_{hj} b_h\)) - \(\frac{\partial b_h}{\partial \alpha_h} = f'(\alpha_h - \gamma_h) = b_h(1 - b_h)\) - \(\frac{\partial \alpha_h}{\partial v_{ih}} = x_i^{(k)}\)(因为 \(\alpha_h = \sum_i v_{ih} x_i\)

综合得:

\[\frac{\partial E_k}{\partial v_{ih}} = b_h(1 - b_h) \cdot x_i^{(k)} \cdot \sum_{j=1}^l w_{hj} (-g_j)\]

\(e_h = b_h(1 - b_h) \sum_{j=1}^l w_{hj} g_j\),则:

\[\boxed{\Delta v_{ih} = \eta \cdot e_h \cdot x_i^{(k)}, \quad \Delta \gamma_h = -\eta \cdot e_h}\]

\(e_h\) 的物理意义:输出层的误差 \(g_j\) 通过权重 \(w_{hj}\) "逆传播"到隐层,再乘以隐层的局部梯度 \(b_h(1-b_h)\)。这就是"误差逆传播"名称的由来。

BP 的数值例子

考虑一个简单网络:\(f(x, y, z) = (x + y) \cdot z\),令 \(x = -2, y = 5, z = -4\)

前向传播: - \(q = x + y = 3\) - \(f = q \cdot z = -12\)

反向传播: - \(\frac{\partial f}{\partial f} = 1\) - \(\frac{\partial f}{\partial z} = q = 3\) - \(\frac{\partial f}{\partial q} = z = -4\) - \(\frac{\partial f}{\partial y} = \frac{\partial f}{\partial q} \cdot \frac{\partial q}{\partial y} = -4 \cdot 1 = -4\) - \(\frac{\partial f}{\partial x} = \frac{\partial f}{\partial q} \cdot \frac{\partial q}{\partial x} = -4 \cdot 1 = -4\)

标准 BP vs. 累积 BP

  • 标准 BP:每读一个样本就更新一次参数。更新频繁,不同样例的梯度可能相互抵消,需多次迭代
  • 累积 BP:最小化整个训练集的累积误差,读完一遍(一个 epoch)才更新。更新频率低

在很多任务中,累积误差下降到一定程度后,进一步下降非常缓慢。这时标准 BP 往往获得更好的解,尤其当训练集非常大时。

四、缓解过拟合

早停 (Early Stopping)

  • 若训练误差连续 \(a\) 轮变化小于 \(b\),停止训练
  • 使用验证集:训练误差降低但验证误差升高时,停止

正则化

在误差目标函数中增加描述网络复杂度的项:

\[E = \lambda \cdot \frac{1}{m}\sum_{k=1}^m E_k + (1-\lambda)\sum_i w_i^2\]

偏好较小的连接权和阈值,使网络输出更"光滑"。

五、全局最小 vs. 局部极小

神经网络的训练可看作参数空间中的寻优过程。损失函数通常有多个局部极小,只有一个全局最小

跳出局部极小的常见策略: - 不同的随机初始化 - 模拟退火 - 随机扰动 - 动量法(Heavy-Ball、Nesterov) - 演化算法

六、其他常见神经网络

网络类型 特点
RBF 径向基函数网络,\(\varphi(x) = \sum_{i=1}^q w_i e^{-\beta_i\|x - c_i\|^2}\)
SOM 自组织特征映射,无监督竞争学习,"胜者通吃"
Elman 网络 递归神经网络,隐层输出反馈回输入
级联相关网络 构造性网络,隐层神经元在训练中逐步加入

神经网络发展简史

时期 事件
1943 M-P 模型
1945 Hebb 学习规则
1958 感知机 (Perceptron, Rosenblatt)
1960 Adaline (Widrow)
1969 Minsky & Papert《Perceptrons》→ 冰河期
1983 Hopfield 网络
1986 BP 算法复兴 (Rumelhart, Hinton, Williams)
1997 SVM 兴起,神经网络再次沉寂
2006 Hinton: 深度学习 (Science)
2012 AlexNet 赢得 ImageNet → 深度学习热潮
2019 图灵奖授予 Hinton, LeCun, Bengio

"科学的发展总是'螺旋式上升'。三十年河东,三十年河西。坚持才能有结果。"


2026.06