跳转至

第6章:深度前馈网络

1. XOR问题与隐藏层的必要性

1.1 经典XOR问题

XOR(异或)问题是人工智能发展史上的一个里程碑式问题,它揭示了线性模型的根本局限性。XOR函数定义如下:

\(x_1\) \(x_2\) \(x_1 \oplus x_2\)
0 0 0
0 1 1
1 0 1
1 1 0

使用线性模型 \(y = w_1 x_1 + w_2 x_2 + b\) 来拟合XOR函数,我们面临一个不可逾越的障碍:无法找到一组参数 \((w_1, w_2, b)\) 使得上述四个数据点被正确分类。这是因为XOR的正类点 \((0,1)\) 和 \((1,0)\) 与负类点 \((0,0)\) 和 \((1,1)\) 线性不可分。

1.2 隐藏层的引入

解决XOR问题的关键在于引入隐藏层(Hidden Layer)。考虑一个单隐藏层网络:

\[ h_1 = \sigma(w_{11}^{(1)} x_1 + w_{21}^{(1)} x_2 + b_1^{(1)}) \\ h_2 = \sigma(w_{12}^{(1)} x_1 + w_{22}^{(1)} x_2 + b_2^{(1)}) \\ y = \sigma(w_1^{(2)} h_1 + w_2^{(2)} h_2 + b^{(2)}) \]

通过精心设计隐藏层的权重,我们可以将输入空间映射到一个新的特征空间,在这个空间中XOR变得线性可分。例如,使用以下配置:

\[ h_1 = \max(0, x_1 + x_2 - 0.5) \quad \text{检测} \quad (1,1) \\ h_2 = \max(0, -x_1 - x_2 + 1.5) \quad \text{检测} \quad (0,0) \\ y = h_1 + h_2 \quad \text{组合得到XOR} \]

核心洞察:隐藏层的作用是从原始输入中学习非线性特征表示,使得原本线性不可分的问题变得可分。


2. 前馈神经网络架构

2.1 网络结构定义

前馈神经网络(Feedforward Neural Network)是一种信息单向流动的网络架构,信息从输入层流向输出层,不存在循环或反馈连接。

一个具有 \(L\) 层的前馈网络可表示为:

\[ \mathbf{f}^{(l)}(\mathbf{x}) = \sigma_l(\mathbf{W}^{(l)} \mathbf{x} + \mathbf{b}^{(l)}), \quad l = 1, 2, \ldots, L \]

其中: - \(\mathbf{x} \in \mathbb{R}^{n^{(0)}}\):输入向量 - \(\mathbf{W}^{(l)} \in \mathbb{R}^{n^{(l)} \times n^{(l-1)}}\):第 \(l\) 层的权重矩阵 - \(\mathbf{b}^{(l)} \in \mathbb{R}^{n^{(l)}}\):第 \(l\) 层的偏置向量 - \(n^{(l)}\):第 \(l\) 层的单元数(神经元数) - \(\sigma_l\):第 \(l\) 层的激活函数

2.2 深度网络的表示能力

堆叠多个隐藏层使网络能够学习层级特征表示(Hierarchical Feature Representation):

\[ \mathbf{h}^{(l)} = \sigma(\mathbf{W}^{(l)} \mathbf{h}^{(l-1)} + \mathbf{b}^{(l)}), \quad \mathbf{h}^{(0)} = \mathbf{x} \]

最终输出:

\(\hat{\mathbf{y}} = \mathbf{f}(\mathbf{x}) = \mathbf{h}^{(L)}\)

网络深度 \(L\) 决定了网络能够建模的函数复杂度和抽象层次。

2.3 网络拓扑结构

结构类型 描述 适用场景
全连接层(FC) 每层所有神经元与下一层完全连接 通用近似、特征整合
卷积层(Conv) 局部连接 + 权重共享 图像、序列处理
循环连接(Recurrent) 允许信息在时间步间传递 时序数据建模

3. 激活函数详解

激活函数为神经网络引入非线性(Non-linearity),是网络能够逼近任意复杂函数的关键。

3.1 Sigmoid函数

\[ \sigma(x) = \frac{1}{1 + e^{-x}} = \frac{e^x}{e^x + 1} \]

