基于SA-Conv-CTC/Attention端到端语音识别模型的基本原理、实现方法和主要流程

摘要

我们知道,传统的语音识别系统分为三大组件,分别是词汇字典、声学模型和语言模型,这使得我们不得不单独训练声学和语音模型[1]。近年来,端到端(E2E)语音识别系统越来越受欢迎,与传统的语音识别系统不同,E2E语音识别系统直接将输入的语音转换成字符或单词,只基于配对的语音数据和语言数据,而不依赖其他独立组件,这使得E2E模型开始被广泛应用。随着Self-Attention应用,E2E语音识别模型的性能有了很大的提升,Transformer更是把这种机制发挥到了极致,吸引了大量的学者研究。另一方面,基于CTC/Attention的混合模型在解码方面具有非常突出的优势,它既可以CTC实现输出序列与输入序列的时间顺序对齐,又可以通过Attention把握token在整个序列中的重要程度。本文主要研究2020年提出的一种全新E2E混合模型SA-Conv-CTC/Attention,它基于CTC/Attention,又将Self-Attention与浅卷积的混合编码器应用到CTC/Attention架构中,从而取得了具有竞争力的性能。与主流的混合模型相比,SA-Conv-CTC/Attention降低了约0.8~4.75%的错误率。

关键词:自注意力/卷积混合编码器;连接时序分类/注意力混合模型;自注意力语言模型;端到端的语音识别

文章目录

1. 引言

自动语音识别(ASR)的端到端架构主要有三类:基于注意力的方法(Attention)和连接时序分类(CTC)以及混合型的CTC/attention模型[2]。2006年,Graves等人在ICML 2006上首次提出CTC方法,通过动态规划来解决输入序列和输出标签的对齐问题。Attention方法使用注意力机制进行声学帧和识别符号之间的对齐。然而,仅仅通过注意力机制是无法实现时序对齐的[3]。虽然CTC通过动态规划高效地解决了时序对齐问题,但CTC需要符号独立性的假设来获得标签序列概率,这对于密切相关的语音信号来说并不完美。后来,人们提出了各种混合模型来解决上述问题。随着自注意力机制(SA)的运用,语音模型实现了很好的性能,2017年提出的Transformer被快速的应用到自动语音识别(ASR)系统中[4],基于此也诞生了许多优秀的语音识别工具集,如ESPNET等。可以说,Transformer的应用让语音识别的结果达到了最先进的水平。然而,为了得到理想的结果,我们需要大量的数据来训练基于Transformer的模型,当数据库规模不大时,Transformer可能并不会得到预期的结果,而混合模型能有令人满意的表现。

受上述启发,2020年,Mingxin等人提出了SA-Conv-CTC/Attention模型,即用Self-Attention和浅卷积的混合编码器来替代原有的编码器组件,实现CTC/Attention混合模型。具有长短期记忆(LSTM)单元的循环神经网络(RNN)早已出现,它的优点在于当网络随时间反向传播(BPTT)时,能够通过循环连接学习序列信号中的时间相关性[5]。然而,RNN有一个众所周知的缺点,就是由于BPTT导致的梯度消失或爆炸问题,而且RNN中的循环连接使得训练和推理阶段的并行化计算具有挑战性。自注意力(SA)可以对任意长度的序列进行建模,不存在LSTM中梯度消失的问题。卷积层可以很好地关联相关序列特征,提高鲁棒性。因此,可以通过Self-attention/Convolution(SA-Conv)编码器对语音特征进行编码,以改进CTC/Attention的混合模型。为了充分发挥自注意力的性能,作者还使用了基于自注意力的语言模型(SA-LM)的混合解码器。

2. 模型描述

2.1 混合编码器

由Self-Attention/Convolution构成的混合编码器如图1所示,该编码器首先对输入序列进行下采样,然后再进行位置编码(Positional Encoding),之后将结果输入SA-Conv中完成编码操作。在SA-Conv层中,使用一维卷积隐式编码相对位置信息。我们知道,一维卷积具有融合不同通道特征的能力,因此能够隐式地融合声学帧,也可以学习有用的频谱时序模式(spectral temporal patterns)。此外,近年来CNN的快速发展已经证明了卷积在特征提取方面有很好的表现。另一方面,卷积在时间和空间尺度上的平移不变性,使它更适合于语音数据样本的时频特征提取,能够进一步提高模型识别的鲁棒性[6]。Self-attention擅长捕捉全局信息,卷积则更易学习局部特征的相关性,因此self-Attention/Convolution的结合,大大提高了模型对特征的捕获能力。


图1 SA-Conv架构

