引言:从生物启发到智能革命

1943年,Warren McCulloch和Walter Pitts提出了第一个神经元数学模型。他们用一个简单的数学公式模拟了生物神经元的工作方式:接收输入、加权求和、激活输出。这个看似简单的想法,却孕育了后来改变世界的人工智能技术。

1958年,Frank Rosenblatt发明了感知机(Perceptron),这是第一个可以学习的神经网络。但1969年,Minsky和Papert在《Perceptrons》一书中证明了单层感知机无法解决异或(XOR)问题,这个致命缺陷导致了神经网络研究的第一次寒冬。

1986年,David Rumelhart、Geoffrey Hinton和Ronald Williams重新发现了反向传播算法,解决了多层网络的训练问题。神经网络迎来了短暂的春天。

但在90年代到2000年代初,支持向量机(SVM)等传统机器学习算法统治了学术界。神经网络因为数据量不足、计算能力有限、缺乏有效的训练技巧,再次陷入沉寂。

2012年,ImageNet竞赛上,Hinton的学生Alex Krizhevsky使用深度卷积神经网络AlexNet,以压倒性优势击败了传统方法,分类错误率从26%降低到15.3%。这一年,深度学习时代正式开启。

从此,深度学习以惊人的速度发展:2014年的VGG、GoogLeNet,2015年的ResNet解决深度退化问题,2017年的Transformer彻底改变自然语言处理,2022年的ChatGPT让全世界见识到大模型的力量。

本文将从数学原理出发,系统讲解深度学习的核心算法:从基础神经网络到卷积神经网络(CNN),从循环神经网络(RNN)到Transformer,最后探讨未来发展趋势。

第一章:神经网络的数学基础

1.1 单神经元:感知机的数学模型

1.1.1 前向传播

感知机是最基础的神经网络单元,模拟生物神经元的工作原理。给定输入向量 $x \in \mathbb{R}^d$,权重向量 $w \in \mathbb{R}^d$,偏置 $b \in \mathbb{R}$:

$$z = w^Tx + b = \sum_{i=1}^d w_i x_i + b$$

激活函数 $\sigma(z)$ 决定神经元的输出:

$$a = \sigma(z)$$

1.1.2 常用激活函数

Sigmoid函数: $$\sigma(z) = \frac{1}{1 + e^{-z}}$$

导数: $$\sigma’(z) = \sigma(z)(1 - \sigma(z))$$

性质:

  • 输出范围:$(0, 1)$
  • S型曲线,可微
  • 缺点:梯度消失($| \sigma’(z) | \leq 0.25$),输出不以零为中心

Tanh函数: $$\tanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}$$

导数: $$\tanh’(z) = 1 - \tanh^2(z)$$

性质:

  • 输出范围:$(-1, 1)$
  • 以零为中心,比Sigmoid收敛更快

ReLU(Rectified Linear Unit): $$\text{ReLU}(z) = \max(0, z)$$

导数: $$\text{ReLU}’(z) = \begin{cases} 1 & z > 0 \ 0 & z \leq 0 \end{cases}$$

性质:

  • 计算简单(不涉及指数运算)
  • 缓解梯度消失问题
  • 缺点:神经元"死亡"($z \leq 0$ 时梯度为0)

Leaky ReLU: $$\text{LeakyReLU}(z) = \max(\alpha z, z), \quad \alpha < 1$$

解决神经元死亡问题($\alpha$ 是小正数,如0.01)

Swish: $$\text{Swish}(z) = z \cdot \sigma(z) = \frac{z}{1 + e^{-z}}$$

在许多任务中表现优于ReLU

1.2 多层前馈神经网络

1.2.1 网络结构

多层神经网络由输入层、隐藏层、输出层组成。设网络有 $L$ 层,第 $l$ 层有 $n^{[l]}$ 个神经元。

记号:

  • $W^{[l]} \in \mathbb{R}^{n^{[l]} \times n^{[l-1]}}$:第 $l$ 层的权重矩阵
  • $b^{[l]} \in \mathbb{R}^{n^{[l]}}$:第 $l$ 层的偏置向量
  • $Z^{[l]} \in \mathbb{R}^{n^{[l]}}$:第 $l$ 层的线性变换结果
  • $A^{[l]} \in \mathbb{R}^{n^{[l]}}$:第 $l$ 层的激活输出

1.2.2 前向传播

第1层(输入层到第1个隐藏层): $$Z^{[1]} = W^{[1]}X + b^{[1]}$$ $$A^{[1]} = \sigma^{[1]}(Z^{[1]})$$

第 $l$ 层($l = 2, \ldots, L$): $$Z^{[l]} = W^{[l]}A^{[l-1]} + b^{[l]}$$ $$A^{[l]} = \sigma^{[l]}(Z^{[l]})$$

其中 $X = A^{[0]}$ 是输入,$\hat{Y} = A^{[L]}$ 是网络输出。

1.2.3 向量化实现

给定 $m$ 个样本的训练集 $X \in \mathbb{R}^{d \times m}$,前向传播可以矩阵化:

$$Z^{[1]} = W^{[1]}X + b^{[1]}$$ $$A^{[1]} = \sigma^{[1]}(Z^{[1]})$$ $$\vdots$$ $$Z^{[L]} = W^{[L]}A^{[L-1]} + b^{[L]}$$ $$\hat{Y} = A^{[L]} = \sigma^{[L]}(Z^{[L]})$$

这种实现利用矩阵运算,可以利用GPU加速。

