模型
Conformer(Convolution-augmented Transformer)是一种结合了卷积神经网络(CNN)和Transformer的深度学习模型,旨在提升语音识别等任务的性能。它的设计目标是结合卷积层的局部特征提取能力和Transformer的长程依赖建模能力,从而有效地处理时序数据,尤其适用于语音和音频信号处理。
Conformer模型的主要特点:
-
卷积层与Transformer结合:
- Conformer模型在Transformer的基础上引入了卷积层,利用卷积操作在时间轴上提取局部特征。这有助于捕捉输入信号中局部的模式和结构,提升对音频数据的处理能力。
-
改进的Self-Attention机制:
- 在Transformer中,Self-Attention机制用来捕捉序列中各个元素之间的关系。Conformer通过改进Self-Attention模块,增强了其对局部信息的捕捉能力,尤其是在处理连续的音频特征时。
-
基于位置的卷积:
- Conformer在网络中加入了位置感知的卷积层,这使得卷积操作能更加有效地处理时序数据,尤其是对于音频的时间和频率特征的建模。
-
多头卷积Self-Attention(MHSA):
- 结合多头自注意力(Multi-Head Self-Attention)和卷积操作,Conformer在捕捉全局依赖关系的同时也能提取局部细节,从而使模型在复杂的时序数据处理上更加精确。
-
增强的表示能力:
- 通过将卷积层与Transformer相结合,Conformer在语音识别、机器翻译等任务中表现出了比传统Transformer模型更强的表示能力,尤其是在噪声和变形较为复杂的输入数据中。
典型应用:
Conformer主要应用于以下几个领域:
- 语音识别: 作为语音识别模型,Conformer能够有效处理复杂的音频信号,并在噪声干扰较大的环境中表现出色。
- 自动语音识别(ASR): 在ASR任务中,Conformer通常用作端到端模型的核心部分,替代传统的基于卷积神经网络和长短时记忆网络(LSTM)的方法。
- 音频分类和理解: Conformer在音频处理领域,特别是在音频分类、声学事件检测等任务中也有较好的表现。
模型结构

🔧 1. SpecAug(Spectrogram Augmentation)
-
作用:数据增强
-
怎么做的:
-
在训练阶段,对输入的谱图进行扰动,比如:
- 时间遮蔽(Time Masking):随机遮住某些时间帧;
- 频率遮蔽(Frequency Masking):随机遮住某些频率区间。
-
-
好处: 提高模型的泛化能力,让模型不容易过拟合在训练集的具体频谱形状上。
🌀 2. Convolution Subsampling(卷积下采样)
-
作用:降维 + 提取局部特征
-
怎么做的:
- 使用 2 层卷积层(通常是 2D 卷积) + 步长(stride)>1,来压缩原始输入的时间维度(比如压成原来的 1/4)。
- 同时保留主要的频谱结构特征。
-
好处:
- 减少时间步数,降低计算量。
- 引入了 局部感知能力,卷积天然能抓局部的变化(比如音节、语调等变化)。
📐 3. Linear(线性变换)
-
作用:维度变换
-
怎么做的:
- 用一个全连接层把卷积输出的 feature map 转换成 Conformer 编码器所要求的维度(比如变成
d_model = 144
或256
)。
- 用一个全连接层把卷积输出的 feature map 转换成 Conformer 编码器所要求的维度(比如变成
-
好处: 保证数据可以正确输入到接下来的编码器模块中。
🌧️ 4. Dropout
-
作用:防止过拟合
-
怎么做的:
- 对线性层输出随机丢弃一些神经元(设为 0),训练时起到正则化作用。
-
好处:
- 增加模型鲁棒性,提升泛化能力。
Conformer Blocks

1. 💡前馈神经网络(FFN x2)
-
类似于 Transformer 中的 Feed-Forward Layer,但 在 Conformer 中被分成了两段,分别放在前后,两次使用。
-
每个 FFN 一般是:
textFFN(x) = x + 0.5 * Dropout(Linear(ReLU(Linear(x))))
-
注意乘了一个 0.5 :表示两段 FFN 加起来才是一个完整 FFN,目的是 平衡信息流,避免 FFN 占据过多表示空间。
-
FFN 可以用来表达复杂非线性变换。
2. 🧠多头自注意力(Multi-Head Self-Attention,MHSA)
- 捕捉长距离依赖关系,建模全局信息。
- 和 Transformer 一样,它通过多个注意力头对序列进行加权建模。
- 在 Conformer 中可以选择加入 相对位置编码(relative positional encoding),让注意力机制更适应语音场景。
3. 🌊卷积模块(Convolution Module)
-
是 Conformer 的关键创新!补上 Transformer 缺失的"局部建模"能力。
-
通常包括以下结构:

-
本质是一个 轻量化的CNN模块,它负责提取局部的时间模式,比如音节、短语节奏。
-
LayerNorm
: 对每个时间步的所有通道做归一化处理, 稳定训练过程,防止梯度爆炸或消失。LayerNorm 是对特征维归一化,不依赖 batch 的大小,更适合序列模型。 -
Pointwise Conv1D
: 其实是1x1
的卷积操作。把输入维度从d_model
扩张成2 × d_model
,为 GLU 准备好两个通道:- 一个做门控门(gate)
- 一个做激活值(activation)
-
GLU(Gated Linear Unit)
:-
结构:
GLU(a, b) = a ⊗ sigmoid(b)
其中
a
和b
是前一步 Pointwise Conv 的两个输出部分。 -
作用: 类似门控机制,让模型学会"决定哪些信息该留下,哪些信息要抑制"。
-
好处: 提升非线性建模能力,提高上下文选择性。
-
-
Depthwise Conv1D
: 普通卷积会在通道间进行卷积,而 Depthwise 卷积是每个通道 独立 卷积。 -
BatchNorm
: 加速训练,稳定激活值分布 -
Swish
: swish(x) = x * sigmoid(x) -
Pointwise Conv1D
: 把前面扩展的2 × d_model
降回d_model
。 -
Dropout
: - 防止过拟合。在训练时随机屏蔽一部分神经元,提升模型泛化能力。
4. 🧂Layer Normalization
- 在模块最后应用 LayerNorm。
- 每个子模块之间也都有 LayerNorm,用于稳定训练过程、加速收敛。
5. 🔁残差连接(Residual Connections)
-
每个子模块的输入会被加入到输出中(加法残差连接):
inioutput = x + Module(x)
-
残差结构让模型更容易训练,而且可以堆叠很多层。