基于混合CTC/Attention的视听语音识别模型:AUDIO-VISUAL SPEECH RECOGNITION WITH A HYBRID CTC/ATTENTION ARCHITECTURE
本文提出了一种基于编码器-解码器框架的视听语音识别混合模型。编码器采用早期融合策略,通过双向LSTM联合处理音频和视频特征。解码器创新性地结合了CTC和Attention机制,实现多任务联合训练。实验表明,该模型在视听语音识别任务中表现优异,早期融合策略显著优于晚期融合。此外,引入外部字符级RNN语言模型进一步提升了识别准确率。这种混合架构充分利用了CTC的对齐鲁棒性、Attention的序列建模
文章目录
AUDIO-VISUAL SPEECH RECOGNITION WITH A HYBRID CTC/ATTENTION ARCHITECTURE
本文的模型基于一个编码器-解码器框架。编码器负责将原始的音频和视频信号转换为高级的隐藏特征 H,而解码器则负责基于这些特征生成对应的文本 Y。
【1】编码器
编码器的核心目标,是将原始的音频和视频输入序列 X = (x_1, x_2, ..., x_T),转换为一系列高级的、蕴含上下文信息的逐帧隐藏状态 H = (h_1, h_2, ..., h_T),以供解码器使用。
- 对于视觉输入,首先通过一个3D卷积层来捕捉嘴部区域的短时时空动态(论文中卷积核时间维度为5帧),随后利用一个18层的ResNet从各帧中提取高级的空间特征。
- 对于音频输入,则首先被转换为83维的声学特征(包括Log-Mel频谱、音高等)。
- 这些前端特征之后被送入核心编码网络——双向LSTM,以学习整个序列的长程时序依赖关系。
本文的核心贡献之一,在于深入探索并对比了两种在多模态(音频和视频)序列中融合信息的基本策略:
- 早期融合:如图1a所示,构建了一个专用的融合编码器。音频和视觉特征首先分别通过两个独立的2层BLSTM进行模态特定的时序建模,然后将它们的输出序列进行拼接,再共同送入一个共享的2层BLSTM中进行跨模态的联合编码。融合发生在编码过程的中间阶段。
- 晚期融合:如图1b所示,音频和视觉流则完全独立,各自通过一个完整的4层BLSTM编码器以及独立的解码器进行推理。融合发生在解码之后,通过对其输出的字符概率进行加权平均来实现。
实验结果表明,早期融合策略显著优于晚期融合,这证明了在编码阶段让模型直接学习音频与视觉特征之间的内在关联,比在决策阶段进行简单融合更为有效。
【2】解码器
在解码器部分,文中采用了一个混合CTC/Attention架构。它的核心思想是共享同一个编码器,但让其产出的隐藏状态 H 同时服务于CTC和Attention两个不同的解码目标,并通过一个加权损失函数进行多任务联合训练。这个损失函数是CTC损失和Attention损失的线性组合:
L = α l o g p c t c ( Y ∣ X ) + ( 1 − α ) l o g p a t t ( Y ∣ X ) L = α log p_{ctc}(Y|X) + (1-α) log p_{att}(Y|X) L=αlogpctc(Y∣X)+(1−α)logpatt(Y∣X)
其中,超参数 α 用于平衡两个目标。通过反向传播,这个联合损失可以同时更新编码器和两个解码路径的模型参数。
具体来看两个分支的工作机制:
2.1 CTC路径
CTC路径可以理解为一个帧级分类器。它在编码器输出的每一帧隐藏状态 h_t 后面,直接连接了一个线性投影层(即 W_ctc * h_t + b_ctc),然后通过Softmax函数,得到该帧对应于字符表(包含一个特殊的<blank>空白符)中每个字符的概率分布。
CTC的强大之处在于其后的处理流程,它通过动态规划高效地求和所有能映射到最终目标序列的合法路径的概率,从而计算条件概率 P_ctc(Y|X)。
(映射:即通过CTC规则【1】合并重复的字符【2】去除空白符,详见CTC详解)
(可跳过)动态规划求和直观理解:
如图所示,假设目标序列是 [a, b]。图中的每一条路径(例如 [a, -, b, ...] 或 [a, a, b, ...],其中 - 代表空白符)都代表一种可能的输入输出对齐方式**(合法对齐路径)。CTC算法的核心在于,它考虑所有可能的合法对齐路径**。最终输出 [a, b] 的概率 P_ctc(Y|X),就是所有这些合法路径的概率之和。
为了高效计算这个总和,可以使用动态规划。如图所示,网格中的每个节点 (s, t)(s表示图中左侧标注的状态,t表示图中上侧标注的时刻) 都存储了一个累计概率 α(s, t),它代表了在处理完 t 个输入步后,所有能生成目标子序列 Z_{1:s} 的路径的概率之和。
动态规划的核心是递推:当前时刻某个节点的概率,可以由前一时刻与之相连的节点的概率汇总得到。
我们以一个具体节点为例:来看 t=2 时刻,输出为字符 a 的节点(即 (a, 2))。在 t=2 时能走到这个“a”的合法路径,在 t=1 时只可能来自两个状态:要么是“空白符(-)”,要么也是“a”。因此,α(a, 2) =[α(-, 1)+α(a, 1)]×[当前步观测到“a”的概率]。
这个过程会持续递推,直到最后一个输入时刻 t=T。最终,P_ctc(Y|X) 的概率就是最后时刻 T,所有以目标序列最后一个字符(‘b’)或空白符结尾(最后的状态)的节点概率之和。
2.2 Attention路径
Attention路径是一个标准的自回归序列到序列解码器。它通过一个循环网络,逐步生成输出序列的每一个字符。其每一步 i 的生成过程如下:
- 计算注意力:基于解码器上一时刻的隐藏状态
s_{i-1},它与编码器所有时刻的输出H进行计算,得到一组注意力权重a_i。这组权重形成了一个“软性”对齐,指明了当前步应该重点关注输入序列的哪些部分。 - 生成上下文向量:利用注意力权重对编码器输出
H进行加权求和,得到一个浓缩了相关信息的上下文向量c_i。 - 更新状态与预测:解码器结合自身的上一状态
s_{i-1}、上一个输出字符y_{i-1}以及当前的上下文向量c_i,共同更新自身的状态到s_i,并预测出当前时刻的字符概率分布y_i。
需要强调的是:Attention解码器是逐步生成的。整个输出序列 Y 的生成概率是所有步骤输出概率的连乘:P_att(Y|X) = Π P(y_i | y_{<i}, X)。序列的生成在解码器输出 <eos>(句子结束)标记时终止。
上述CTC/Attention解码器的训练架构如图所示:
2.3推理阶段
在推理(预测)阶段,文中采用一种联合解码策略。具体而言,将CTC和Attention在每一步的输出概率进行联合加权打分,搜索最优序列:
y ^ = arg max { λ log p c t c ( Y ∣ X ) + ( 1 − λ ) log p a t t ( Y ∣ X ) } ŷ = \arg\max \{\lambda \log p_{ctc}(Y|X) + (1-\lambda) \log p_{att}(Y|X)\} y^=argmax{λlogpctc(Y∣X)+(1−λ)logpatt(Y∣X)}
2.4束搜索
在模型推理(预测)阶段,文中采用**束搜索(Beam Search)**算法来高效地寻找最优的输出序列。
其核心流程是:
- 算法维护一个大小为
beam width(例如20)的候选假设集合。这里的每一个“假设”,都是一个已生成的部分输出序列(例如["a"],["a", "b"])。 - 在每一步,算法都会对当前集合中的每一个部分假设进行扩展,预测其下一个所有可能的字符。
- 对于每一个可能的扩展,我们根据上述联合解码公式计算其得分。
AT:
1. 部分假设: 就是已输出的字符序列。
2. CTC的输出: 是帧级的、待合并的预测。
3. Attention的输出: 就是序列中下一个字符的预测。
深入理解:CTC与Attention在束搜索中的根本区别
- 在Attention路径中,下一个字符的预测强烈依赖于历史前缀,因为解码器的状态由之前生成的全部字符序列所决定。因此,对于束中不同的候选前缀,模型需要进行K次独立的前向计算,得到K个不同的下一个字符概率分布。
- 在CTC路径中,下一个字符的预测是一个无状态的帧级分类。它只依赖于当前输入帧
h_t,与历史生成的前缀无关。因此,对于所有候选前缀,下一帧的字符概率分布是相同的。CTC束搜索的智慧体现在对路径的管理:它通过维护、扩展和合并多条路径,确保最终选择的是整体概率最高的序列。CTC解码过程中的束搜索算法流程如下图所示:
2.5 外部语言模型
为了进一步提升识别结果,作者在解码过程中引入了一个外部字符级RNN语言模型(RNN-LM)。
这个语言模型是在大规模纯文本语料(LibriSpeech语料库转录本、LRS2预训练集转录本)上独立预训练好的,它的任务是学习自然语言中字符序列的规律,其任务是学习自然语言中字符序列的规律。
在推理时,我们通过浅融合技术将其集成到束搜索过程中。具体而言,在计算束搜索中每个候选序列的最终得分时,我们在联合CTC/Attention得分的基础上,加上语言模型得分:
总得分 = λ l o g p c t c + ( 1 − λ ) l o g p a t t + β l o g p l m 总得分 = λ log p_{ctc} + (1-λ) log p_{att} + β log p_{lm} 总得分=λlogpctc+(1−λ)logpatt+βlogplm
其中,β 是控制语言模型权重的超参数。
(可跳过)关于RNN-LM的训练:
这个字符级RNN语言模型的训练过程独立且标准:
- 核心任务是经典的语言建模:在任意时刻,模型接收一个历史的字符序列(例如
"h", "e", "l", "l"),其目标就是预测出下一个最可能的字符(例如"o")。 - 训练过程即是在大规模纯文本语料上,反复执行上述“给定上文,预测下一个字符”的任务。一个完整的句子会被高效地转化为许多个这样的训练样本。例如,从单词“hello”中,模型不仅可以学习从
"hell"预测"o",还可以学习从"h"预测"e"、从"he"预测"l"等等。通过这种方式,模型能够从海量文本中自动且充分地学习到自然语言字符组合的统计规律与内在语法
【3】总结
这种设计使得解码器兼具了CTC的对齐鲁棒性和Attention的强大序列建模能力,再辅以语言模型的先验语法知识,共同促成了最终卓越的识别性能。
更多推荐
所有评论(0)