EeSen、FSMN、CLDNN、BERT、Transformer-XL…你都掌握了吗?一文总结语音识别必备经典模型(二)
机器之心 2023-02-12 12:44 发表于北京
以下文章来源于机器之心SOTA模型,作者机器之心SOTA模型
机器之心专栏
本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
本文将分 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
您正在阅读的是其中的第 2 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
第 1 期回顾:NNLM、RNNLM、LSTM-RNNLM、Bi-lstm、GPT-1…你都掌握了吗?一文总结语音识别必备经典模型(一)
本期收录模型速览
模型 | SOTA!模型资源站收录情况 | 模型来源论文 |
BERT | https://sota.jiqizhixin.com/project/bert-22 收录实现数量:6 支持框架:TensorFlow |
Bert: Pre-training of deep bidirectional transformers for language understanding |
Transformer-XL | https://sota.jiqizhixin.com/project/transformer-xl 收录实现数量:4 支持框架:PyTorch、TensorFlow |
Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context |
EeSen | https://sota.jiqizhixin.com/project/eesen 收录实现数量:2 支持框架:TensorFlow |
Lstm neural networks for language modeling |
FSMN | Feedforward sequential memory networks: A new structure to learn long-term dependency | |
CLDNN | https://sota.jiqizhixin.com/project/cldnn |
Convolutional, long short-term memory, fully connected deep neural networks |
highway LSTM | Highway long short-term memory RNNs for distant 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、 BERT
BERT的全称为Bidirectional Encoder Representation from Transformers,是一个预训练的语言表征模型。它采用新的masked language model(MLM),能生成深度的双向语言表征。预训练后,只需要添加一个额外的输出层进行fine-tune,就可以在各种各样的下游任务中取得state-of-the-art的表现。在这过程中并不需要对BERT进行任务特定的结构修改。BERT利用MLM进行预训练并且采用深层的双向Transformer组件来构建整个模型,生成能融合左右上下文信息的深层双向语言表征。如图1所示。
图1 BERT的整体预训练和微调程序。
除了输出层之外,在预训练和微调中使用了相同的架构。使用相同的预训练模型参数来初始化不同下游任务的模型。在微调过程中,所有的参数都要进行微调。[CLS]是添加在每个输入样本前面的特殊符号,[SEP]是一个特殊的分隔符(例如分隔问题/答案)
BERT输入。每一个token(图11中的粉色块)对应的表征(图11中的黄色块),单词字典是采用WordPiece算法来进行构建的。
表征由三部分组成的,分别是对应的token、分割和位置 embeddings。
BERT输出。C为分类token([CLS])对应最后一个Transformer的输出,[公式] 则代表其他token对应最后一个Transformer的输出。对于一些token级别的任务(如,序列标注和问答任务),就把[公式] 输入到额外的输出层中进行预测。对于一些句子级别的任务(如,自然语言推断和情感分类任务),就把C输入到额外的输出层中。
当前 SOTA!平台收录 BERT 共 6 个模型实现资源。
项目 | SOTA!平台项目详情页 |
BERT | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/bert-22 |
2、 Transformer-XL
Transformer-XL引入了segment-level 循环机制和positional编码框架。不仅可以捕捉长时依赖,还可以解决上下文断片问题 (fragmentation problem),还可以学到比RNNs长80%的依赖、比vanilla Transformers长450%的依赖。Transformer-XL在长短序列上都取得了更好的结果。与vanilla Transformer相比,Transformer-XL的另一个优势是它可以用于单词级和字符级的语言建模。
与vanilla Transformer的基本思路一样,Transformer-XL仍然是使用分段的方式进行建模,但其与vanilla Transformer的本质不同是引入了段与段之间的循环机制,使得当前段在建模的时候能够利用之前段的信息来实现长期依赖性。如下图所示:
图2 segment为4的Vanilla模型的说明
在训练阶段,处理后面的段时,每个隐藏层都会接收两个输入:一个是该段的前面隐藏层的输出,与vanilla Transformer相同(上图的灰色线);另一个是前面段的隐藏层的输出(上图的绿色线),可以使模型创建长期依赖关系。拼接这两个输入,然后用于计算当前段的Key和Value矩阵。对于某个段的某一层的具体计算公式如下:
原则上只要GPU内存允许,该方法可以利用前面更多段的信息,测试阶段也可以获得更长的依赖。
Transformer考虑了序列的位置信息。在分段的情况下,如果仅仅对于每个段仍直接使用Transformer中的位置编码,即每个不同段在同一个位置上的表示使用相同的位置编码,就会出现问题。比如,第i−2段和第i−1段的第一个位置拥有相同的位置编码,但它们对于第i段的建模重要性显然并不相同(例如第i−2段中的第一个位置重要性可能要低一些)。因此,需要对这种位置进行区分。对于这个问题,Transformer-XL引入一种新的位置编码的方式,即根据词之间的相对距离而非像Transformer中的绝对位置进行编码。在Transformer中,第一层的计算查询qTi和键kj之间的attention分数的方式为:
在Transformer-XL中,对上述的attention计算方式进行了变换,转为相对位置的计算,而且不仅仅在第一层这么计算,在每一层都是这样计算:
结合上面两个创新点,将Transformer-XL模型的整体计算公式整理如下,这里考虑一个N层的只有一个注意力头的模型:
当前 SOTA!平台收录 Transformer-XL 共 4 个模型实现资源。
项目 | SOTA!平台项目详情页 |
Transformer-XL | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/transformer-xl |