多层感知机

从线性模型到多层感知机:优化困境与突破路径

Posted by CloudingYu on March 13, 2026

一、感知机回顾与多层网络的动机

1.1 感知机的局限

感知机(Perceptron),它是一个神经元的学习算法。但 Minsky 的一篇文章证明:单个感知机无法解决非线性问题(如 XOR 问题)。

关键:要理解历史上那些人每一步是怎么想的,为什么这样设计——而不是简单地把算法讲清楚。

1.2 向多层发展的两个关键问题

要解决非线性问题,需要向多层网络发展。但这带来两个问题:

  1. 阶跃函数不可微:单感知机使用阶跃函数(step function)作为激活函数,它不可导。当网络向多层发展后,如果最后一层的非线性映射不可导,整个网络的优化将无法进行。

  2. 需要可微的替代函数:需要找一个与阶跃函数形态相似但处处可微的函数。历史上就有了 Sigmoid 函数: \(\sigma(z) = \frac{1}{1 + e^{-z}}\)

预告:Sigmoid 为什么会出现、它是怎么推出来的,课程后面会详细讲解。

二、线性模型回顾

先回顾线性模型,目的是让理解神经网络与线性模型的本质区别。

2.1 线性模型的定义

线性模型(Linear Model):对于输入向量 $\mathbf{x}$(黑体表示列向量),通过学习权重 $\mathbf{w}$ 和偏置 $w_0$,构造线性组合:

\[f(\mathbf{x}, \mathbf{w}) = w_0 + w_1 x_1 + w_2 x_2 + \cdots + w_D x_D\]

2.2 基函数变换

原始特征 $\mathbf{x}$ 通过一组基函数(basis functions)$\phi_j(\mathbf{x})$ 变换到新的特征空间:

\[f(\mathbf{x}, \mathbf{w}) = \sum_{j=0}^{M-1} w_j \phi_j(\mathbf{x})\]

关键:低维空间中线性不可分的数据,映射到高维空间后可能变得线性可分——这是基函数变换的核心动机。

2.3 最小二乘优化

目标:找到权重 $\mathbf{w}$,使得模型预测值与真实观测值 $\mathbf{t}$ 之间的误差最小。

损失函数(Sum of Squared Errors):

\[E(\mathbf{w}) = \frac{1}{2} \sum_{i=1}^{N} \left( f(\mathbf{x}_i, \mathbf{w}) - t_i \right)^2\]

加上 $\frac{1}{2}$ 是为了求导后消去平方产生的系数 2。

2.4 解析解

对 $\mathbf{w}$ 求梯度并置零:

\[\nabla E(\mathbf{w}) = 0\]

得到闭式解(解析解):

\[\mathbf{w} = (\boldsymbol{\Phi}^T \boldsymbol{\Phi})^{-1} \boldsymbol{\Phi}^T \mathbf{t}\]

其中 $\boldsymbol{\Phi}$ 是设计矩阵(Design Matrix),其元素为 $\Phi_{ij} = \phi_j(\mathbf{x}_i)$。

说明:这个解存在的条件是 $\boldsymbol{\Phi}^T \boldsymbol{\Phi}$ 可逆。但实际中几乎一定不可逆——当数据集很大时,无法保证特征线性无关。可用伪逆(pseudo-inverse)处理,通过特征分解后将特征值取倒数得到。

2.5 线性模型的几何意义

线性模型本质上是在做投影

  • 参数 $\mathbf{w}$ 张成一个子空间
  • 模型预测值 $\hat{\mathbf{t}}$ 是目标 $\mathbf{t}$ 在该子空间上的正交投影
  • 优化目标是最小化 $\mathbf{t}$ 到投影点 $\hat{\mathbf{t}}$ 的距离(所有样本的平方和)

总结:线性模型就是干一件事——把目标投影到参数空间张成的子空间上,优化的是投影距离的平方和。

三、多层感知机(MLP)

3.1 网络结构

多层感知机(Multi-Layer Perceptron, MLP):输入层 → 隐层 → 输出层,层间全连接(fully connected)。

结构表示(两层网络,即一层隐层 + 一层输出层):

\(\mathbf{h} = \sigma(\mathbf{W}_1 \mathbf{x} + \mathbf{b}_1)\) \(\mathbf{y} = \sigma(\mathbf{W}_2 \mathbf{h} + \mathbf{b}_2)\)

整个网络是一个复合函数

3.2 术语:”多层感知机”的误用

这个概念有两个”误用”:

  1. 不仅层数增加,每层的神经元数量也增加了
  2. 感知机使用阶跃函数,而 MLP 使用 Sigmoid 或 Tanh 等可微函数

3.3 深度与宽度

