写在前面——
自 2017 年 Transformer 技术出现以来,便在 NLP、CV、语音、生物、化学等领域引起了诸多进展。
知源月旦团队期望通过“Transformer+X” 梳理清 Transformer 技术的发展脉络,以及其在各领域中的应用进展,以期推动 Transformer 技术在更多领域中的应用。
我们在前几期中,介绍了 Transformer 的基本知识,以及其在 NLP、CV 领域的研究进展。在本篇推文中,我们将介绍Transformer 在语音中的应用。
后续我们将介绍 Transformer + 生物/化学等的研究。欢迎感兴趣的同学报名来参与到后续的工作中。
Github:floatingCatty/BAAI-Monthly-
申请加入Transformer +X 研究群:
本期贡献者
赵江杰、宋彤彤
邓雯敏、周寅张皓
本文为【知源月旦】团队完成的第四期综述,后续我们会定期更新最新前沿研究进展,敬请关注。
01
导言
语音识别是人工智能领域研究历史很悠久的任务之一。从上世纪80年代起,高斯混合模型-隐马尔可夫模型(GMM-HMM)一直主导了语音识别的研究,随着深度学习的再次崛起和流行,发展出了深度神经网络-隐马尔可夫模型(DNN-HMM)[1],但是这两种模型方案都需要使用HMM来进行解码识别。
LSTM与CTC的结合摆脱了对HMM的依赖实现了端到端的语音识别,随后Attention机制为NLP领域带来技术革新的同时也惠及了语音识别,BLSTM+Attention的模型组合成为新的语音识别范式。
Transformer在自然语言处理领域被提出后,陆续被引入到语音识别及计算机视觉领域,并表现非常出色。2018年Linhao Dongdeng人[2]率先将Transformer模型引入语音识别领域,提出Speech-transformer,这是一个完全依赖Attention机制学习位置依赖关系的无重复seq-seq模型。
Speech-Transformer提出后,有研究者将Transformer和RNN在各种ASR语料库中的应用进行了比较[3]。在他们的实验中,Transformer在13/15 ASR基准中表现出比RNN更大的优越性,证明了由于Transformer的并行训练能力及强大的序列建模能力,相比循环神经网络,基于Transformer的的编解码模型在语音识别任务中表现出更大优越性。
本篇将对Transformer模型在语音识别领域的运用特别是在流式场景下的改进方案展开探讨。
02
流式模型
语音识别模型按使用场景可以分为离线模型和流式模型,离线识别模型在用户说完一句话或一段话之后再进行识别,而流式模型则是指用户还在说话的时同步进行识别,对识别的实时率有比较高的要求。由于Transformer编码器和解码器的自注意力机制需要对全序列上下文信息进行建模,同时编码器和解码器之间的注意力机制一次需要获取整个声学编码向量,计算时间复杂度和空间复杂度会随着语音时长的增加而变大,同时Transformer的多层结构会造成累积延迟,因此不能直接用于流式语音识别的场景中,将Transformer模型改进实现低延时的流式识别就显得非常有必要性,这个方向在学术研究上更具挑战性,同时也有非常大的工业应用价值。我们对近两年Transformer相关发表的大概15篇论文进行了调研,发现其中8篇都是关于Transformer流式识别的相关模型和技术方案,说明了transformer的流式解码也是ASR领域学术关注的热点。
目前看到使用较多的Transformer流式语音识别主要包括两类:Transducer结构模型,Joint Attention/CTC模型。
2.1 Transducer
在流式语音识别,RNN-T颇受欢迎。其结构如图3所示,原始RNN-T中,Audio Encoder和Label Encoder大多采用LSTM,Joint Network一般为前馈神经网络。RNN-T是一种序列到序列模型,但与其他序列到序列模型(如LAS,Transformer)有所不同的是,RNN-T不采用注意力机制,不需要一次获取整个输入语音编码序列,而是流式的处理输入并输出预测结果,是天生的流式结构。近几年研究人员也积极探索如何将Transfromer融入RNN-T中来进行流式语音识别[4-6]。
2019年Facebook提出了Transformer-Transducer[4],在实验中,在将声学特征送入Audio Encoder前,堆叠两层VGGNet,此结构也相应被称为VGG-Transformer,一方面可以降低帧率,另一方面由于卷积能够很好的对位置信息进行编码[7],因此实验中取消了额外的位置编码。
同时VGGNet采用因果卷积(Causal Convolution)防止未来信息的泄露。
在Audio Encoder的Transformer中使用截断的自注意力(图6(b))替代原来的全序列自注意力(图6(a)),来限制上下文窗口,从而进一步降低延迟。
最终结果显示,当Audio Encoder为Transformer,Label Encoder为LSTM时表现最好,并且当截断自注意力的R=4,L=32时达到最优。
2020年谷歌提出了Transformer Transducer[5],与[4]的思路类似,通过替换Audio Encoder和Label Encoder为Transformer,并且通过对Attention Score的Mask来限制Audio Encoder与Label Encoder自注意力的上下文信息来降低延迟,但与[4]不同的是,该论文除探究对Audio Encoder上下文信息限制外,还探究了对Label Encoder不同长度上文信息限制对模型性能的影响。
除上述两篇文章,华为也尝试了将Transformer与RNN-T融合,提出了Conv-Transformer Transducer[6]。其在Audio Encoder中通过在Transformer层之间加入卷积层来降低帧率,同时获取未来信息,该结构被称为Conv-Transformer,其不仅能显著降低训练内存需求,还不会造成精度损失。
实验中卷积的设置将帧率降为80ms,未来信息窗口大小固定为140ms。由于卷积可以获取到未来信息,因此在该论文中自注意力将被限制不能获取到下文信息,只能获取到上文信息,并通过限制获取到上文信息的长度从而实现流式识别。
综上,我们可以看出,将Transformer与RNN-T融合并进行流式的改进主要有以下几个方面:
(a)将RNN-T的Aduio Encoder和Label Encoder前者或两者改为Transfomrer。
(b)限制Transformer中Self-Attention上下文信息。
(c)通过在Audio Encoder中加入卷积层来降低帧率。
(d)Aduio Encoder中自注意力和卷积层往往只有一个可以获取到下文信息。
2.2 Joint Attention/CTC
另外一种比较常用的流式语音识别的方案是Self-Attention与CTC联合使用的混合方案。端到端的语音识别模型主要分为两类:Attention-based和CTC-based,Transformer属于其中的Attention-based模型,而CTC基于条件独立性假设,每个时刻的输出仅依赖于当前时刻的输入,不需要等待完整的上文输入,通过引入空白符,保持输入与输出的单调对齐(mono-tonic alignment),使用动态规划算法实现快速解码。但也因为CTC中每帧的输出是相互独立的,而一般对于语音识别的文字结果而言,由于文本中上下文有语义依赖,而CTC输出之间相互独立,因此为了实现更好的性能,在实际中使用CTC时往往会加上语言模型。
Attention-based通过注意力机制对音频输入的各帧进行联合建模,与CTC假设各帧之间条件独立刚好相反,如果结合两者的特点来构建一个混合模型,就能利用两种机制各自优点和差异来实现更鲁棒的识别效果。在实际应用中,一般设置CTC与Attention共享一个encoder,目标函数联合优化CTC loss和Attention loss,在训练过程中利用CTC 的对齐信息来辅助Attention的非单调对齐,加速模型训练收敛[7]。在推理阶段,同样可以结合CTC和Attention的输出概率进行联合解码。
Transformer模型与Lstm模型的主要区别在多头注意力机制,但同样也需要完整编码encoder的信息才能进行解码,因此联合Attention和CTC的hybrid模型要实现流式主要是通过在encoder上进行改进。其中一种方式是基于chunk-wise的Chunk-SAE(Self-Attention Encoder)[8],将长度的L的音频输入按固定长度分为N个chunk,以其中的一个chunk作为centra chunk( )为例,左边近邻的chunk作为Historical context( ),右边近邻的chunk作为Future context( ),在训练时只有Central chunk产生输出。这样在音频的encoder编码过程中,每次编码的长度就限定在三个chunk范围内( + + ),通过一个滑动窗口每次往后滑动产生输入,从而不再依赖于整段音频输入再进行解码。
这样的方式存在一个问题就是在chunk滑动的过程中存在