Multi-head attention可以让模型关注不同位置的信息,以提升注意力层的性能,这一点是参考Transformer的多头注意力设计的。Multi-Head表示只多做几次同样的事情(参数不共享),然后把结果拼接。每个Head表示为hi{ {\rm{h} }_i},它其实就是一个完整的self-attention组件。这里,我们使用缩放版的点积attention即Scaled Dot-Product Attention,这个机制在Transformer的论文中被证明非常有效[7],具体结构如图2所示。在Scaled Dot-Product Attention中,输入由Query、dk{ {\rm{d} }_k}维的Key和dv{ {\rm{d} }_v}维的Value组成,首先计算Query和所有Key的点积,然后将每个点击结果除以缩放因子dk\sqrt { { {\rm{d} }_{\rm{k} } } },最后再用一个softmax函数获得结果的权重即可。在实际应用中,可以同时计算一组Query的Attention函数,并将它们组合成一个矩阵Q,Key和Value被打包成矩阵K和V,所以self-attention计算的输出矩阵为:

Attention(Q,K,V)=softmax(QKTdk)V(1)A{\rm{tt} }ention(Q,K,V) = soft\max (\frac{ {Q{K^T} } }{ {\sqrt { { {\rm{d} }_{\rm{k} } } } } })V \tag{1}

Multi-head attention是SA-Conv-CTC/Attention模型编码器的核心模块。如图1所示,多头注意力计算h次Scaled Dot-Product Attention,然后将不同head的输出进行连接并再次映射,之后再送入下一层。


图2 缩放版的点积attention和多头注意力

上面也提到了,Multi-head attention可以关注不同位置的信息,如果只有一个“注意力头”,它的平均值会削弱这个信息,因此Multi-head的计算如下表示:

MultiHead(Hmal)=Concat(H1,,Hh)Wo(2)Mu{\rm{l} }tiHead({H_{mal} }) = Concat({H_1}, \cdots ,{H_h}){W^{\rm{o} } } \tag{2}

whereHi=Atention(QWiQ,KWiK,VWiV)(3)where \quad {\rm{ } }{ {\rm{H} }_i} = Atention(QW_i^Q,KW_i^K,VW_i^V) \tag{3}

其中,h是attention head的个数,WiQW_i^QWiKW_i^KWiVW_i^V是第i个attention head的参数,Wo{W^{\rm{o} } }是投影矩阵,用来减少经过concat注意力向量的维度。

图1中,Norm表示归一化,1D Conv表示一维浅卷积,FFN指的是基于位置的前馈网络。FFN(Hff)=ReLU(HmidW1+b1)W2+b2FFN({H_{ff} }) = {\mathop{\rm Re}\nolimits} LU({H_{mid} }{W_1} + {b_1}){W_2} + {b_2},其中参数W1dh×dff{W_1} \in {^{ { {\rm{d} }_h} \times {d_{ff} } } }b1dff{b_1} \in {^{ {d_{ff} } } }W2dff×dh{W_2} \in {^{ { {\rm{d} }_{ff} } \times {d_h} } }b2dh{b_2} \in {^{ {d_h} } }是可学习的。SA-Conv将多头注意力的输出通过Norm和Add汇总,再最终输出SelfAttentionLayer,用公式表示如下:

MidLayer(Hm)=LNMultiHead(Hc)+Hc)(4)MidLayer({H_m}){\rm{ = } }LNM{\rm{u} }ltiHead({H_c}){\rm{ + } }{H_{\rm{c} } }) \tag{4}

SelfAttentionLayer(Hl)=LN(FFN(MidLayer(Hm))+MidLayer(Hm))(5){\rm{SelfAttentionLayer(} }{ {\rm{H} }_l}) = LN(FFN(MidLayer({H_m})) + MidLayer({H_m})) \tag{5}

2.2 位置编码器

由于注意力机制的对齐关系没有先后顺序的限制,完全靠数据驱动,因此没有使用输入序列的顺序信息。为了让模型使用序列的顺序,我们必须注入序列中关于词符(token)相对或绝对位置的一些信息。所以,需要将位置编码(Positional Encoding)与输入的embedding相加,作为encoder和decoder栈的底部输入,Positional Encoding和embedding具有同样的维度 dk{d_k},因此两者可以相加。这用使用Ashish在Transformer中提到的正弦和余弦函数来作为位置编码[7]:

PE[t,2i]=sin(t/100002idk)(6)PE[t,2i] = \sin (t/{10000^{\frac{ {2i} }{ { {d_k} } } } }) \tag{6}

PE[t,2i+1]=sin(t/100002i+1dk)(7)PE[t,2i + 1] = \sin (t/{10000^{\frac{ {2i + 1} }{ { {d_k} } } } }) \tag{7}

2.3 SA-Conv-CTC/Attention架构

Mingxin等人基于CTC/Attention,结合了SA-Conv编码器和SA-LM,提出了SA-Conv-CTC/Attention的混合模型。