概念 定义
宽度 (Width) 每层神经元的数量
深度 (Depth) 带参数的可学习变换的层数

说明:输入层没有可学习参数,不计数。图中看起来是三层的网络(输入-隐层-输出),实际上只有两层带参数。

3.4 MLP 的命名差异

不同文献习惯不同:有些称为”三层网络”(含输入层),有些称为”两层网络”(只计带参层)。通常更倾向于后者(只计带参层)。

四、为什么神经网络没有解析解

4.1 复合函数求导的困境

对于 MLP,损失函数对参数的导数是高度非线性方程组。以对 $\mathbf{W}_1$ 求导为例,通过链式法则展开后是一个极其复杂的表达式,无法求得闭式解。

Sigmoid 函数的导数性质: \(\sigma'(z) = \sigma(z)(1 - \sigma(z))\)

4.2 参数空间的对称性

关键洞察:如果交换隐层中任意两个神经元的输入权重、偏置和输出权重,整个网络的输出完全不变

  • 如果隐层有 $M$ 个神经元,则有 $M!$ 种排列产生完全相同的网络功能
  • 这意味着参数空间中存在 $M!$ 个等价解(都是局部极小值)

4.3 对称性导致非凸

核心论证:参数对称性 → 多个等价的局部极小值 → 两个等价解的线性组合产生的新参数,其中被交换的两个神经元会变得”一样”(输入输出权重都取平均),导致建模能力下降 → 新参数在损失函数上表现更差 → 这说明凸性不成立(凸函数要求两个点连线上所有点的函数值都 ≤ 端点函数值的线性插值)。

因此神经网络的优化目标函数是非凸的

4.4 方法论的退路:数值迭代

解析解无望 → 采用数值迭代方法(梯度下降):

\[\theta^{(t+1)} = \theta^{(t)} - \eta \cdot \Delta\theta^{(t)}\]

其中 $\eta$ 为学习率,$\Delta\theta$ 为移动方向。

五、凸优化的理论基础

凸优化的三个层次如下:

5.1 层次一:凸函数 → 局部最小 = 全局最小

凸函数定义:对任意参数 $\theta_1, \theta_2$ 和 $\lambda \in [0,1]$:

\[E(\lambda\theta_1 + (1-\lambda)\theta_2) \leq \lambda E(\theta_1) + (1-\lambda)E(\theta_2)\]

即两点连线在函数图像上方。

反证法可证明:如果是凸函数,局部最小值一定是全局最小值。

5.2 层次二:神经网络是非凸的

已由参数对称性论证(见第四节)。

5.3 层次三:非凸也不意味着局部最小值有好有坏

即使是非凸函数,理论上所有局部最小值仍可能取相同值(都等于全局最小值)。但在神经网络中,这也不成立

通过构造法可以说明:可以构造出两个海塞矩阵都正定、梯度都为零的点,但它们的损失值不同——神经网络中确实存在”好”和”坏”的局部最小值。

六、神经元饱和与梯度消失

6.1 Sigmoid 的压缩效应

Sigmoid 将任意输入压缩到 $(0, 1)$ 区间,故又称压缩函数(squashing function)。Tanh 则压缩到 $(-1, 1)$。

实践经验:中间层更倾向使用 Tanh(输出有正有负,多样性更强),最后一层或门控机制中更倾向使用 Sigmoid。

6.2 神经元失活

当输入值落在 Sigmoid 的饱和区(如 $ z > 3.7$),输出趋近于 0 或 1,梯度趋近于 0
  • 如果权重配置使得所有样本输入某神经元时都落在饱和区,该神经元就失活(dead neuron)
  • 梯度为 0,海塞矩阵半正定 → 构成局部最小值
  • 但由于神经元失活,这往往是一个较差的局部最小值

总结:非线性的存在 → 神经元可能饱和 → 产生不同的局部最小值 → 有些好有些差。这就是为什么同样的网络结构,不同初始化会导致不同训练效果。

七、数字识别实验

7.1 任务设置

七段数码管数字识别:

  • 输入:7 个像素(0 = 灭,1 = 亮)
  • 输出:10 个类别(0-9),使用 独热编码(One-Hot Encoding)
  • 隐层:18 个神经元

7.2 训练观察

  • 损失函数持续下降
  • 不同初始值会导致不同的训练结果(有时好有时坏)
  • 网络展现出泛化能力:能识别训练中未见过的模式(如缺笔画的数字)

7.3 核心启示

思考题:三层神经网络与广义线性模型(线性组合 + 非线性输出)的核心差别在哪里?为什么神经网络不能像线性模型那样求解析解?

神经网络的特点:每个输入信号对输出”投票”,网络从原始信号中逐层累积特征,最终映射到对应输出神经元。