1.3 损失函数

1.3.1 回归任务

均方误差(MSE): $$\mathcal{L} = \frac{1}{2m}\sum_{i=1}^m (y^{(i)} - \hat{y}^{(i)})^2$$

平均绝对误差(MAE): $$\mathcal{L} = \frac{1}{m}\sum_{i=1}^m |y^{(i)} - \hat{y}^{(i)}|$$

1.3.2 分类任务

交叉熵损失(多分类): 设 $y \in {0, 1}^K$ 是one-hot编码,$\hat{y} = \text{softmax}(z)$ 是预测概率:

$$\mathcal{L} = -\frac{1}{m}\sum_{i=1}^m \sum_{k=1}^K y_k^{(i)} \log \hat{y}_k^{(i)}$$

Softmax函数: $$\text{softmax}(z)k = \frac{e^{z_k}}{\sum{j=1}^K e^{z_j}}$$

性质:

  • 输出是概率分布($\sum_k \hat{y}_k = 1$,$\hat{y}_k > 0$)
  • 对数空间计算数值稳定

交叉熵损失(二分类): $$\mathcal{L} = -\frac{1}{m}\sum_{i=1}^m [y^{(i)} \log \hat{y}^{(i)} + (1 - y^{(i)}) \log(1 - \hat{y}^{(i)})]$$

1.4 反向传播算法

反向传播是深度学习的核心算法,用于高效计算梯度。

1.4.1 链式法则

损失函数对参数的梯度可以通过链式法则计算:

$$\frac{\partial \mathcal{L}}{\partial W^{[l]}} = \frac{\partial \mathcal{L}}{\partial Z^{[l]}} \frac{\partial Z^{[l]}}{\partial W^{[l]}}$$

$$\frac{\partial \mathcal{L}}{\partial b^{[l]}} = \frac{\partial \mathcal{L}}{\partial Z^{[l]}} \frac{\partial Z^{[l]}}{\partial b^{[l]}}$$

1.4.2 反向传播推导

定义误差项(error term): $$dZ^{[l]} = \frac{\partial \mathcal{L}}{\partial Z^{[l]}}$$

输出层: $$dZ^{[L]} = A^{[L]} - Y$$

(这是使用交叉熵损失和Softmax激活的简化结果)

隐藏层(从后向前传播): $$dA^{[l]} = (W^{[l+1]})^T dZ^{[l+1]}$$ $$dZ^{[l]} = dA^{[l]} \odot \sigma^{[l]’}(Z^{[l]})$$

其中 $\odot$ 是逐元素乘积(Hadamard product)。

梯度计算: $$dW^{[l]} = \frac{1}{m} dZ^{[l]} (A^{[l-1]})^T$$ $$db^{[l]} = \frac{1}{m} \sum_{i=1}^m dZ^{[l]}_{:, i}$$

1.4.3 算法复杂度

前向传播:$O(\sum_{l=1}^L n^{[l]} n^{[l-1]})$

反向传播:$O(\sum_{l=1}^L n^{[l]} n^{[l-1]})$

两者复杂度相同!这是反向传播算法的高效之处。

1.5 梯度下降与优化算法

1.5.1 批量梯度下降(Batch GD)

每次迭代使用所有样本:

$$W^{[l]} := W^{[l]} - \alpha \frac{\partial \mathcal{L}}{\partial W^{[l]}}$$

缺点:数据量大时速度慢

1.5.2 随机梯度下降(SGD)

每次迭代使用一个样本:

$$W^{[l]} := W^{[l]} - \alpha \frac{\partial \mathcal{L}^{(i)}}{\partial W^{[l]}}$$

优点:速度快,但梯度方差大

1.5.3 小批量梯度下降(Mini-batch GD)

每次迭代使用一批样本(常用64、128、256):

$$W^{[l]} := W^{[l]} - \alpha \frac{1}{m_t} \sum_{i \in \mathcal{B}_t} \frac{\partial \mathcal{L}^{(i)}}{\partial W^{[l]}}$$

结合了BGD和SGD的优点

1.5.4 动量法(Momentum)

引入速度项,加速收敛:

$$v_{dW^{[l]}} := \beta_1 v_{dW^{[l]}} + (1 - \beta_1) \frac{\partial \mathcal{L}}{\partial W^{[l]}}$$ $$W^{[l]} := W^{[l]} - \alpha v_{dW^{[l]}}$$

$\beta_1 \approx 0.9$,控制历史梯度的衰减率

1.5.5 Adam优化器

结合动量法和RMSprop,自适应学习率:

计算动量: $$m_{dW^{[l]}} := \beta_1 m_{dW^{[l]}} + (1 - \beta_1) \frac{\partial \mathcal{L}}{\partial W^{[l]}}$$ $$v_{dW^{[l]}} := \beta_2 v_{dW^{[l]}} + (1 - \beta_2) \left(\frac{\partial \mathcal{L}}{\partial W^{[l]}}\right)^2$$

偏差修正: $$\hat{m}{dW^{[l]}} = \frac{m{dW^{[l]}}}{1 - \beta_1^t}$$ $$\hat{v}{dW^{[l]}} = \frac{v{dW^{[l]}}}{1 - \beta_2^t}$$

参数更新: $$W^{[l]} := W^{[l]} - \alpha \frac{\hat{m}{dW^{[l]}}}{\sqrt{\hat{v}{dW^{[l]}}} + \epsilon}$$

