Attention-lvcsr、Residual LSTM…你都掌握了吗?一文总结语音识别必备经典模型(三)
机器之心专栏
本文将分 3 期进行连载,共介绍 17 个在语音识别任务上曾取得 SOTA 的经典模型。
第 1 期:NNLM、RNNLM、LSTM-RNNLM、Bi-lstm、Bi-RNN+Attention、GPT-1
第 2 期:Bert、Transformer-XL、EeSen、FSMN、CLDNN、highway LSTM
第 3 期:Attention-lvcsr、residual LSTM、CTC/Attention、Transfomer-Transducer、Conformer
您正在阅读的是其中的第 1 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
第 1 期回顾:NNLM、RNNLM、LSTM-RNNLM、Bi-lstm、GPT-1…你都掌握了吗?一文总结语音识别必备经典模型(一)
第 2 期回顾:EeSen、FSMN、CLDNN、BERT、Transformer-XL…你都掌握了吗?一文总结语音识别必备经典模型(二)
模型 | SOTA!模型资源站收录情况 | 模型来源论文 |
---|---|---|
Attention-lvcsr | https://sota.jiqizhixin.com/project/attention-lvcsr 收录实现数量:1 支持框架:PyTorch | End-to-end attention-based large vocabulary speech recognition |
Residual LSTM | https://sota.jiqizhixin.com/project/residual-lstm 收录实现数量:1 支持框架:PyTorch | Design of a deep recurrent architecture for distant speech recognition |
CTC/Attention | https://sota.jiqizhixin.com/project/ctc-attention | Hybrid CTC/Attention Architecture for End-to-End Speech Recognition |
Transfomer-Transducer | https://sota.jiqizhixin.com/project/transfomer-transducer 收录实现数量:1 支持框架:PyTorch | Transformer Transducer: A Streamable Speech Recognition Model with Transformer Encoders and RNN-T Loss |
Conformer | https://sota.jiqizhixin.com/project/conformer-l 收录实现数量:3 支持框架:PyTorch、TensorFlow、PaddlePaddle | Conformer: Convolution-augmented Transformer for Speech Recognition |
语音识别是指将语音信号转换为文字的过程。具体来说,输入一段语音信号,找到一个文字序列(由词或字组成),使得它与语音信号的匹配程度最高。这个匹配程度,一般是用概率表示的。语音识别系统一般由如下几个部分组成:信号处理、解码器、文本输出。信号处理模块根据人耳的听觉感知特点,抽取语音中最重要的特征,将语音信号转换为特征矢量序列。现行语音识别系统中常用的声学特征有线性预测编码(Linear Predictive Coding,LPC)、梅尔频率倒谱系数(Mel-frequency Cepstrum Coefficients,MFCC)、梅尔标度滤波器组(Mel-scale Filter Bank,FBank)等。解码器(Decoder)根据声学模型(Acoustic Model,AM)和语言模型(Language Model,LM),将输入的特征矢量序列转化为字符序列。解码器对给定的特征向量序列和若干假设词序列计算声学模型得分和语言模型得分,将总体输出分数最高的词序列作为识别结果。其中,声学模型是对声学、语音学、环境的变量,以及说话人性别、口音的差异等的知识表示,主要实现预测通过词 W 的发音生成特征 X 的概率。声学模型的训练数据是标注的声音特征(标注是对应的文本内容);语言模型则是对一组字序列构成的知识表示,主要实现预测某词或词序列的概率。语言模型的训练数据是一些合乎语法的句子(纯文本)。
从语言模型角度分析,近些年随着深度学习的发展,神经网络语言模型 (neural network language model,NLM) 由于能将词向量映射到低维连续空间,因此逐渐成为主流方法,具备较好的泛化性能。最早的神经语言模型是基于前馈神经网络 (feedforward neural network, FNN) 的,初步实现了对长文本序列在低维连续空间的建模,但这种方法能够处理的文本长度受限于网络的输入长度,而后循环神经网络 (recurrent neural network, RNN) 为代表的语言模型利用循环结构可以在理论上对无限长的文本建模,性能得到极大提升。基于长短期记忆循环神经网络 (long short-term memory recurrent neural network, LSTM-RNN) 的语言模型则解决了 RNN 在长历史序列建模时梯度消失的问题,在各种任务上都取得不错的效果。近年来,基于 Transformer 的语言模型在自注意力机制作用下对长文本具有更强的建模能力,在一系列自然语言和语音的任务上均取得了最优性能。从语言模型的发展中可以看出,研究核心在于如何提高模型对于长历史序列信息的建模能力,这也是神经语言模型在语音识别应用中需要考虑的核心问题。
从声学模型角度分析,传统的语音识别系统的声学模型普遍采用的是基于GMM-HMM的声学模型,其中,GMM用于对语音声学特征的分布进行建模,HMM则用于对语音信号的时序性进行建模。2006年深度学习兴起以后,深度神经网络(Deep Neural Networks,DNN)被应用于语音声学模型。2009年,Hinton及其学生将前馈全连接深度神经网络应用于语音识别声学建模,在TIMIT数据库上基于DNN-HMM的声学模型相比于传统的GMM-HMM声学模型可以获得显著的性能提升。DNN相比于GMM的优势在于:1)DNN对语音声学特征的后验概率进行建模不需要对特征的分布进行去分布假设;2)GMM要求对输入的特征进行去相关处理,而DNN可以采用各种形式的输入特征;3)GMM只能采用单帧语音作为输入,而DNN则可以通过拼接相邻帧的方式利用上下文的有效信息。2011年,Deng Li等提出基于CD-DNN-HMM的声学模型,在大词汇量连续语音识别任务上取得成功,相比于传统的GMM-HMM系统可以获得超过20%的相对性能提升。基于DNN-HMM的语音声学模型开始取代GMM-HMM成为主流的声学模型。此后大量的研究人员投入到基于深度神经网络的语音声学建模研究中,语音识别取得了突破性的进展。
本文分别总结了神经语音识别中神经语言模型和神经声学模型的经典TOP模型。
一、神经语言模型
1、 Attention-lvcsr
目前许多先进的大词汇量连续语音识别系统(Large Vocabulary Continuous Speech Recognition Systems,LVCSR)是神经网络和隐马尔可夫模型(HMM)的混合体。这些系统大多包含处理声学建模、语言建模和序列解码的独立组件。本文研究了一种更直接的方法,即用循环神经网络(RNN)取代HMM,直接在字符层面进行序列预测。输入特征和所需的字符序列之间的对齐是由RNN内置的注意力机制自动学习的。对于每个预测的字符,注意力机制扫描输入序列并选择相关的框架。这项工作研究了基于注意力的循环序列发生器(Attentionbased Recurrent Sequence Generator,ARSG)的应用,作为端到端低通滤波器系统的一部分。
在这项工作中,我们使用深度BiRNN作为编码器。因此,表示法是BiRNN状态向量的序列(h_1, ... , h_L)。对于一个标准的深度BiRNN网络,序列(h_1, ... , h_L)与最底层的输入一样长,在语音重构的背景下,这意味着每10ms的录音有一个h_i。因此,在BiRNN层之间增加了池化,如图1所示。
图1. 增加池化层的BiRNN:上层的运行速度比下层慢两倍。它可以对它下面一层的隐藏状态进行平均或子采样(如图所示)
系统中的解码器网络是一个基于注意力的循环序列发生器(ARSG)。虽然RNN可以处理和生成序列数据,但隐藏状态向量序列的长度总是等于输入序列的长度。人们可以以学习这两个序列之间的排列组合为目标,建立一个分布为p(y_1, ... , y_T |h_1, ... , h_L)的模型,对于这个分布,T和L之间没有明显的功能依赖关系。ARSG一次产生一个输出序列(y_1, ... , y_T),同时将每个生成的元素与编码的输入序列(h_1, ... , h_L)对齐。它由一个RNN和一个额外的子网络组成,称为 "注意力机制"。注意力选择输入序列的时间位置,这些位置被用来更新RNN的隐藏状态,并对下一个输出值进行预测。ARSG如图2所示。
图2. 基于注意力的循环序列发生器的示意图
在每个时间步长t,MLP将隐藏状态s_t-1和所有的输入向量h_l结合起来,计算出注意力权重α_tl。随后,可以计算得到新的隐藏状态s_t和输出标签y_t的预测。本工作中使用的注意力机制是一个改进版的带有卷积特征的混合注意力,它由以下公式描述
尽管从结构上看,ARSG隐式学习了一个输出符号如何依赖于先前的符号,但训练语料的转录通常不足以学习一个高质量的语言模型。出于这个原因,作者进一步研究如何将ARSG与语言模型相结合。主要的挑战是,在语音识别中使用的是基于单词的语言模型,而ARSG是对字符序列的分布建模。使用带权有限状态转录器(Weighted Finite State Transducer,WFST)框架,从一个词级的语言模型建立一个字符级的语言模型。一个WFST是一个有限自动机,其过渡有权重和输入输出标签。它定义了将输入序列转化为输出序列的成本,即考虑所有具有相应的输入和输出标签序列的路径。组合操作可用于组合定义不同层次的表示法的FST,如案例中的字符和单词。将语言模型有限状态转录器(Finite State Transducer,FST)G与简单拼出每个单词的字母的词典FST L组成。更具体地说,建立了一个FST T = min(det(L o G))来定义字符序列的对数概率。把这个FST的权重推向起始状态,以帮助在解码期间进行假设修剪。
对于解码,我们寻找一个成本最小的转录本y,它结合了编码器-解码器(encoder-decoder,ED)和语言模型(language model,LM)的输出,如下所示
在波束搜索解码中整合FST和ARSG是很容易的,因为它们的共同特性是当前状态只取决于前一个状态和输入符号。因此,我们可以使用一个简单的从左到右的波束搜索算法,来近似计算出最小化L的y值。
当前 SOTA!平台收录 Attention-lvcsr 共 1 个模型实现资源。
项目 | SOTA!平台项目详情页 |
---|---|
Attention-lvcsr | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/attention-lvcsr |
2、 Residual LSTM
通过使用Highway LSTM建模发现,当从3层HLSTM增加到8层时,字错误率(wer)反而上升了。这就是所谓的Degration problem,即随着网络深度的增加训练/开发集的错误率不降反增。为了解决这个问题,提出了Residual LSTM。Residual LSTM也是借鉴了Highway LSTM的思想。具体结构如下:
图3. Residual LSTM:将先前的输出层(h_t)^l-1的shortcut添加到一个投影输出(m_t)^l。(W_h)^l是输入和输出之间的尺寸匹配矩阵
从图3中可以看出:
(1)Residual LSTM有一条空间上的shortcut(对应绿色方块的Shortcut Path)。而绿色方块表达的是l层的输入(x_t)^l是来自l-1层的输出(h_t)^l-1 。这里的空间指的是不同层的LSTM之间。当然Residual LSTM也有一条时间上的shortcut,即图中l层t时刻的细胞状态依赖于l层t-1时刻的细胞状态,因此说它也提供了一条时间上的shortcut;
(2)与Highway LSTM不同,Highway LSTM通过额外引入了carry gate来限制空间上的shortcut的畅通程度。而Residual LSTM则直接使用output gate代替carry gate来限制空间上的shortcut的畅通程度。通过这个替代,能有效超过减少10%的参数数量;
3、与Highway LSTM不同,Highway LSTM的时间shortcut和空间shortcut是应用在同一个对象上,即细胞状态。而Residual LSTM的时间shortcut是应用在细胞状态,而空间shortcut是应用在输出层。
与传统LSTM相比,Residual LSTM公式如下:
其中,Residual LSTM公式中的 (x_t)^l就是来自l-1层的输出 (h_t)^l-1。通过公式我们可以看到,Residual LSTM也有一个映射层,即 (m_t)^l。
当前 SOTA!平台收录 Residual LSTM 共 1 个模型实现资源。
项目 | SOTA!平台项目详情页 |
---|---|
Residual LSTM | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/residual-lstm |
3、 CTC/Attention
基于CTC/注意力的端到端混合架构将CTC目标函数作为一个正则项,加入到基于注意力的编解码器中。在没有任何启发式搜索技术的情况下,大大减少了不规则对齐语句的数量。在解码过程中,采用了一种联合解码方法,能够在rescoring/beam search算法中将基于注意力的分数和 CTC 分数结合来达到无条件独立假设下的强对齐约束 。
图4. 基于CTC/注意力的端到端混合架构。共享编码器是由CTC和注意力模型目标同时训练的。共享编码器将输入序列{x_t, ... ,x_T }转化为high-level特征H = {h_t,..., h_T },而注意力解码器生成字母序列{c_1 , ..., c_L}
使用CTC目标函数作为辅助任务来训练多目标学习( multiobjective learning ,MOL)框架中的注意力模型编码器。图23给出了框架的整体结构,其中,CTC和注意力编码器网络共享同一个BLSTM。与唯一的注意力模型不同,CTC的前向-后向算法可以在训练过程中执行语音和标签序列之间的单调对齐。在长序列中,CTC中的前向-后向算法有助于加快估计所需排列的过程,而不是仅仅依靠数据驱动的注意力方法来估计所需排列。目标函数如下:
基于CTC/注意力的混合端到端语音识别的推理步骤是通过标签同步解码与基于注意力的传统ASR相似的波束搜索进行的。将CTC的概率考虑在内,以找到一个与输入语音更一致的假说,如图23所示。基于注意力机制的一般解码和传统技术能够缓解对齐问题。本文提出了具有混合CTC/注意力架构的联合解码方法。
传统的解码技术中,解决注意力模型过长过短的方法是添加长度惩罚(length penalty),也可以通过设置最大和最小长度来控制(最大和最小的选择被表示为输入语音长度的固定比率)。此外,引入coverage term(覆盖项)通过源端输入帧的注意力权重,能够判断该源端帧是否已经被转译。混合CTC/注意力方法在推理步骤中结合了CTC和基于注意力的序列概率以及训练步骤。联合解码目标函数为:
CTC概率执行单调的排列,不允许大的跳跃或相同帧的循环。此外,它可以避免过早预测序列末尾的标签,这不是由覆盖率项处理的。因此,可以选择具有较好排列的假说,并排除不相关的假说,而不依赖覆盖率项、长度惩罚或最小/最大长度。在波束搜索过程中,解码器需要为每个部分假设计算一个分数:
然而,在波束搜索中结合CTC和基于注意力的分数并不容易,因为注意力解码器是以输出标签同步进行的,而CTC是以帧同步进行的。为了将CTC概率纳入假设得分,作者提出了两种方法。
重新计分。第一种方法是一个两遍的方法(Rescoring),第一遍使用波束搜索获得一组完整的假设,其中只考虑基于注意力的序列概率。第二遍使用CTC和注意力概率对完整的假设进行重新评分,其中,CTC概率是通过CTC的前向算法获得的。重新计分环节得到的最终结果是根据下式:
One-pass解码。第二种方法是One-pass解码,使用CTC和注意力模型计算每个部分假设的概率。利用CTC前缀概率,定义为所有以h为前缀的标签序列的累积概率。
计算CTC得分如下:
C^计算为:
基于注意力的ASR容易引入删除和插入错误,这是由于其具有灵活的排列属性,可以关注编码器状态序列的任何部分来预测下一个标签。由于注意力是由解码器网络产生的,它可能在还没有注意到所有的编码器帧的情况下就过早地预测序列结束的标签,从而造成假设太短。另一方面,它可能通过注意与之前注意的相同部分,以高概率预测下一个标签。在这种情况下,假设又变得非常长,包含了重复相同的标签序列。
项目 | SOTA!平台项目详情页 |
---|---|
CTC/Attention | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/ctc-attention |
4、 Transfomer-Transducer
本文提出了一个带有Transformer编码器的端到端语音识别模型,可用于流式语音识别系统。引入基于自注意力的Transformer计算块来对音频和标签序列进行独立编码。来自音频和标签编码器的激活与前馈层相结合,计算出每个声学帧位置和标签历史组合在标签空间的概率分布。这类似于循环神经网络转录器( Recurrent Neural Network Transducer ,RNN-T)模型,它使用RNN进行信息编码,而不是Transformer编码器。该模型使用非常适合于流媒体解码的 RNN-T损失函数进行训练。
图5. RNN/Transformer Transducer 架构
RNN-T是一种神经网络体系结构,可以通过RNN-T损失进行端到端训练,将输入序列(如音频特征向量)映射到目标序列。给定一个长度为T,x=(x_1,x_2,...,x_T)的实值向量的输入序列,RNN-T模型试图预测长度为U的标签y=(y_1,y_2,...,y_U)的目标序列。RNN-T模型在每一个时间步长给出了一个标签空间的概率分布,输出标签空间包括一个额外的空标签。RNN-T模型对所有可能的对齐都定义了一个条件分布P(z|x),其中:
z是长度为U的(z_i, t_i)对序列,(z_i, t_i)表示输出标签z_i和编码的t_i特征之间的对齐。标签z_i也可以是空白标签(空预测)。删除空白标签将得到实际的输出标签序列y,长度为U。可以在所有可能的对齐z上边缘P(z|x),以获得给定输入序列x的目标标签序列y的概率:
其中,Z(y, T)是标签序列长度为T的有效对齐的集合。对齐的概率P(z|x)可以分解为:
其中,label(z_1:(i−1))是z_1:(i−1)中的非空白标签序列。RNN-T架构通过音频编码器、标签编码器和联合网络参数化P(z|x)。编码器是两个神经网络,分别编码输入序列和目标输出序列。本文用transformer代替原来的LSTM编码器。
其中,每个线性函数是一个不同的单层前馈神经网络,AudioEncoder(x)是时间t_i时的音频编码器输出,LabelEncoder(labels(z1:(i−1)))是给定之前的非空白标签序列的标签编码器输出。其中,下面式子中前向变量α(t,u)定义为在时间t处结束的所有路径和在标记位置u处结束的所有路径的概率之和。然后,使用前向算法来计算最后一个α变量α(T,U),模型的训练损失是等式中定义的负对数概率的和:
其中,T_i和U_i分别为第i个训练示例的输入序列和输出目标标签序列的长度。
Transformer由多个相同层的堆栈组成。每一层有两个子层,一个多头注意力层和一个前馈层。多头注意力层首先应用LayerNorm,然后为所有的头投影输入到q、k、v。注意力机制对不同注意力头分别应用。连接所有头部的权重平均值并传递到一个密集层。然后在密集层的归一化输入和输出上使用残差连接,形成多头注意力子层的最终输出(LayerNorm(x) + AttentionLayer(LayerNorm(x)))。此外,还对密集层的输出施加dropout,以防止过拟合。前馈子层首先在输入上应用LayerNorm,然后应用两个密集层。使用ReLu作为第一个致密层的激活。再次,dropout到两个密集层进行正则化,并应用一个归一化输入和第二层密集层(LayerNorm(x) + FeedForwardLayer(LayerNorm(x))输出的残差连接)。
图6. Transformer encoder架构
此外,为了建模顺序,本文使用了相对位置编码,可以通过相对位置编码将复杂性从O(t2)降低到O(t)。为了解决延迟随着时间的推移而增长的问题,将模型限制在一个移动的状态窗口W上,使一步推理复杂度为常数。
当前 SOTA!平台收录 Transfomer-Transducer 共 1 个模型实现资源。
项目 | SOTA!平台项目详情页 |
---|---|
Transfomer-Transducer | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/transfomer-transducer |
5、 Conformer
应用于ASR领域,Transformer和CNN的模型显示出较好的结果,且优于RNN。Transformer模型擅长捕获基于内容的全局交互,而CNN有效利用局部特征。这项工作通过研究如何以参数高效的方式将卷积神经网络和Transformer组合起来,来建模音频序列的局部和全局依存,从而充分利用两者优势。为此,本文提出了用于语音识别的卷积增强的Transformer,称为Conformer。Conformer主要的改进点在于Transformer在提取长序列依赖的时候更有效,而卷积则擅长提取局部特征,因此将卷积应用于Transformer的Encoder层,同时提升模型在长期序列和局部特征上的效果。
Conformer模型在输入的时候,首先通过一个卷积网络进行下采样,然后接上一系列的conformer模块,基本结构如下:
图7 Conformer编码器模型结构。Conformer由两个 macaron-like feed-forward 层组成,带有half-step残差连接,夹在多头自注意力和卷积模块中,之后是一个后置的分层模型
conformer模块包含以下几个部分:(1)Feedforward module;(2)Multi-head self attention Module;(3)Convolution Module。其中两个Feedforward输出都乘以了1/2。
Multi-head self attention Module。首先应用了一个来自于Transformer-XL的multi-headed self-attention (MHSA),具体来说是一个相对正弦位置编码(relative sinusoidal positional encoding),它能让self-attention模块在变长输入上有更好表现,所得到的编码器对语音长度的变化具有更强的鲁棒性。
图8 Multi-Headed self-attention模块
Convolution Module。对于Convolution Module来说,使用了pre-norm残差,point-wise卷积和门控线性单元(Gated Linear Unit,GLU)。如下图所示:
图9 卷积模块。卷积模块包含一个扩展系数为2的pointwise卷积,用GLU激活层投射通道的数量,然后是一个一维深度卷积。一维深度卷积之后是一个Batchnorm,然后是一个Swish激活层
Feedforward module。遵循pre-norm residual units,使用具有残差单元的层归一化,并在第一个线性层的输入前也应用层归一化。还应用Swish激活和dropout,这有助于正则化网络。图28示出了前馈(FFN)模块。
图10 Feed forward 模块。第一个线性层使用4的扩展因子,第二个线性层将其投影回模型维度。我们在前馈模块中使用swish激活和预范数剩余单元
该工作提出将Transformer block中的原始前馈层替换为两个half-step前馈层,一个在注意力层之前,一个在其后。在前馈(FFN)模块中使用half-step残差权重。第个二前馈模块之后紧接一个final layernorm层。因此,给定一个输入x_i和一个Conformer block i,块的输出y_i是:
其中,FFN指的是前馈模块,MHSA是指多头自注意力模块,CONV指的是如前所述的卷积模块。
当前 SOTA!平台收录 Conformer 共 3 个模型实现资源。
项目 | SOTA!平台项目详情页 |
---|---|
Conformer | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/conformer-l |
前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及API等资源。
网页端访问:在浏览器地址栏输入新版站点地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。
移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID 「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。
微信扫码关注该文公众号作者