神经网络模型
前面几讲都在用较明确的结构假设组织模型(线性、概率图、稀疏性)。神经网络的不同在于:它把很多结构学习的工作交给了参数化表示本身——通过多层非线性变换,自动提取数据的层级特征。本讲建立神经网络最基本的结构直觉:神经元、层、激活函数、反向传播,以及 CNN/RNN 为什么出现。
前置知识回顾
- 微积分:链式法则是反向传播的数学核心。作用:理解梯度如何在网络中逐层回传。去哪里补:高等数学。
- 线性代数:网络本质上是矩阵变换的叠加。作用:理解全连接层的批量计算。去哪里补:L02 线性模型。
- 优化:梯度下降、学习率、损失函数。作用:训练过程几乎总要回到梯度下降。去哪里补:L01 参数估计。
线性模型 + 核方法已经能做非线性分类了,为什么还需要神经网络?关键区别在于特征工程:核方法需要人工选择核函数(相当于手动设计特征空间),而神经网络通过端到端训练自动学习特征表示。当数据维度高、结构复杂时(图像、语音、自然语言),人工设计特征几乎不可能。
课件从生物学启发引入:人脑的神经元通过电信号传递信息,网络通过权值调整实现学习。人工神经网络是这一过程的极度简化数学模型。
单个神经元
输入 $\mathbf{x}$,权重 $\mathbf{w}$,偏置 $b$,激活函数 $\sigma$:
没有激活函数,多层网络仍然坍缩为单层线性变换。激活函数提供非线性,是网络表达力的来源。
| 激活函数 | 形式 | 特点 |
|---|---|---|
| Sigmoid | $\sigma(a) = 1/(1+e^{-a})$ | 输出 $(0,1)$,两端梯度消失 |
| Tanh | $\tanh(a)$ | 输出 $(-1,1)$,零中心化但仍梯度消失 |
| ReLU | $\max(0,a)$ | 正区间梯度恒为 1,负区间"死亡" |
| Leaky ReLU | $\max(\alpha a, a)$,$\alpha \ll 1$ | 缓解死亡 ReLU |
前馈网络的结构是:输入层 → 隐藏层(可多层)→ 输出层。信息从输入到输出单向流动,没有回路。
反向传播不是新算法,它就是链式法则在计算图上的系统化应用。对于一个 $L$ 层网络:
前向传播
其中 $l = 1, \ldots, L$,$\mathbf{h}^{(0)} = \mathbf{x}$(输入)。
反向传播
定义第 $l$ 层的误差信号 $\boldsymbol{\delta}^{(l)} = \frac{\partial E}{\partial \mathbf{a}^{(l)}}$。递推公式:
参数梯度:
反向传播的关键洞察:梯度从输出层向输入层逐层回传,每一层只需要知道"下一层传来的误差信号"和"本层的激活梯度"。
课件明确指出了全连接前馈网络的两个根本缺陷:
| 缺陷 | 问题 | 解决方案 |
|---|---|---|
| 参数量爆炸 | 输入维度 $d$、隐藏层 $m$ 个神经元 → $d \times m$ 个参数 | CNN:参数共享 + 局部连接 |
| 不满足局部不变性 | 同一模式出现在不同位置,全连接层要重新学 | CNN:平移不变性(卷积 + 池化) |
| 无时序记忆 | 输入固定长度,无法处理变长序列 | RNN:隐状态携带历史信息 |
CNN 的核心设计来自三个归纳偏置:
- 局部连接:每个神经元只看输入的一个小窗口(感受野),而非全部像素。
- 权值共享:同一个卷积核在整个图像上滑动,所有位置共享同一组参数。
- 平移不变性:模式无论出现在图像的哪个位置,同一卷积核都能检测到。
卷积操作
二维卷积:$(f * g)[i,j] = \sum_m \sum_n f[m,n] \cdot g[i-m, j-n]$。卷积核 $f$ 在输入 $g$ 上滑动,每步计算内积,输出特征图。池化层(Max Pooling / Average Pooling)降低空间分辨率,增强鲁棒性。
典型 CNN 架构:卷积层 → 激活 → 池化 → 卷积 → 激活 → 池化 → 全连接 → 输出。
RNN 在隐藏层引入自环连接,让隐状态 $\mathbf{h}_t$ 依赖于当前输入 $\mathbf{x}_t$ 和上一时刻隐状态 $\mathbf{h}_{t-1}$:
RNN 的训练使用随时间反向传播 (BPTT):把序列展开后当做深度网络处理。主要问题是梯度消失/爆炸:长序列上梯度连乘导致前面的梯度信号指数级衰减或增长。LSTM 和 GRU 通过门控机制缓解了这个问题。
| 维度 | 全连接 | CNN | RNN |
|---|---|---|---|
| 参数共享 | 无 | 卷积核滑动共享 | 时间步共享 |
| 归纳偏置 | 无(纯函数拟合) | 局部性 + 平移不变性 | 时序依赖 |
| 输入尺寸 | 固定 | 任意(滑动窗口) | 变长序列 |
| 典型应用 | 分类/回归 | 图像、视频 | 文本、语音、时序 |
| 主要瓶颈 | 参数量 | 感受野有限 | 长距离依赖(梯度消失) |
例题:参数量计算
题目:输入为 $224 \times 224 \times 3$ 的 RGB 图像,第一个隐藏层有 1024 个神经元。全连接层需要多少参数?
- 输入维度:$224 \times 224 \times 3 = 150,528$。
- 权重矩阵:$150,528 \times 1024 = 154,140,672$ 个权重。
- 偏置:$1024$ 个。
- 总计:约 1.54 亿个参数——仅第一层就如此。
对比:一个 $3 \times 3$ 卷积核在 64 个通道上只有 $3 \times 3 \times 3 \times 64 = 1,728$ 个参数,且在整张图上共享。
例题:为什么 RNN 记不住长距离依赖
题目:一个简单 RNN 的隐状态更新为 $h_t = \tanh(W h_{t-1} + U x_t)$。在 BPTT 中,梯度从 $t=T$ 回传到 $t=1$ 需要连乘 $T-1$ 次 Jacobian $\frac{\partial h_t}{\partial h_{t-1}}$。当 $T$ 很大时会发生什么?
- Jacobian 的谱范数:若 $\|W\| < 1$,连乘后梯度指数衰减→梯度消失,早期时刻的信号丢失。
- 若 $\|W\| > 1$:梯度指数增长→梯度爆炸,训练不稳定。
- LSTM 的解决方案:引入细胞状态 $c_t$ 的线性自环 $c_t = f_t \odot c_{t-1} + i_t \odot \tilde{c}_t$。遗忘门 $f_t$ 接近 1 时,梯度几乎无损通过——"记忆高速公路"。
答案:RNN 的长距离记忆问题来自 Jacobian 连乘的指数衰减/爆炸。LSTM 的门控机制通过设计一条梯度可以无损通过的路径来缓解。
后续用途 / 连接
- L08 Transformer:注意力机制直接替代了 RNN 的序列依赖建模。Self-Attention 可以一步看到整个序列,不受距离限制——这正是 RNN 的核心缺陷。
- L04 集成学习:Dropout 训练时随机丢弃神经元,等价于训练指数级数量的子网络集成。
- L05 压缩感知:网络剪枝(移除不重要的权重)和稀疏激活(ReLU 只保留正半轴)都是稀疏性在深度学习中的体现。
复习速查
- 神经元:$h = \sigma(\mathbf{w}^T\mathbf{x} + b)$,激活函数提供非线性。
- 反向传播:链式法则在计算图上的系统化,误差信号逐层回传。
- 全连接缺陷:参数爆炸 + 无局部不变性 + 无时序记忆。
- CNN:局部连接 + 权值共享 + 平移不变性 → 图像适配。
- RNN:隐状态自环 → 时序依赖建模,但梯度消失。
- 归纳偏置:越强越省数据,但灵活性越低。
参考来源
- 课程课件:25C07 第 4–13 页(生物学启发、神经元、激活函数、输出单元)
- 课程课件:25C07 第 16 页(全连接网络)
- 课程课件:25C07 第 21–23 页(全连接缺陷与 CNN 动机)
- 课程课件:25C07 第 25–35 页(CNN 与 RNN)
- Goodfellow et al., Deep Learning, Ch. 6–10
- D2L(https://d2l.ai)