超参数:$\beta_1 = 0.9$, $\beta_2 = 0.999$, $\epsilon = 10^{-8}$

1.6 正则化技术

1.6.1 L2正则化(权重衰减)

$$\mathcal{L}{\text{reg}} = \mathcal{L} + \frac{\lambda}{2m} \sum{l=1}^L |W^{[l]}|_F^2$$

梯度更新: $$dW^{[l]}_{\text{reg}} = dW^{[l]} + \frac{\lambda}{m} W^{[l]}$$

权重被"拉向"零

1.6.2 Dropout

训练时以概率 $p$ 随机丢弃神经元:

$$\tilde{a}^{[l]} = a^{[l]} \odot r^{[l]}, \quad r^{[l]}_i \sim \text{Bernoulli}(1-p)$$

$$\hat{a}^{[l]} = \frac{\tilde{a}^{[l]}}{1-p}$$(缩放保持期望)

测试时使用所有神经元,权重乘以 $(1-p)$

作用:防止过拟合,相当于训练了多个子网络的集成

1.6.3 批量归一化(Batch Normalization)

标准化每层的激活值:

训练时: $$\mu^{[l]} = \frac{1}{m} \sum_{i=1}^m Z^{[l]}{:, i}$$ $$\sigma^2^{[l]} = \frac{1}{m} \sum{i=1}^m (Z^{[l]}{:, i} - \mu^{[l]})^2$$ $$\hat{Z}^{[l]} = \frac{Z^{[l]} - \mu^{[l]}}{\sqrt{\sigma^2^{[l]} + \epsilon}}$$ $$Z{\text{BN}}^{[l]} = \gamma^{[l]} \odot \hat{Z}^{[l]} + \beta^{[l]}$$

可学习参数:$\gamma^{[l]}$(缩放)、$\beta^{[l]}$(平移)

测试时:使用移动平均的均值和方差

作用

  • 加速训练
  • 允许使用更大学习率
  • 减少对初始化的敏感度

1.6.4 早停法(Early Stopping)

在验证集上监控性能,性能不再提升时停止训练

第二章:卷积神经网络(CNN)

2.1 卷积操作

2.1.1 2D卷积

给定输入特征图 $X \in \mathbb{R}^{H \times W \times C}$,卷积核 $K \in \mathbb{R}^{k_h \times k_w \times C}$:

$$Z_{i,j} = \sum_{c=1}^C \sum_{u=0}^{k_h-1} \sum_{v=0}^{k_w-1} X_{i+u, j+v, c} \cdot K_{u,v,c} + b$$

其中 $b \in \mathbb{R}$ 是偏置。

2.1.2 步长(Stride)

步长 $s$ 控制卷积核滑动的步长,输出尺寸:

$$H’ = \left\lfloor \frac{H - k_h}{s} \right\rfloor + 1$$ $$W’ = \left\lfloor \frac{W - k_w}{s} \right\rfloor + 1$$

2.1.3 填充(Padding)

填充 $p$ 在输入周围补零,输出尺寸:

$$H’ = \left\lfloor \frac{H + 2p - k_h}{s} \right\rfloor + 1$$ $$W’ = \left\lfloor \frac{W + 2p - k_w}{s} \right\rfloor + 1$$

Valid padding(不填充):$p = 0$ Same padding(保持尺寸):$p = \lfloor \frac{k-1}{2} \rfloor$

2.1.4 通道

多个卷积核产生多个输出通道:

输入 $X \in \mathbb{R}^{H \times W \times C_{in}}$,卷积核组 $K \in \mathbb{R}^{k_h \times k_w \times C_{in} \times C_{out}}$

输出 $Z \in \mathbb{R}^{H’ \times W’ \times C_{out}}$

2.1.5 卷积 vs 全连接

卷积层是稀疏连接的权重共享:

  • 参数数量:$k_h \times k_w \times C_{in} \times C_{out}$(与输入尺寸无关)
  • 平移不变性:相同模式在不同位置识别

全连接层:

  • 参数数量:$H \times W \times C_{in} \times n_{out}$(与输入尺寸成正比)

2.2 池化层

2.2.1 最大池化(Max Pooling)

$$Z_{i,j} = \max_{0 \leq u < k_h, 0 \leq v < k_w} X_{i \cdot s + u, j \cdot s + v}$$

作用

  • 降采样,减少计算量
  • 平移不变性
  • 防止过拟合

2.2.2 平均池化(Average Pooling)

$$Z_{i,j} = \frac{1}{k_h k_w} \sum_{u=0}^{k_h-1} \sum_{v=0}^{k_w-1} X_{i \cdot s + u, j \cdot s + v}$$

2.2.3 全局平均池化(Global Average Pooling)

对每个通道取平均,输出 $1 \times 1 \times C$:

$$Z_c = \frac{1}{HW} \sum_{i=1}^H \sum_{j=1}^W X_{i,j,c}$$

常用于替代全连接层,减少参数

2.3 经典CNN架构

2.3.1 LeNet-5(1998)

Yann LeCun设计的手写数字识别网络(MNIST)

结构:

  1. 卷积层(6个5×5卷积核,步长1,padding0)→ 激活(tanh)
  2. 平均池化(2×2,步长2)
  3. 卷积层(16个5×5卷积核)→ 激活
  4. 平均池化(2×2,步长2)
  5. 卷积层(120个5×5卷积核)→ 激活
  6. 全连接层(84个神经元)
  7. 输出层(10个神经元,softmax)

参数量:约6万个

2.3.2 AlexNet(2012)