如图3所示,该模型利用CTC目标函数作为辅助任务,在多任务学习(MTL)框架内训练网络模型,在训练过程中,CTC的前向-后向算法可以强制语音和标签序列之间的单调对齐[3],Attention把握token在整个序列中的重要程度,最后将CTC与基于Attention机制的交叉熵相结合,构成模型的损失函数:

ςMTL=λςctc+(1λ)ςatt=λlogpctc(yx)+(1λ)logpatt(yx)(8){\varsigma _{MTL} } = \lambda {\varsigma _{ctc} } + (1 - \lambda ){\varsigma _{att} } = \lambda \log {p_{ {\rm{c} }tc} }(y|x) + (1 - \lambda )\log {p_{att} }(y|x) \tag{8}

C=argmaxCU{λlogpctc(CX)+(1λ)logpatt(CX)}(9)\mathop C\limits^ \wedge = \mathop {\arg \max }\limits_{C \in {U^*} } \{ \lambda \log {p_{ctc} }(C|X) + (1 - \lambda )\log {p_{att} }(C|X)\} \tag{9}

其中,$\lambda $为CTC与Attention的损失函数,0λ10 \le \lambda \le 1,X为输入序列,C为预测序列。


图3 SA-Conv-CTC/Attention架构

2.4 带有SA-LM的混合解码器

SA-LM即自注意力语言模型(self-attention language module)[8],图4是Linhao等人于2019年提出的SA-LM架构。SA-Conv-CTC/Attention将SA-LM作为一个模块与CTC/Attention结合在一起构成整个模型的解码器。该解码器可以作为模型的一部分联合训练,也可以将SA-LM拿出来单独进行训练,当然,也允许先将SA-LM预训练之后加入到整个模型中再联合训练,这根据实际的需求而定。SA-LM需要字符序列级别的知识进行训练,不需要单词级别先验知识训练。将基于字符序列的语言模型(LM)加入到基于注意力的模型中起到了巨大的作用,该语言模型完全依赖于解码器中过去的输出标签序列来预测下一个标签。


图4 SA-LM架构

3. 实验

3.1 数据集介绍

SA-Conv-CTC/Attention模型主要在两个不同的自动语音识别(ASR)数据集上测试其有效性,它们分别是华尔街日报数据集WSJ和香港科技大学的数据集HKUST。WSJ包含WSJ0和WSJ1两种版本,WSJ0由美国国防部口语项目提供的《华尔街日报》语料库,大小约为 42.5小时。WSJ1是华尔街日报口语料库,主要由播音员录制的语音音频,大小约为162小时。HKUST是普通话电话语音数据集,它由香港科技大学提供,并收集和转录许多来自中国大陆的普通话电话语音,该数据集由于不断扩充变得越来越大,实验中用的HKUST大约177小时。

3.2 实验细节

在实验中,将SA-Conv的深度固定为6层,公式1的缩放因子dk{ {\rm{d} }_{\rm{k} } }设置为512.。前馈层FFN的隐藏单元数设置为2048,每个卷积层的内核尺寸为3x3,步长为1,总参数量约为26M。模型首先通过Filter banks提取语音相关的特征并进行归一化,然后再进行训练,设置Filter banks维度为80。除了使用Filter banks,没有采用其它任何辅助库提取额外的特征。另外,还采用了一种简单的下采样方法,即堆叠4个连续的特征向量,将输入序列的长度减少4倍,由于self-attention的存储成本是O(T2)O({T^2})(T是输入序列的长度),因此采用这种采用方法可以降低内存消耗,从而实现更深的训练模型。为了避免过拟合,实验中使用了标签平滑(label smoothing)的正则化策略,如图5所示,K大小根据数据集标签设定,$\varepsilon $是一个较小超参数,这里设置为0.1。


图5 label smoothing正则化

HKUST数据集中有5个小时语音用于评估(evaluation),并从训练数据中提取5个小时语音用于开发集(development),将其余的167个小时用于训练。对于WSJ数据集,直接按其本身的划分集进行训练。

3.3 评价准则

SA-Conv-CTC/Attention使用最常用的词错误率WER和字符错误率CER来评价模型,WER公式定义如下:

WER=NDel+NSub+NInsNRef(10)WER = \frac{ { {N_{Del} } + {N_{Sub} }{\rm{ + } }{N_{I{\rm{ns} } } } } }{ { {N_{ {\mathop{\rm Re}\nolimits} f} } } } \tag{10}

其中,NDel{N_{Del} }表示测试集中所有的词数量,NSub{N_{Sub} }表示识别结果相对于实际标注发生删除错误的词数量,NIns{N_{I{\rm{ns} } } }则表示发生插入错误的词的数量。

