👻 5. 深度学习的主要架构

·18 min read·3447

主要用于理解三大核心深度学习架构:CNN 擅长空间数据,RNN 擅长序列数据,Transformer 则是当今大模型的基石。


卷积神经网络(CNN)

主要用于图像处理和计算机视觉任务,能够有效捕捉图像的空间特征。

直觉类比:你拿着一块小放大镜在整张大图上一点点移动。在某个地方看到"圆圆的边缘";在另一个地方看到"尖尖的三角形"。大脑把这些局部信息组合在一起——"圆圆的边缘加上尖尖的耳朵,这一定是一只猫!"

如图所示,CNN 中新增了Convolution 层Pooling 层。CNN 的层的连接顺序是 Convolution → ReLU → (Pooling)(Pooling 层有时会被省略)。这可以理解为之前的 Affine → ReLU 连接被换成了 Convolution → ReLU → (Pooling) 连接。

1、卷积层(Convolution)

一、为什么需要卷积?

先想象一张 224×224 的彩色图片,展开后有 224×224×3 = 150,528 个像素。如果用全连接层处理,每个神经元要连接所有像素,参数量立刻爆炸。更糟的是,全连接层完全忽视"像素之间的空间关系"。

卷积操作用两个核心思想优雅地解决了这两个问题:局部感知权重共享

二、卷积核是什么?

卷积核(kernel / filter)本质上是一个小的数字矩阵,常见尺寸是 3×3 或 5×5。这个矩阵里的数字就是网络要学习的权重

一个 3×3 卷积核包含 9 个权重。通过训练,这 9 个数字会自动调整成某种"检测器"——有的学会检测竖向边缘,有的检测水平线条,有的对颜色突变敏感。

三、卷积操作的具体过程

以 5×5 输入图像和 3×3 卷积核为例:

步骤一:对准位置 将 3×3 卷积核放到输入图像的左上角,完全覆盖一个 3×3 的区域。

步骤二:逐元素相乘再求和(点积) 将卷积核的每个权重,与对应位置的像素值相乘,然后把 9 个乘积全部加起来,得到一个数字。

输入区域       卷积核          乘积求和
[1, 2, 3]    [-1,-1,-1]
[0, 1, 2]  × [-1, 8,-1]  →  (-1+...) = 某个数
[1, 3, 1]    [-1,-1,-1]

步骤三:滑动(Stride) 卷积核向右移动 1 格(默认步长 stride=1),重复步骤二。扫完一行后换行继续,直到遍历整张图像。

步骤四:形成特征图(Feature Map) 所有位置的点积结果拼合在一起,形成一张新的图——特征图

输出尺寸 = (输入尺寸 - 卷积核尺寸) / stride + 1
         = (5 - 3) / 1 + 1 = 3

四、不同卷积核提取不同特征

卷积核类型权重构成提取效果
边缘检测中心为8,周围为-1凸显像素突变处(边缘、轮廓)
锐化中心为5,上下左右为-1加强细节,使图像更清晰
模糊(均值)全部为1对周围均值,平滑噪点
垂直 Sobel左列-1,右列+1只检测竖向边缘

一个卷积层通常同时使用数十乃至数百个卷积核,每个核产生一张特征图——这就是为什么卷积层的输出会有多个"通道"。

五、两个核心特性的本质

局部感知:每次计算只看 3×3 的小区域,而不是全部像素。这符合图像的自然规律——边缘、纹理、颜色块都是"局部现象"。

参数共享:同一个 3×3 卷积核在整张图上滑动时,权重始终是同一组。这意味着无论猫的耳朵在图片哪个位置,同一个"边缘检测器"都能找到它。这一特性带来了平移等变性,大幅减少了参数量。

六、填充(Padding)

默认情况下,卷积后特征图会缩小。为了保持尺寸,可以在图像边缘填充 0(零填充),这样 5×5 输入配 3×3 卷积核输出仍是 5×5。在深层网络中很常用,防止特征图越来越小而丢失边缘信息。


2、池化层(Pooling)

一、池化是什么?

经过卷积操作后,我们得到了特征图,但这些特征图的尺寸仍然很大。池化层的作用就是对特征图进行"压缩",在保留核心信息的前提下减小数据的空间尺寸。

类比:你拍了一张 4000×3000 的高清照片,发微信时会自动压缩成小图——核心内容还在,但文件小了很多。