深度学习革命的起点,ImageNet冠军

结构:

  1. 卷积层(96个11×11卷积核,步长4)→ ReLU → 最大池化(3×3,步长2)→ 局部响应归一化(LRN)
  2. 卷积层(256个5×5卷积核,padding2)→ ReLU → 最大池化 → LRN
  3. 卷积层(384个3×3卷积核,padding1)→ ReLU
  4. 卷积层(384个3×3卷积核,padding1)→ ReLU
  5. 卷积层(256个3×3卷积核,padding1)→ ReLU → 最大池化
  6. 全连接层(4096个神经元)→ Dropout(0.5)
  7. 全连接层(4096个神经元)→ Dropout(0.5)
  8. 输出层(1000个神经元,softmax)

参数量:约6000万个

创新点

  • 使用ReLU激活(加速训练)
  • Dropout防止过拟合
  • 数据增强(平移、翻转、颜色变化)
  • GPU加速训练(两块GTX 580)

2.3.3 VGG(2014)

“简单但有效"的设计理念

核心思想:使用小卷积核(3×3)堆叠代替大卷积核

两个3×3卷积的感受野相当于一个5×5卷积: $$3 \times 3 \to 3 \times 3 \to \text{感受野} = 5 \times 5$$

优点:

  • 参数更少:$2 \times 3^2 = 18 < 5^2 = 25$
  • 更多非线性层(每个3×3后都有ReLU)
  • 深度可以更深

VGG-16结构

  1. Conv3-64(2个3×3卷积,64通道)→ MaxPool
  2. Conv3-128(2个3×3卷积,128通道)→ MaxPool
  3. Conv3-256(3个3×3卷积,256通道)→ MaxPool
  4. Conv3-512(3个3×3卷积,512通道)→ MaxPool
  5. Conv3-512(3个3×3卷积,512通道)→ MaxPool
  6. FC-4096 → FC-4096 → FC-1000

参数量:约1.38亿个

2.3.4 GoogLeNet(Inception v1)(2014)

引入Inception模块,多尺度特征提取

Inception模块: 并行多个不同大小的卷积核(1×1, 3×3, 5×5),并拼接结果

问题:计算量大

优化:使用1×1卷积降维(bottleneck)

  • 在3×3和5×5卷积前加1×1卷积减少通道数
  • 在池化后加1×1卷积减少通道数

GoogLeNet结构

  • 9个Inception模块堆叠
  • 使用全局平均池化替代全连接层
  • 辅助分类器(中间层)加速训练

参数量:约600万个(远少于AlexNet)

2.3.5 ResNet(2015)

解决深度网络的退化问题(degradation)

残差连接: $$y = F(x, {W}) + x$$

其中 $F(x, {W})$ 是残差函数(至少2层)

为什么有效?

传统网络学习 $H(x)$,ResNet学习残差 $F(x) = H(x) - x$

  • 如果最优是恒等映射 $H(x) = x$,则只需让 $F(x) = 0$(更容易)
  • 梯度可以通过恒等连接直接传播,缓解梯度消失

ResNet-50结构

  • 使用bottleneck设计:1×1降维 → 3×3卷积 → 1×1升维
  • 4个stage,通道数逐步增加(64, 128, 256, 512)
  • 每个stage有多个残差块(3, 4, 6, 3)

参数量:约2560万个

深度表现

  • ResNet-18, 34:基本残差块
  • ResNet-50, 101, 152:bottleneck残差块
  • ResNet-152在ImageNet上达到3.57%的top-5错误率(低于人类5.1%)

2.3.6 DenseNet(2017)

密集连接网络,每一层都与前面的所有层连接

密集块(Dense Block): $$x_l = H_l([x_0, x_1, \ldots, x_{l-1}])$$

其中 $[x_0, x_1, \ldots, x_{l-1}]$ 是前面所有层输出的拼接

优点

  • 特征复用,参数更少
  • 梯度流动更顺畅
  • 缓解梯度消失

过渡层(Transition Layer): 在密集块之间,进行降维和降采样

  • 1×1卷积降维
  • 2×2平均池化

DenseNet-121结构

  • 4个密集块(增长率 $k = 32$)
  • 每个块有 6, 12, 24, 16 层
  • 参数量:约800万个

2.4 CNN的应用

2.4.1 图像分类

任务:给定图像,预测类别标签

数据集

  • ImageNet(1000类,140万张图像)
  • CIFAR-10/100(10/100类,6万张小图像)
  • MNIST(10类手写数字)

2.4.2 目标检测

任务:定位图像中的物体并分类

算法

  • R-CNN系列(R-CNN, Fast R-CNN, Faster R-CNN):两阶段检测
  • YOLO(You Only Look Once):单阶段检测
  • SSD(Single Shot MultiBox Detector):多尺度单阶段检测

2.4.3 语义分割

任务:为图像中的每个像素分类

算法

  • FCN(Fully Convolutional Network):将全连接层替换为卷积层
  • U-Net:编码器-解码器结构,跳跃连接
  • DeepLab:空洞卷积扩大感受野

2.4.4 人脸识别

任务:验证或识别人脸

算法

  • FaceNet:使用triplet loss学习人脸嵌入
  • ArcFace:添加角度间隔margin
  • CosFace:余弦间隔

第三章:循环神经网络(RNN)

3.1 RNN基础

3.1.1 序列建模问题

传统神经网络处理固定尺寸输入,无法处理变长序列。