针对中文普通话,评价指标也经常采用字符错误率CER,即用单字而不是词,来计算错误率。

3.4 实验结果

实验主要分为两个部分,首先测试以前主流的E2E语音识别混合模型,如Attention、RNN-T、多任务语言模型MTL(即Hybrid CTC/Attention),然后再根据不同的配置测试SA-Conv-CTC/Attention的性能。为了使实验结果更具有说服力,具体训练时,结合了不同的编码器、解码器。实验结果如表1和表2所示,表1是主流模型在WSJ 和HKUST数据集的CER,表2是SA-Conv-CTC/Attention模型在WSJ 和HKUST数据集的CER。


表1 主流混合模型在WSJ 和HKUST数据集的CER

表1中,如果没有指定λ\lambda的值,则λ\lambda为0.1,表中 - 表示对应的模型没有在相应的数据集上做测试,表二 -也是相同的含义。


表2 SA-Conv-CTC/Attention模型在WSJ 和HKUST数据集的CER

表1和表2中的黑色字体代表相应模型在该数据集下的CER最优值。结果显而易见,SA-Conv-CTC/Attention模型的多种配置的CER几乎都比主流E2E模型的CER小,说明模型在性能上还是非常有优势的。从表2中可以看出,λ\lambda等于0.1时,MTL +SA-Conv Enoder可以达到最优,所以在测试SA-LM解码器和SA-LM的混合解码器时,都将λ\lambda设置为0.1。实验中也对SA-LM在SA-Conv-CTC/Attention中的影响进行了测试,可以看到, 单独SA-LM和混合SA-LM的解码器在HKUST数据集上取得了不错的效果,但是混合解码器效果更好。总的来说,SA-Conv-CTC/Attention模型在WSJ和HKUST的数据集上实现了比主流模型低0.8~4.75%的CER。

4. 结论

在本文中,我研究了SA-Conv-CTC/Attention模型的基本原理、实现方法和主要流程。该模型将Self-Attention和卷积应用到Hybrid CTC/Attention架构中,实现了一种新的E2E语音识别模型。与主流混合模型相比,它的网络更深、参数量更多,词错误率WER也更低,减少了0.8~4.75%的错误率。为了防止过拟合,采用了标签平滑(label smoothing)的正则化策略。模型中的CTC不仅能够加快网络的训练速度,还弥补了注意力机制中不能实现序列对齐的缺点,可能由于位置编码的原因,导致CTC影响比较小,在实验中,CTC的权重为0.1时模型的CER才达到最低。总的来说,这种新的混合模型达到了很高的性能,Selft-Attention与卷积的结合也给未来的研究指明了一个方向,RNN、CNN、Atttention在提取特征方面各有优劣,Atttention虽然大大提高语音识别系统的性能,但是这并且意味着它在所有方面都具有优势,SA-Conv-CTC/Attention正好说明了这一点。从RNN-T、Hybrid CTC/Attention、Transformer再到到如今的SA-Conv-CTC/Attention,端到端的语音识别始终在不端成长,相信有一天,基于E2E的ASR能够成为解决工业实践问题的一个强有力工具。

吐槽一下,公式太多了,打了大半天,哎!

参考文献:

[1] Kim S, Hori T, Watanabe S. Joint CTC-attention based end-to-end speech recognition using multi-task learning[C]//2017 IEEE international conference on acoustics, speech an d signal processing (ICASSP). IEEE, 2017: 4835-4839.

[2] Watanabe S, Hori T, Kim S, et al. Hybrid CTC/attention architecture for end-to-end speech recognition[J]. IEEE Journal of Selected Topics in Signal Processing, 2017, 11(8): 1240-1253.

[3] Moritz N, Hori T, Le Roux J. Triggered Attention for End-to-end Speech Recognition[C]//ICASSP 2019-2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2019: 5666-5670.

[4] Dong L, Xu S, Xu B. Speech-transformer: a no-recurrence sequence-to-sequence model for speech recognition[C]//2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2018: 5884-5888.

[5] Werbos P J. Backpropagation through time: what it does and how to do it[J]. Proceedings of the IEEE, 1990, 78(10): 1550-1560.

[6] 徐冬冬, 蒋志翔. 基于深度优化残差卷积神经网络的端到端语音识别[J]. 计算机应用研究. 2020,37(S2) 2020:2-4.

[7] Vaswani A, Shazeer N, Parmar N et al.Attention Is All You Need[J]. NIPS in Long Beach, CA, USA. 2017:3-7.

[8] Dong L, Wang F, Xu B. Self-attention Aligner: A Latency-control End-to-end Model for ASR Using Self-attention Network and Chunk-hopping[C]//ICASSP 2019-2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2019: 5656-5660.