二、池化的具体过程

以 2×2 的池化窗口、步长 stride=2 为例:

输入特征图 (4×4)          Max Pooling 输出 (2×2)
[1, 3, 2, 4]          
[5, 6, 7, 8]    →    [6,  8]
[3, 2, 1, 0]          [3,  4]
[1, 2, 3, 4]          

每个 2×2 窗口取最大值,输出尺寸变为原来的一半。

三、两种主流池化方式

池化类型操作方式特点
最大池化(Max Pooling)取窗口内的最大值保留最显著的特征(如边缘、轮廓),实践中最常用
平均池化(Average Pooling)取窗口内的平均值保留整体信息,较平滑,常用于网络最后一层(Global Average Pooling)

四、池化层的三大作用

  1. 降低计算量:4×4 压缩到 2×2,参与后续计算的数据量直接减少 75%
  2. 增强鲁棒性:图像中的物体即使发生小幅平移或形变,池化后的特征依然相似
  3. 扩大感受野:池化后的每个像素实际上对应原图更大的区域,让后续层能"看到"更大范围的信息

现代网络的变化:ResNet、EfficientNet 等越来越倾向于用 stride=2 的卷积来代替传统池化层,因为 stride 卷积带有可学习的参数,能在下采样的同时保留更多有用信息。


循环神经网络(RNN)

适合处理序列数据,如文本、时间序列等,能够记忆之前的信息。

直觉类比:你在读一本小说,你不可能读到第 10 章时忘记第 1 章的主角是谁。每读一页,你把新内容和脑子里已有的记忆"融合"在一起,理解随着阅读不断更新。RNN 就是这样一个"边读边记"的网络。

1、为什么需要 RNN?

CNN 擅长处理固定尺寸的空间数据(图像),但现实中大量数据是"序列形式"的——一句话的单词有先后顺序,股票价格有时间先后,音频信号有采样点先后。

全连接网络和 CNN 都把输入当作"独立的一块",没有"记忆"的概念——处理第 5 个单词时,完全不记得第 1 个单词是什么。RNN 的核心创新就是引入了隐藏状态(Hidden State),让网络能"记住"之前看过的内容。

2、RNN 的核心结构

RNN 的关键公式只有一行:

ht=tanh(Whht1+Wxxt+b)h_t = \tanh(W_h \cdot h_{t-1} + W_x \cdot x_t + b)

其中:

  • xtx_t:当前时间步的输入(比如当前单词)
  • ht1h_{t-1}:上一步的隐藏状态("记忆")
  • hth_t:更新后的隐藏状态
  • WhW_hWxW_x:可学习的权重矩阵

简单来说:新记忆 = f(旧记忆 + 新输入)

3、RNN 的致命缺陷:梯度消失与梯度爆炸

理论上 RNN 可以记住任意长度的序列,但实践中它有严重的"健忘症"。当序列很长时(100个单词以上),反向传播时梯度会随着层数不断相乘,导致:

  • 梯度消失:梯度越乘越小,趋近于 0,网络"记不住"早期的信息
  • 梯度爆炸:梯度越乘越大,参数更新剧烈摆动,训练崩溃

这就是为什么后来产生了 LSTMGRU 这两个重要的变体。

4、LSTM 与 GRU:RNN 的进化版

LSTM(Long Short-Term Memory,长短期记忆网络)

LSTM 的核心创新是引入了三个"门"机制:

门类型作用类比
遗忘门(Forget Gate)决定记忆中哪些信息该丢弃"这个人物已经死了,不用再记了"
输入门(Input Gate)决定新信息中哪些值得记住"新出场的反派角色,要重点关注"
输出门(Output Gate)决定当前步输出什么信息"现在问我主角的名字,我只输出名字相关的记忆"

这三个门都是通过 Sigmoid 函数(0~1)控制的,0 表示"完全关闭",1 表示"完全打开"。通过这种机制,LSTM 能够选择性地记忆和遗忘,解决了普通 RNN 的长程依赖问题。

GRU(Gated Recurrent Unit,门控循环单元)

GRU 是 LSTM 的简化版,把三个门简化为两个:重置门(Reset Gate)更新门(Update Gate)。参数更少,训练更快,效果在很多任务上与 LSTM 相当。

5、RNN 家族的应用场景