RNN(Recurrent Neural Network)通过隐藏状态传递历史信息。

3.1.2 RNN前向传播

给定序列 $x = (x_1, x_2, \ldots, x_T)$

初始化:$h_0 = \mathbf{0}$

对于 $t = 1, 2, \ldots, T$: $$h_t = \sigma_h(W_h h_{t-1} + W_x x_t + b_h)$$ $$\hat{y}_t = \sigma_y(W_y h_t + b_y)$$

其中:

  • $W_h \in \mathbb{R}^{n_h \times n_h}$:隐藏状态到隐藏状态的权重
  • $W_x \in \mathbb{R}^{n_h \times n_x}$:输入到隐藏状态的权重
  • $W_y \in \mathbb{R}^{n_y \times n_h}$:隐藏状态到输出的权重
  • $n_h$:隐藏状态维度
  • $\sigma_h, \sigma_y$:激活函数

3.1.3 时间展开(Unrolling)

RNN在时间步上展开,等价于深度网络:

  • 同样的参数 $W_h, W_x, W_y$ 在不同时间步共享
  • 深度 = 序列长度 $T$

3.1.4 梯度消失与梯度爆炸

反向传播时(BPTT),梯度通过时间反向传播:

$$\frac{\partial \mathcal{L}}{\partial h_t} = \prod_{k=t}^{T} \frac{\partial h_{k+1}}{\partial h_k} \cdot \frac{\partial \mathcal{L}}{\partial \hat{y}_{k+1}}$$

其中 $\frac{\partial h_{k+1}}{\partial h_k} = \text{diag}(\sigma_h’(z_k)) W_h$

梯度消失:如果 $|\text{diag}(\sigma_h’(z_k)) W_h| < 1$,长程依赖无法学习

梯度爆炸:如果 $|\text{diag}(\sigma_h’(z_k)) W_h| > 1$,梯度指数增长,训练不稳定

解决方法

  • 梯度裁剪(Gradient Clipping):$|g| \leftarrow \min(|g|, \theta)$
  • 使用LSTM/GRU门控结构

3.2 LSTM(Long Short-Term Memory)

3.2.1 核心思想

LSTM通过门控机制(gating)控制信息的流动,选择性记忆和遗忘。

3.2.2 LSTM单元

给定输入 $x_t$ 和前一隐藏状态 $h_{t-1}$、细胞状态 $c_{t-1}$

遗忘门(Forget Gate):决定丢弃什么信息 $$f_t = \sigma(W_f [h_{t-1}, x_t] + b_f)$$

输入门(Input Gate):决定存储什么新信息 $$i_t = \sigma(W_i [h_{t-1}, x_t] + b_i)$$ $$\tilde{c}t = \tanh(W_c [h{t-1}, x_t] + b_c)$$

细胞状态更新: $$c_t = f_t \odot c_{t-1} + i_t \odot \tilde{c}_t$$

输出门(Output Gate):决定输出什么 $$o_t = \sigma(W_o [h_{t-1}, x_t] + b_o)$$ $$h_t = o_t \odot \tanh(c_t)$$

其中 $\odot$ 是逐元素乘积。

3.2.3 为什么LSTM有效?

  1. 细胞状态 $c_t$ 作为"高速公路”:梯度可以直接传播,缓解梯度消失
  2. 门控机制:动态控制信息流
    • 遗忘门 $f_t \to 0$:遗忘长期信息
    • 遗忘门 $f_t \to 1$:保持长期信息
    • 输入门 $i_t \to 0$:忽略当前输入
    • 输入门 $i_t \to 1$:记录当前输入

3.3 GRU(Gated Recurrent Unit)

3.3.1 简化的LSTM

GRU是LSTM的简化版本,参数更少。

3.3.2 GRU单元

$$z_t = \sigma(W_z [h_{t-1}, x_t] + b_z)$$(更新门) $$r_t = \sigma(W_r [h_{t-1}, x_t] + b_r)$$(重置门) $$\tilde{h}t = \tanh(W_h [r_t \odot h{t-1}, x_t] + b_h)$$ $$h_t = (1 - z_t) \odot h_{t-1} + z_t \odot \tilde{h}_t$$

更新门 $z_t$:控制前一隐藏状态的保留程度

  • $z_t \to 0$:保留 $h_{t-1}$
  • $z_t \to 1$:更新为 $\tilde{h}_t$

重置门 $r_t$:控制前一隐藏状态在候选新状态中的参与度

  • $r_t \to 0$:忽略 $h_{t-1}$,类似"重置"
  • $r_t \to 1$:考虑 $h_{t-1}$

3.4 双向RNN(BiRNN)

有些任务需要同时考虑过去和未来信息。

双向RNN

  • 前向RNN:$ \overrightarrow{h}t = RNN{\text{forward}}(x_t, \overrightarrow{h}_{t-1}) $
  • 后向RNN:$ \overleftarrow{h}t = RNN{\text{backward}}(x_t, \overleftarrow{h}_{t+1}) $
  • 组合:$h_t = [\overrightarrow{h}_t; \overleftarrow{h}_t]$

应用:机器翻译、命名实体识别、语音识别

3.5 RNN的应用

3.5.1 语言模型

任务:给定前面的词,预测下一个词

$$P(w_t | w_{<t}) = \text{softmax}(W_y h_t + b_y)$$

应用

  • 文本生成
  • 拼写纠正
  • 语音识别(语言模型用于约束)

3.5.2 机器翻译

序列到序列(Seq2Seq)模型