性质: - 输出范围:\((0, 1)\) - 导数:\(\sigma'(x) = \sigma(x)(1 - \sigma(x))\) - 优点:物理意义上对应神经元"激活概率";平滑可微 - 缺点: - 梯度消失:当 \(|x| \to \infty\) 时,\(\sigma'(x) \to 0\) - 非零中心:输出始终为正,影响梯度下降效率 - 计算开销:涉及指数运算

3.2 Tanh函数

\[ \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} = 2\sigma(2x) - 1 \]

性质: - 输出范围:\((-1, 1)\),零中心 - 导数:\(\tanh'(x) = 1 - \tanh^2(x)\) - 优点:零中心化,收敛通常快于sigmoid - 缺点:在 \(|x| \to \infty\) 时仍存在梯度消失问题

3.3 ReLU函数

\[ \text{ReLU}(x) = \max(0, x) = \begin{cases} x & \text{if } x > 0 \\ 0 & \text{if } x \leq 0 \end{cases} \]

性质: - 优点: - 计算高效:仅需比较操作 - 缓解梯度消失:在正区间梯度恒为1 - 稀疏激活:自然产生零值,增强表示稀疏性 - 缺点: - Dying ReLU问题:负值区间梯度为0,导致"死神经元" - 非零中心

3.4 Leaky ReLU (LReLU)

\[ \text{LReLU}(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha x & \text{if } x \leq 0 \end{cases}, \quad \alpha \in (0, 1) \text{ 通常取 } 0.01 \]

改进:允许负值区间有小的梯度 \(\alpha\),缓解Dying ReLU问题。

3.5 ELU函数

\[ \text{ELU}(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha(e^x - 1) & \text{if } x \leq 0 \end{cases}, \quad \alpha > 0 \]

优点: - 负值区间输出接近零,改善梯度流动 - 输出更接近零中心 - 缺点:涉及指数运算,计算量较大

3.6 激活函数特性对比表

激活函数 公式 输出范围 梯度特性 计算复杂度
Sigmoid \(\frac{1}{1+e^{-x}}\) \((0,1)\) \(\sigma'(1-\sigma)\),易消失 中(含exp)
Tanh \(\frac{e^x-e^{-x}}{e^x+e^{-x}}\) \((-1,1)\) \(1-\tanh^2\),易消失 中(含exp)
ReLU \(\max(0,x)\) \([0,+\infty)\) 正区间恒为1,负区间为0 低(比较)
LReLU \(\max(0,x) + \alpha\min(0,x)\) \((-\infty,+\infty)\) 小梯度 \(\alpha\) 低(比较)
ELU \(x>0?x:\alpha(e^x-1)\) \((-\alpha,+\infty)\) 接近零中心的平滑过渡 中(含exp)

4. 输出单元设计

输出层的激活函数取决于任务类型和目标分布。

4.1 线性输出单元

用于回归任务,假设目标服从高斯分布:

\(\hat{y} = \mathbf{w}^\top \mathbf{h} + b\)

输出值域:\((-\infty, +\infty)\)

通常配合均方误差(MSE)损失使用:

\[ \mathcal{L} = \frac{1}{2} \sum_i (y_i - \hat{y}_i)^2 \]

4.2 Sigmoid输出单元

用于二分类任务,输出解释为伯努利分布下的概率:

\[ \hat{y} = \sigma(\mathbf{w}^\top \mathbf{h} + b) = \frac{1}{1 + e^{-(\mathbf{w}^\top \mathbf{h} + b)}} \]

损失函数为二元交叉熵:

\(\mathcal{L} = -[y \log \hat{y} + (1-y)\log(1-\hat{y})]\)

4.3 Softmax输出单元

用于多分类任务(\(K\) 类),输出表示各类别的多项分布概率:

\[ \hat{y}_k = P(y=k \mid \mathbf{x}) = \frac{e^{z_k}}{\sum_{j=1}^{K} e^{z_j}} \]

其中 \(z_k = \mathbf{w}_k^\top \mathbf{h} + b_k\) 是各类别的 logits。

稳定化计算(避免数值溢出):

\[ \hat{y}_k = \frac{e^{z_k - \max_i z_i}}{\sum_{j=1}^{K} e^{z_j - \max_i z_i}} \]

损失函数为交叉熵:

\[ \mathcal{L} = -\sum_k y_k \log \hat{y}_k \]

5. 基于梯度的学习

5.1 目标函数

神经网络学习的目标是最小化经验风险(Empirical Risk):

\[ \mathcal{J}(\boldsymbol{\theta}) = \frac{1}{m} \sum_{i=1}^{m} L(f(\mathbf{x}^{(i)}; \boldsymbol{\theta}), \mathbf{y}^{(i)}) \]

其中 \(\boldsymbol{\theta} = \{\mathbf{W}^{(l)}, \mathbf{b}^{(l)}\}_{l=1}^{L}\) 是所有可学习参数。

5.2 梯度下降更新

参数更新遵循梯度下降法则:

\[ \boldsymbol{\theta} \leftarrow \boldsymbol{\theta} - \epsilon \nabla_{\boldsymbol{\theta}} \mathcal{J}(\boldsymbol{\theta}) \]

其中 \(\epsilon > 0\) 是学习率(Learning Rate)。

5.3 梯度计算——反向传播

反向传播(Backpropagation)算法利用链式法则(Chain Rule)高效计算梯度。

5.3.1 链式法则

若 \(y = f(g(x))\),则:

\[ \frac{dy}{dx} = \frac{dy}{dg} \cdot \frac{dg}{dx} \]

对于复合函数 \(\mathbf{f}(\mathbf{g}(\mathbf{x}))\):

\[ \frac{\partial f_i}{\partial x_j} = \sum_k \frac{\partial f_i}{\partial g_k} \cdot \frac{\partial g_k}{\partial x_j} \]

5.3.2 反向传播算法步骤

前向传播(Forward Pass):

\[ \mathbf{z}^{(l)} = \mathbf{W}^{(l)} \mathbf{a}^{(l-1)} + \mathbf{b}^{(l)}, \quad \mathbf{a}^{(l)} = \sigma(\mathbf{z}^{(l)}) \]

反向传播(Backward Pass):

对于输出层误差(以均方误差为例):

\[ \boldsymbol{\delta}^{(L)} = \frac{\partial \mathcal{L}}{\partial \mathbf{z}^{(L)}} = (\mathbf{a}^{(L)} - \mathbf{y}) \odot \sigma'(\mathbf{z}^{(L)}) \]

递归计算隐层误差:

\[ \boldsymbol{\delta}^{(l)} = (\mathbf{W}^{(l+1)})^\top \boldsymbol{\delta}^{(l+1)} \odot \sigma'(\mathbf{z}^{(l)}) \]

梯度计算:

\[ \frac{\partial \mathcal{L}}{\partial \mathbf{W}^{(l)}} = \boldsymbol{\delta}^{(l)} (\mathbf{a}^{(l-1)})^\top, \quad \frac{\partial \mathcal{L}}{\partial \mathbf{b}^{(l)}} = \boldsymbol{\delta}^{(l)} \]

5.4 计算图与自动微分

现代深度学习框架(如PyTorch、TensorFlow)使用计算图(Computational Graph)和自动微分(Automatic Differentiation)系统自动计算梯度。

前向图:记录操作序列 反向图:自动构建梯度计算图


6. 隐藏层表示学习

6.1 分布式表示

神经网络的核心优势在于能够学习分布式表示(Distributed Representation)——每个概念由多个神经元共同表示,每个神经元参与多个概念的表示。

与传统独热(One-Hot)表示相比,分布式表示具有: - 高效性:\(k\) 个神经元可表示 \(2^k\) 个不同的概念组合 - 泛化能力:相似的输入可共享相似的表示

6.2 层级组合性

深度网络通过逐层组合学习层级表示:

\(\mathbf{h}^{(l)} = f^{(l)}(\mathbf{h}^{(l-1)})\)

  • 低层:学习局部、底层的特征(如边缘、纹理)
  • 中层:组合低层特征,形成部件表示
  • 高层:组合中层特征,形成语义概念

6.3 表示学习的优势

方面 传统特征工程 深度表示学习
特征设计 人工设计 自动学习
表示层次 单一层次 层级组合
迁移能力 任务相关 可迁移微调
扩展性 受限于专家知识 数据驱动

7. 通用近似定理

7.1 定理陈述

通用近似定理(Universal Approximation Theorem)是神经网络理论中最重要的结果之一。

定理 7.1(单一隐藏层近似)

设 \(\sigma\) 为非常量、连续、有界的激活函数(如 Sigmoid)。则对于任何连续函数 \(f: [0,1]^n \to \mathbb{R}^m\) 和任意 \(\epsilon > 0\),存在一个单隐藏层神经网络:

\[ \hat{f}(\mathbf{x}) = \sum_{i=1}^{N} \mathbf{v}_i \sigma(\mathbf{w}_i^\top \mathbf{x} + b_i) \]

使得:

\[ \sup_{\mathbf{x} \in [0,1]^n} \| f(\mathbf{x}) - \hat{f}(\mathbf{x}) \| < \epsilon \]

即:具有足够多隐藏单元的单隐层网络可以以任意精度逼近任何紧集上的连续函数。

7.2 定理的局限

通用近似定理的理论价值大于实践价值:

  1. 宽度要求:定理只保证存在性,未给出所需隐藏单元数的上界——该上界可能是指数级的
  2. 泛化问题:仅保证训练误差可小,不保证泛化能力
  3. 优化难度:实际中梯度下降可能找不到最优参数
  4. 深度优势:深度网络通常比同等宽度的浅层网络具有更少的参数和更好的泛化

7.3 深度近似的效率优势

定理 7.2(深度近似效率)

对于某些函数类(如分片线性函数、周期性函数),深度网络比浅层网络具有指数级的参数效率优势。

直觉:深度网络通过层级组合,可以用多项式级参数表示指数级复杂的函数,而浅层网络需要指数级参数。


附录:核心公式汇总表

编号 公式名称 公式表达式 应用场景
(6.1) XOR隐藏层表示 \(h_1 = \max(0, x_1+x_2-0.5)\) 非线性变换
(6.2) 前向传播 \(\mathbf{a}^{(l)} = \sigma(\mathbf{W}^{(l)}\mathbf{a}^{(l-1)}+\mathbf{b}^{(l)})\) 网络前向计算
(6.3) Sigmoid函数 \(\sigma(x) = \frac{1}{1+e^{-x}}\) 激活函数
(6.4) Tanh函数 \(\tanh(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}}\) 激活函数
(6.5) ReLU函数 \(\text{ReLU}(x) = \max(0,x)\) 激活函数
(6.6) LReLU函数 \(\text{LReLU}(x) = \max(0,x) + \alpha\min(0,x)\) 激活函数
(6.7) ELU函数 \(\text{ELU}(x) = x>0?x:\alpha(e^x-1)\) 激活函数
(6.8) Softmax函数 \(\hat{y}_k = \frac{e^{z_k}}{\sum_j e^{z_j}}\) 多分类输出
(6.9) 交叉熵损失 \(\mathcal{L} = -\sum_k y_k \log \hat{y}_k\) 多分类损失
(6.10) 链式法则 \(\frac{\partial f}{\partial x} = \frac{\partial f}{\partial g}\cdot\frac{\partial g}{\partial x}\) 梯度计算
(6.11) 反向传播误差 \(\boldsymbol{\delta}^{(l)} = (\mathbf{W}^{(l+1)})^\top\boldsymbol{\delta}^{(l+1)}\odot\sigma'(\mathbf{z}^{(l)})\) 误差反传
(6.12) 权重梯度 \(\frac{\partial\mathcal{L}}{\partial\mathbf{W}^{(l)}} = \boldsymbol{\delta}^{(l)}(\mathbf{a}^{(l-1)})^\top\) 参数更新
(6.13) 通用近似 \(\hat{f}(\mathbf{x}) = \sum_{i=1}^{N} v_i\sigma(w_i^\top x+b_i)\) 理论保证

本章小结

本章系统介绍了深度前馈神经网络的核心概念:

  1. XOR问题揭示了线性模型的固有局限,隐藏层的引入使得网络能够学习非线性特征表示
  2. 前馈架构通过层级结构实现信息的逐层抽象与转换
  3. 激活函数(Sigmoid、Tanh、ReLU、LReLU、ELU)为网络注入非线性,是逼近复杂函数的关键
  4. 输出单元的设计应与任务类型匹配:线性单元用于回归,Sigmoid/Softmax用于分类
  5. 梯度学习通过反向传播算法高效计算参数梯度,实现端到端的优化
  6. 隐藏层表示使网络能够自动学习层级分布式特征
  7. 通用近似定理从理论上保证了神经网络强大的函数逼近能力

这些概念构成了现代深度学习的理论基础,为后续章节讨论正则化、优化、卷积网络、循环网络等高级主题奠定了坚实的根基。


本章内容基于《Deep Learning》(Ian Goodfellow, Yoshua Bengio, Aaron Courville, 2016) 第六章编写