从 MLP 到 Transformer:主流的神经网络架构类型、结构特点、工作原理及其适用场景。
神经网络是深度学习的基础,其核心思想是通过多层非线性变换来学习数据的表示和模式。自 1980 年代以来,研究者根据不同的任务需求和数据特性,发展出了多种神经网络架构。每一种架构都针对特定类型的数据结构或计算需求进行了专门设计:多层感知机(MLP)适合通用特征学习,卷积神经网络(CNN)擅长度量空间中的局部模式识别,循环神经网络(RNN)擅长序列建模,而 Transformer 则通过自注意力机制解决了长距离依赖问题。
本文系统梳理了主流神经网络架构的设计思想、数学原理、典型结构以及应用场景,并辅以具体的数据对比和实例说明。
多层感知机是最早的神经网络架构,也是所有后续架构的基础构件。
一个 L 层的 MLP 由输入层、L−2 个隐藏层和输出层组成。每层包含若干神经元,相邻层之间全连接。第 l 层的输出为:
h(l)=σ(l)(W(l)h(l−1)+b(l))
其中 W(l)∈Rdl×dl−1 为权重矩阵,b(l)∈Rdl 为偏置向量,σ(l) 为逐元素激活函数。
考虑一个三分类问题,输入维度为 4,隐藏层为 5 个神经元,输出为 3 类:
- 输入 x=[0.5,−0.2,0.8,0.1]
- 隐藏层权重 W(1)∈R5×4,偏置 b(1)∈R5
- 计算隐藏层激活:h=ReLU(W(1)x+b(1))
- 假设 W(1)x+b(1)=[0.3,−0.1,0.7,0.0,0.5],经过 ReLU 后得到 [0.3,0.0,0.7,0.0,0.5]
- 输出层 o=W(2)h+b(2)=[1.2,−0.5,0.8]
- 经 Softmax 归一化:Softmax([1.2,−0.5,0.8])≈[0.55,0.10,0.35]
预测结果即为第 0 类(概率 0.55)。
MLP 缺乏对空间或时序结构的归纳偏置。对于图像分类,以 CIFAR-10 为例,一个 3 层 MLP(1024→512→256→10)的测试准确率约为 55%,而同等参数量的 CNN 可达到 85% 以上,因为 MLP 无法利用图像的空间局部性。
| 网络类型 |
参数量 |
CIFAR-10 准确率 |
训练时间(单 epoch) |
| MLP (1024-512-256-10) |
~1.4M |
55.2% |
2.1s |
| CNN (3 conv layers) |
~1.5M |
86.7% |
3.8s |
| ResNet-20 |
~0.27M |
91.3% |
5.2s |
CNN 通过卷积操作引入局部连接和权重共享,极大减少了参数数量,特别适合处理具有网格结构的数据(如图像)。
二维卷积操作定义为:
(I∗K)(i,j)=m=1∑Mn=1∑NI(i+m,j+n)⋅K(m,n)
其中 I 为输入图像,K∈RM×N 为卷积核(滤波器)。
以输入 224×224×3 的图像为例:
- 全连接层:若第一个隐藏层有 1024 个神经元,则参数量为 224×224×3×1024≈154M,不可接受
- 卷积层:使用 3×3 卷积核、64 个通道,参数量仅为 3×3×3×64=1,728,约为全连接的万分之一
CNN 架构的发展主要体现在深度和连接方式上:
| 架构 |
提出年份 |
深度(层数) |
参数量 |
ImageNet Top-1 错误率 |
| AlexNet |
2012 |
8 |
60M |
43.5% |
| VGG-16 |
2014 |
16 |
138M |
28.5% |
| GoogLeNet (Inception v1) |
2014 |
22 |
6.8M |
26.7% |
| ResNet-50 |
2015 |
50 |
25.6M |
22.9% |
| EfficientNet-B7 |
2019 |
813 |
66M |
19.0% |
池化层(Pooling)是 CNN 的重要组成,其作用是下采样和增强平移不变性。以最大池化为例,在一个 2×2 窗口内取最大值:
MaxPool(I)i,j=m=0,1maxn=0,1maxI(2i+m,2j+n)
池化操作的步长为 2,将空间尺寸减半。例如 64×64 的特征图池化后变为 32×32,参数量减少 75%。
RNN 通过隐藏状态传递来处理变长序列数据,适用于时间序列、自然语言等任务。
标准 RNN 的隐藏状态更新公式为:
ht=tanh(Whhht−1+Wxhxt+bh)
yt=Whyht+by
其中 xt 为 t 时刻输入,ht 为隐藏状态,Whh,Wxh,Why 为权重矩阵。
考虑一个长度为 T 的序列,损失对 Whh 的梯度包含连乘项:
∂Whh∂L=t=1∑Tk=t+1∏T∂hk−1∂hk⋅(其余项)
其中每个 ∂hk/∂hk−1=diag(tanh′(⋅))⋅Whh。若 Whh 的最大奇异值小于 1,梯度将指数级衰减至 0。具体而言,当 ∥Whh∥2<1 时,经过 20 步传播后梯度衰减到初始值的 10−9 量级,模型完全无法学习长距离依赖。
以语言建模为例,句子 "The cat that chased the mouse was tired" 中,动词 "was" 必须与主语 "cat" 保持单数一致。RNN 在传播 5 步后,隐状态中 "cat" 的信号几乎消失,导致输出混淆。
| 序列位置 |
输入词 |
隐藏状态中"cat"的梯度 |
预测结果 |
| 1 |
The |
- |
- |
| 2 |
cat |
1.0 |
- |
| 3 |
that |
0.25 |
- |
| 4 |
chased |
0.06 |
- |
| 5 |
the |
0.015 |
- |
| 6 |
mouse |
0.004 |
- |
| 7 |
was/were |
< 0.001 |
倾向 "were"(错误) |
LSTM 通过遗忘门(forget gate)和输入门(input gate)控制信息流:
ft=σ(Wf[ht−1,xt]+bf)
it=σ(Wi[ht−1,xt]+bi)
c~t=tanh(Wc[ht−1,xt]+bc)
ct=ft⊙ct−1+it⊙c~t
遗忘门 ft 的值在 0 到 1 之间,决定了上一个记忆单元 ct−1 的保留比例。当 ft≈1 时,信息可以无损传递数百步。
Transformer 完全摒弃了循环结构,仅依赖自注意力机制(Self-Attention)实现序列建模,解决了 RNN 无法并行计算的问题。
自注意力的核心计算为:
Attention(Q,K,V)=Softmax(dkQKT)V
其中 Q,K,V 分别由输入经线性变换得到,dk 为查询向量的维度。
数值示例:假设序列长度为 4,每个词的 embedding 维度为 3:
- 输入序列:["I", "love", "neural", "networks"]
- 假设 QKT 计算出的未归一化注意力分数矩阵为:
2.00.5−0.30.10.53.00.2−0.1−0.30.22.50.80.1−0.10.81.5
- 除以 dk=3≈1.73,应用 Softmax 后得到注意力权重:
0.520.200.110.170.250.620.150.130.110.100.480.320.120.080.260.38
可见每个位置的注意力权重分布不同——第 2 个词("love")有 62% 的注意力集中在自身,而第 3 个词("neural")分别关注自身(48%)和第 4 个词(38%)。
多头注意力将 Q,K,V 投影到 h 个子空间,并行计算注意力后拼接:
MultiHead(Q,K,V)=Concat(head1,…,headh)WO
其中 headi=Attention(QWiQ,KWiK,VWiV)。
例如,BERT-base 使用 12 头注意力,每头维度为 64。这意味着模型可以同时捕捉语法结构、语义角色、指代关系等不同层面的信息。
由于自注意力不具备顺序感知能力,Transformer 通过位置编码注入位置信息:
PE(pos,2i)=sin(100002i/dmodelpos)
PE(pos,2i+1)=cos(100002i/dmodelpos)
其中 pos 为位置索引,i 为维度索引。这种设计使得模型可以学习到相对位置关系,因为 PE(pos+k) 可以表示为 PE(pos) 的线性函数。
| 模型 |
参数规模 |
层数 |
隐藏维度 |
注意力头数 |
训练数据量 |
关键创新 |
| Transformer-base |
65M |
6 |
512 |
8 |
4.5M 句子对 |
提出自注意力架构 |
| BERT-base |
110M |
12 |
768 |
12 |
3.3B 词 |
双向预训练 + MLM |
| GPT-3 |
175B |
96 |
12288 |
96 |
570GB 文本 |
大规模语言模型 |
| LLaMA-2 |
70B |
80 |
8192 |
64 |
2T tokens |
RMSNorm + RoPE |
ResNet 通过引入跳跃连接(Skip Connection)解决了深层网络的退化问题。
残差块的核心公式为:
y=F(x,{Wi})+x
其中 F 为残差映射(通常包含 2-3 个卷积层),x 为输入恒等映射。当 F 为零时,残差块退化为恒等函数,这使得网络深度可以任意增加而不退化。
在反向传播中,设损失为 L,第 l 个残差块的输出为 xl+1=xl+F(xl,Wl),则:
∂xl∂L=∂xL∂L(1+∂xl∂i=l∑L−1F(xi,Wi))
梯度可以被拆分为两项之和,其中第一项 ∂L/∂xL 通过恒等路径直接回传,不受层数影响。这意味着即使在 100 层的网络中,梯度也能直接传播到浅层。
| 网络 |
层数 |
ImageNet Top-1 错误率 |
GPU 训练时间 |
| VGG-16 |
16 |
28.5% |
~4 天 |
| VGG-19 |
19 |
28.7% |
~5 天 |
| ResNet-34 |
34 |
26.7% |
~3 天 |
| ResNet-50 |
50 |
22.9% |
~4 天 |
| ResNet-152 |
152 |
21.4% |
~7 天 |
注意 VGG 从 16 层加深到 19 层后精度反而下降(28.5% → 28.7%),而 ResNet 从 34 层加深到 152 层后精度持续提升(26.7% → 21.4%),证明了残差连接的有效性。
在实际项目中,选择合适的架构需要考虑数据类型、任务特性和资源约束:
| 数据类型 |
推荐架构 |
核心理由 |
典型任务 |
| 图像/视频 |
CNN 或 ViT |
空间局部性 + 平移不变性 |
分类、检测、分割 |
| 文本/序列 |
Transformer |
并行计算 + 长距离依赖 |
翻译、摘要、问答 |
| 时间序列 |
LSTM/TCN/Transformer |
时序因果性 + 多尺度模式 |
预测、异常检测 |
| 图数据 |
GNN |
非欧几里得结构 |
分子预测、推荐 |
| 多模态 |
Transformer 变体 |
统一注意力机制 |
VQA、图文生成 |
工程实践原则:
- 优先选择有预训练权重的架构,如 ResNet、BERT、ViT,通常可以降低 50-80% 的训练成本
- 使用消融实验验证每个模块的贡献,而不是盲目堆叠
- 对于推理时延敏感的场景(如移动端),优先选择 EfficientNet 或 MobileNet 等轻量架构
- LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. Nature, 521(7553), 436-444.
- He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. CVPR.
- Vaswani, A., et al. (2017). Attention is all you need. NeurIPS.
- Hochreiter, S., & Schmidhuber, J. (1997). Long short-term memory. Neural Computation, 9(8), 1735-1780.
- Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet classification with deep convolutional neural networks. NeurIPS.
- Devlin, J., et al. (2019). BERT: Pre-training of deep bidirectional transformers for language understanding. NAACL.
- Tan, M., & Le, Q. V. (2019). EfficientNet: Rethinking model scaling for convolutional neural networks. ICML.
- Brown, T., et al. (2020). Language models are few-shot learners. NeurIPS.