编码器-解码器结构:

  • 编码器:将源序列编码为固定向量
  • 解码器:从编码向量生成目标序列

问题:固定长度的编码向量是信息瓶颈

改进:注意力机制(Attention)

3.5.3 语音识别

声学模型:将声学特征序列映射到音素或字符序列

应用:Siri、Google语音识别、智能音箱

3.5.4 问答系统

任务:给定问题和段落,抽取答案

方法

  • 将问题和段落编码为向量
  • 计算相关性
  • 抽取答案片段

第四章:注意力机制与Transformer

4.1 注意力机制

4.1.1 动机

Seq2Seq模型使用固定长度的编码向量,信息瓶颈。

注意力机制允许解码器在每一步动态关注源序列的不同部分。

4.1.2 Bahdanau注意力(加性注意力)

上下文向量: $$c_i = \sum_{j=1}^{T_x} \alpha_{ij} h_j$$

其中 $\alpha_{ij}$ 是注意力权重: $$\alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{k=1}^{T_x} \exp(e_{ik})}$$

注意力分数: $$e_{ij} = v_a^T \tanh(W_a h_j + U_a s_{i-1})$$

$h_j$:编码器隐藏状态,$s_{i-1}$:解码器前一状态

4.1.3 Luong注意力(乘性注意力)

全局注意力: $$c_i = \sum_{j} \alpha_{ij} h_j$$

注意力分数: $$e_{ij} = s_{i-1}^T W_a h_j$$

局部注意力:只在窗口内计算注意力,减少计算量

4.2 自注意力机制

4.2.1 核心思想

自注意力允许序列中的每个位置关注其他所有位置。

4.2.2 缩放点积注意力

给定查询 $Q$、键 $K$、值 $V$:

$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V$$

其中:

  • $Q \in \mathbb{R}^{n \times d_k}$
  • $K \in \mathbb{R}^{m \times d_k}$
  • $V \in \mathbb{R}^{m \times d_v}$

缩放因子 $\frac{1}{\sqrt{d_k}}$:防止点积过大导致softmax梯度消失

直观理解

  • $Q$:我想找什么
  • $K$:我有什么
  • 注意力权重 = $Q$ 和 $K$ 的相似度(点积)
  • 输出 = 加权的 $V$

4.3 Transformer架构

4.3.1 整体架构

Transformer完全基于注意力机制,摒弃了RNN的循环结构。

编码器-解码器结构

  • 编码器:$N$ 个相同的层堆叠(通常 $N=6$)
  • 解码器:$N$ 个相同的层堆叠(通常 $N=6$)

4.3.2 编码器层

每层包含两个子层:

  1. 多头自注意力
  2. 前馈神经网络(Feed-Forward Network)

每个子层后跟残差连接和层归一化: $$\text{LayerNorm}(x + \text{Sublayer}(x))$$

前馈神经网络: $$\text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2$$

维度:$d_{\text{model}} \to d_{\text{ff}} \to d_{\text{model}}$ 通常 $d_{\text{ff}} = 4d_{\text{model}}$

4.3.3 多头注意力(Multi-Head Attention)

问题:单头注意力难以捕捉多种关系

多头注意力: $$\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)W^O$$

其中: $$\text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V)$$

$W_i^Q \in \mathbb{R}^{d_{\text{model}} \times d_k}$, $W_i^K \in \mathbb{R}^{d_{\text{model}} \times d_k}$, $W_i^V \in \mathbb{R}^{d_{\text{model}} \times d_v}$

$W^O \in \mathbb{R}^{h d_v \times d_{\text{model}}}$

通常 $h = 8$ 个头,$d_k = d_v = d_{\text{model}} / h$

直观理解:多个头关注不同的方面(语法、语义、指代等)

4.3.4 解码器层

每层包含三个子层:

  1. 带掩码的多头自注意力

    • 只能关注已生成的部分(不能看未来)
    • 掩码:将未来位置的注意力分数设为 $-\infty$
  2. 编码器-解码器注意力(Cross-Attention)

    • 查询来自解码器
    • 键和值来自编码器输出
    • 允许解码器关注源序列的不同部分
  3. 前馈神经网络

4.3.5 位置编码

问题:自注意力没有时序信息

位置编码:给每个位置添加固定或可学习的编码

正弦余弦位置编码: $$PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)$$ $$PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)$$

性质:

  • 每个维度对应不同的频率
  • 允许模型学习相对位置($PE_{pos+k}$ 可以表示为 $PE_{pos}$ 的线性函数)

4.3.6 输入嵌入

词嵌入:将词索引映射到 $d_{\text{model}}$ 维向量

$$x = \text{Embedding}(\text{token_id}) \cdot \sqrt{d_{\text{model}}}$$

缩放 $\sqrt{d_{\text{model}}}$ 是为了与位置编码保持一致

最终输入:$X = \text{Embedding} + \text{PositionalEncoding}$

4.4 Transformer变体

4.4.1 BERT(Bidirectional Encoder Representations from Transformers)

架构:仅Transformer编码器

预训练任务

  1. 掩码语言模型(MLM):随机掩盖15%的token,预测它们

    • 80%替换为[MASK]
    • 10%替换为随机词
    • 10%保持不变
  2. 下一句预测(NSP):给定句子对,预测第二个句子是否是第一个句子的下一句

应用

  • GLUE基准测试(句子对分类、相似度、推理等)
  • 文本分类、命名实体识别、问答

4.4.2 GPT(Generative Pre-trained Transformer)