应用输入→输出模式举例
语言模型多对多 (Many-to-Many)给定前文预测下一个单词
情感分析多对一 (Many-to-One)一段影评 → 正面/负面
机器翻译多对多 (Encoder-Decoder)英文句子 → 中文句子
时间序列预测多对一历史股价 → 预测明天的价格

Transformer

基于注意力机制的架构,在自然语言处理领域取得了突破性进展,是 GPT 和 BERT 等模型的基础。

直觉类比:你是一个考试中的学生,面前有一张充满信息的试卷:

  1. 全局审视:RNN 是从左到右一个字一个字读,而 Transformer 是一眼就看到整张试卷
  2. 重点标记:你会用荧光笔把重要的部分标记出来,这就是"注意力"
  3. 关联线索:你还会把第1题和第5题的关联信息连接起来,不管它们相距多远

1、为什么需要 Transformer?

尽管 LSTM/GRU 缓解了 RNN 的长程依赖问题,但 RNN 家族有一个天生的硬伤:必须按顺序处理。第 5 个单词的计算必须等第 4 个完成——无法并行化,训练速度很慢。

2017 年 Google 的论文《Attention Is All You Need》提出了 Transformer,完全抛弃了循环结构,纯靠注意力机制处理序列,实现了并行计算,训练效率大幅提升。

2、核心机制:自注意力(Self-Attention)

自注意力的核心思想是:对于序列中的每个元素,计算它与序列中所有其他元素的"相关性得分",然后用这个得分来加权汇总信息。

步骤一:生成 Q、K、V 三个向量

每个输入单词分别乘以三个不同的权重矩阵,得到:

  • Query(查询):"我在找什么信息?"
  • Key(键):"我能提供什么信息?"
  • Value(值):"我实际携带的信息内容"

步骤二:计算注意力得分

用 Q 和每个 K 做点积,得分越高说明两个单词越相关。然后除以 dk\sqrt{d_k} 进行缩放,再通过 Softmax 归一化:

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

步骤三:加权汇总

用注意力得分对 V 加权汇总,得到每个位置"融合了全局信息"的新表示。

3、多头注意力(Multi-Head Attention)

单一的注意力只能关注一种类型的关系。多头注意力把 Q、K、V 分成多个"头",每个头独立计算注意力,然后拼接在一起。

类比:一个头可能关注语法关系("猫"和"吃"的主谓关系),另一个头可能关注语义关系("猫"和"动物"的上下位关系)。多个角度同时分析,理解就更全面。

4、Transformer 的整体架构

完整的 Transformer 由 编码器(Encoder)解码器(Decoder) 两部分组成:

组件作用关键操作
编码器 (Encoder)理解输入序列,提取全局特征自注意力 + 前馈网络 + 残差连接 + 层归一化
解码器 (Decoder)基于编码器输出生成目标序列掩码自注意力 + 交叉注意力 + 前馈网络

每个编码器/解码器块可以堆叠多层(原始论文用了 6 层),层数越多,模型容量越大。

5、位置编码(Positional Encoding)

Transformer 没有循环结构,所以它天然不知道单词的顺序。为了解决这个问题,需要给每个单词的嵌入向量加上一个"位置信号"——这就是位置编码。

原始论文使用正弦/余弦函数来生成位置编码,现代实践中也常用可学习的位置嵌入(Learned Positional Embedding)。

6、Transformer 的重大影响:衍生模型

Transformer 架构催生了当今最强大的 AI 模型:

模型使用的部分代表应用
BERT仅 Encoder文本分类、问答、命名实体识别
GPT 系列仅 Decoder文本生成、对话、代码生成
T5 / BARTEncoder + Decoder翻译、摘要、文本改写
Vision Transformer (ViT)仅 Encoder(应用于图像)图像分类,证明 Transformer 不只能做 NLP

Transformer 是现代深度学习的基石架构,从 NLP 到 CV 到多模态,几乎所有前沿模型都基于它的变体。


三大架构对比

特性CNNRNN/LSTMTransformer
擅长数据类型空间数据(图像)序列数据(文本、时间序列)序列数据(文本、图像)
并行化能力低(顺序依赖)
长程依赖有限(感受野限制)困难(梯度消失)优秀(全局注意力)
参数效率高(参数共享)低(参数量大)
代表应用图像识别、目标检测早期 NLP、时间序列LLM、多模态模型