架构:仅Transformer解码器(带掩码的自注意力)

预训练任务:标准语言模型(预测下一个词)

微调:在下游任务上继续训练(带标签数据)

GPT-3(2020)

  • 1750亿参数
  • 零样本/少样本学习能力强
  • 展示了大模型的强大能力

4.4.3 T5(Text-to-Text Transfer Transformer)

统一框架:所有NLP任务都转换为文本到文本问题

示例

  • 翻译:translate English to German: That is good.Das ist gut.
  • 摘要:summarize: ... → 摘要文本
  • 分类:cola sentence: ...acceptable/unacceptable

4.4.4 Vision Transformer(ViT)

思想:将Transformer应用于图像

方法

  1. 将图像分割为 $16 \times 16$ 的patches
  2. 将每个patch展平并线性映射为向量
  3. 添加可学习的[CLS] token
  4. 添加位置编码
  5. 输入Transformer编码器
  6. [CLS] token的输出作为图像表示

优势

  • 全局感受野(CNN是局部的)
  • 大规模预训练后表现优异

4.4.5 ChatGPT(InstructGPT/GPT-3.5)

三阶段训练

  1. 预训练:大规模语言模型预训练(自监督)

  2. 有监督微调(SFT)

    • 人类编写高质量的问答对
    • 微调模型使其遵循指令
  3. 人类反馈强化学习(RLHF)

    • 奖励模型(RM):训练模型预测人类对回答的偏好(排序)
    • 强化学习(PPO):优化策略(回答生成)以最大化奖励

成功因素

  • 大规模(数十亿参数)
  • 高质量人类数据(指令、对话)
  • 对齐人类意图

4.5 注意力机制的应用

4.5.1 自然语言处理

  • 机器翻译
  • 文本摘要
  • 问答系统
  • 情感分析
  • 命名实体识别

4.5.2 计算机视觉

  • 目标检测(DETR)
  • 图像分类
  • 视频理解

4.5.3 多模态

  • CLIP(图文对比学习)
  • DALL·E(文本生成图像)
  • 视频描述生成

第五章:深度学习的应用场景

5.1 计算机视觉

5.1.1 图像分类

应用

  • ImageNet挑战赛(1000类)
  • 医学影像诊断(肺结节检测、视网膜病变识别)
  • 电商商品分类

5.1.2 目标检测

应用

  • 自动驾驶(车辆、行人、交通标志检测)
  • 安防监控(异常行为检测)
  • 工业质检(缺陷检测)

5.1.3 语义分割

应用

  • 自动驾驶(道路、车道线分割)
  • 医学影像(器官、肿瘤分割)
  • 遥感图像(土地覆盖分类)

5.1.4 人脸识别

应用

  • 手机解锁(Face ID)
  • 支付验证
  • 安防监控

5.2 自然语言处理

5.2.1 文本生成

应用

  • 机器翻译
  • 文本摘要
  • 创意写作

5.2.2 问答系统

应用

  • 搜索引擎
  • 智能客服
  • 知识图谱问答

5.2.3 情感分析

应用

  • 社交媒体舆情分析
  • 产品评论分析
  • 客户满意度调查

5.2.4 命名实体识别

应用

  • 信息抽取(人名、地名、机构名)
  • 知识图谱构建
  • 文档结构化

5.3 语音处理

5.3.1 语音识别(ASR)

应用

  • 语音助手(Siri、小爱同学)
  • 会议记录
  • 实时字幕

技术

  • 声学模型:端到端架构(LAS、CTC、RNN-Transducer)
  • 语言模型:Transformer

5.3.2 语音合成(TTS)

应用

  • 导航语音
  • 有声书
  • 语音助手

技术

  • Tacotron(Seq2Seq + 注意力)
  • WaveNet(自回归波形生成)
  • VITS(变分推断)

5.3.3 说话人识别

应用

  • 声纹认证
  • 多说话人分离

5.4 推荐系统

5.4.1 协同过滤 + 深度学习

DeepFM:结合因子分解机和深度学习

DIN(Deep Interest Network):自适应关注历史兴趣

5.4.2 序列推荐

应用

  • 电商推荐(根据点击历史推荐)
  • 视频推荐(根据观看历史推荐)

技术:Transformer、BERT4Rec

5.5 游戏

5.5.1 AlphaGo(2016)

技术

  • 策略网络(Policy Network):预测下一步棋
  • 价值网络(Value Network):评估局面胜率
  • 蒙特卡洛树搜索(MCTS)

5.5.2 AlphaStar(星际争霸II)

技术

  • 多智能体强化学习
  • 历史自对弈
  • 延迟(Latency)处理

5.6 生物信息学

5.6.1 蛋白质结构预测(AlphaFold2)

技术

  • 注意力机制
  • 残差网络
  • 端到端学习

成就:预测精度接近实验方法(CASP14竞赛冠军)

5.6.2 基因序列分析

应用

  • 基因表达预测
  • 突变影响预测

第六章:深度学习的挑战与未来

6.1 当前挑战

6.1.1 数据饥渴

深度学习需要大量标注数据,但标注成本高。

解决方法

  • 自监督学习(从无标注数据学习)
  • 半监督学习
  • 数据增强
  • 合成数据

6.1.2 计算资源需求

大模型训练成本极高(GPT-3训练成本约460万美元)。

解决方法

  • 模型压缩(蒸馏、量化、剪枝)
  • 高效架构(MobileNet、EfficientNet)
  • 分布式训练

6.1.3 可解释性

深度学习是黑箱,难以解释决策过程。

解决方法

  • 注意力可视化
  • LIME、SHAP(局部解释)
  • 归因方法(Integrated Gradients)
  • 可解释架构(ProtoPNet)

6.1.4 泛化能力

在训练分布上表现好,但分布外(OOD)泛化差。

解决方法

  • 数据多样性
  • 域自适应
  • 元学习
  • 因果推断

6.1.5 安全性

对抗攻击(Adversarial Attack):微小扰动导致模型误判。

示例:给熊猫图片添加不可见的噪声,模型识别为长臂猿

解决方法

  • 对抗训练
  • 鲁棒优化
  • 检测对抗样本

6.1.6 公平性与偏见

模型可能学习并放大数据中的偏见(种族、性别等)。

解决方法

  • 公平性约束优化
  • 数据去偏见
  • 模型审计

6.2 未来发展趋势

6.2.1 大模型(Foundation Models)

趋势:预训练大模型在多个任务上微调

代表性工作

  • GPT系列、BERT系列(语言)
  • CLIP、DALL·E(视觉)
  • Flamingo、BLIP(多模态)

挑战

  • 部署成本高
  • 幻觉问题(Hallucination)
  • 对齐人类价值观

6.2.2 多模态学习

目标:融合文本、图像、视频、音频等多模态信息

应用

  • 图文检索(CLIP)
  • 视频理解
  • 视觉问答(VQA)
  • 图文生成(DALL·E、Stable Diffusion)

6.2.3 自监督学习

思想:从无标注数据中学习表示,无需人工标签

方法

  • 对比学习(SimCLR、MoCo)
  • 掩码建模(MAE、BERT-style)
  • 自回归建模(GPT-style)

优势

  • 利用大规模无标注数据
  • 学习通用表示,下游任务微调效果好

6.2.4 小样本与零样本学习

目标:用极少样本甚至无样本学习新任务

方法

  • 元学习(Learning to Learn)
  • 原型网络(Prototypical Networks)
  • 度量学习
  • 大模型的零样本/少样本能力

6.2.5 神经符号AI

目标:结合深度学习的感知能力和符号AI的推理能力

方法

  • 神经网络 + 知识图谱
  • 程序生成/执行
  • 逻辑约束学习

6.2.6 神经形态计算

目标:模拟生物神经元的计算方式,功耗更低

技术

  • 脉冲神经网络(SNN)
  • 神经形态芯片(Intel Loihi、IBM TrueNorth)

6.2.7 生成式AI

趋势:从判别式模型转向生成式模型

应用

  • 文本生成(GPT、ChatGPT)
  • 图像生成(Stable Diffusion、Midjourney)
  • 视频生成(Sora、Runway)
  • 音乐生成(Suno、MusicLM)

挑战

  • 生成质量与多样性权衡
  • 伦理与版权问题
  • 深度伪造(Deepfake)

6.2.8 具身智能

目标:AI与物理世界交互(机器人、自动驾驶)

方法

  • 强化学习
  • 模拟到真实迁移(Sim2Real)
  • 世界模型(World Model)

6.2.9 AI for Science

目标:用AI加速科学发现

应用

  • AlphaFold(蛋白质结构预测)
  • 材料设计
  • 天气预报
  • 数学研究(Lean、Coq + AI)

6.2.10 可信赖AI(Trustworthy AI)

目标:AI安全、可靠、可控

方向

  • 可解释性(XAI)
  • 鲁棒性(对抗攻击防御)
  • 公平性(消除偏见)
  • 隐私保护(联邦学习、差分隐私)
  • 对齐(Alignment):确保AI目标与人类价值观一致

6.3 结语

深度学习在过去十年取得了惊人的成就,从AlexNet到GPT-4,从图像分类到通用对话AI。但我们也必须清醒地认识到当前的局限性:数据饥渴、计算昂贵、黑箱决策、安全问题。

未来的发展方向不是简单地堆叠参数,而是:

  1. 更高效的学习:自监督、小样本、终身学习
  2. 更广泛的应用:多模态、具身、科学发现
  3. 更可靠的技术:可解释、鲁棒、对齐

正如深度学习的先驱Hinton所说:“The question of whether computers can think is no more interesting than the question of whether submarines can swim."(计算机能否思考的问题,就像潜水艇能否游泳的问题一样无趣。)

重要的不是模仿人脑,而是构建真正有用的智能系统。深度学习正在朝着这个方向前进。

参考文献

  1. LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. Nature, 521(7553), 436-444.
  2. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
  3. Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet classification with deep convolutional neural networks. NeurIPS.
  4. Simonyan, K., & Zisserman, A. (2014). Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556.
  5. He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. CVPR.
  6. Szegedy, C., et al. (2015). Going deeper with convolutions. CVPR.
  7. Vaswani, A., et al. (2017). Attention is all you need. NeurIPS.
  8. Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2019). BERT: Pre-training of deep bidirectional transformers for language understanding. NAACL.
  9. Brown, T., et al. (2020). Language models are few-shot learners. NeurIPS.
  10. Hochreiter, S., & Schmidhuber, J. (1997). Long short-term memory. Neural Computation, 9(8), 1735-1780.
  11. Jumper, J., et al. (2021). Highly accurate protein structure prediction with AlphaFold. Nature, 596(7873), 583-589.
  12. OpenAI. (2023). GPT-4 Technical Report. arXiv preprint arXiv:2303.08774.