基于改进型CLDNN结构的端到端语音识别方法与流程

文档序号:17686486发布日期:2019-05-17 20:40阅读:722来源:国知局
基于改进型CLDNN结构的端到端语音识别方法与流程

本发明属于语音识别领域,特别是一种基于深度学习的语音识别方法。



背景技术:

自动语音识别技术一直在人工智能领域有着举足轻重的地位。以hmm-gmm模型为代表的传统语音识别技术曾一直作为主流,统治了语音识别领域长达数十年。近年来,得益于深度学习的突破,自动语音识别技术也处于飞速发展的阶段。目前,以深度学习为基础的端到端语音识别系统在在学术界中的流行程度上已经超越了传统语音识别系统,并且开始逐步代替传统语音识别系统运用于实际生产。

从20世纪80年代开始,基于混合高斯模型/隐马尔可夫模型(gaussianmixturemodel/hiddenmarkovmodel,gmm/hmm)的声学模型就被广泛应用,hmm用于处理语音在时序上的变化,gmm用于完成声学输入到隐马尔科夫状态间的映射。近几年,基于深度神经网络(deepneuralnetwork,dnn)的声学模型被证实在大词汇量的语音识别任务中拥有更好的表现,大量神经元的活动在模拟声学特征上表现更为优秀。由于dnn完全链接的性质,导致其不能充分利用语音特征空间中的结构局部性。而卷积神经网络(convolutionalnerualnetwork,cnn)可以利用其平移不变性来克服语音信号本身的多样性,并且可以很好地解释语音特征空间中的变化。递归神经网络(recurrentneuralnetwork,rnn)通过递归来挖掘序列中的上下文相关信息,在一定程度上克服了dnn的缺点。但是rnn在训练中很容易出现梯度消失的问题,且难以记忆长时信息。长短期记忆单元(longshort-termmemory,lstm)通过特定的门控单元使得当前时刻的误差能够保存下来并选择性传给特定的单元,从而避免了梯度消失的问题。连接时序分类算法(connectionisttemporalclassifier,ctc)由grave等在2006年提出,可应用于端到端语音识别系统,刻画语音特征序列和音素序列的关联性,并且不必依赖人工对齐特征与音素。

目前国内外相关科技公司都在不断研发自己的端到端语音识别模型。百度研究人员2015年发表了deepspeech,2016年发表了deepspeech2,两者利用cldnn和ctc结合的方式建立语音识别模型,达到优异性能。科大讯飞研究团队在2016年提出了深度全序列卷积神经网络(df-cnn,deepfullyconvolutionalneuralnetwork)结构,利用大量卷积层和池化层的组合,对整句语音进行建模,大大增强了cnn的表达能力。dfcnn通过累积非常多的这种卷积池化层对,可以看到非常长的历史和未来信息,这就保证了dfcnn可以出色地表达语音的长时相关性,相比rnn网络结构在鲁棒性上更加出色。ibm的研究人员在2016年icassp上发表的文章称,使用3x3的卷积核和多层卷积之后再接池化层的技术可以训练出14层(包含全连接)deepcnn模型。该模型在switchboard数据集上相比传统cnn使用方法的模型可以带来相对约10.6%的wer下降。msra团队2015年提出了残差网络,解决了随着模型的深度加深出现的“退化”问题。残差网络后来也被应用到语音识别模型上,被证实有良好的效果。google研究团队2017年在icassp会议中展示了一种由network-in-network(nin)、batchnormalization(bn)和convolutionallstm(convlstm)结合的声学模型结构。没有语言模型的情况下,该模型在wsj语音识别任务中达到了10.5%的wer。

cldnn由于其简单的构造和优异的性能,一直是端到端语音识别模型中一种比较流行的结构。但普通cldnn模型的深度不够,提取的特征不够丰富,建立的语音识别模型不能达到最好的效果。其模型中的全连接长短时记忆模型(fc-lstm)无法保持语音特征空间的结构局部性,并且容易过拟合。



技术实现要素:

本发明旨在解决以上现有技术的问题。提出了一种可以有效地解决传统cldnn中,lstm容易导致过拟合的问题,克服增加模型深度带来的梯度消失、梯度爆炸和“退化”问题的基于改进型cldnn结构的端到端语音识别方法。本发明的技术方案如下:

一种基于改进型cldnn结构的端到端语音识别方法,其包括以下步骤:

s1、获取语音数据集并进行划分,将语音数据集划分为训练集、交叉验证集和测试集;

s2、对所有语音数据进行预处理,得到语音信号的梅尔频率倒谱系数mfcc;

s3、构建改进型cldnn网络模型,包括由卷积神经网络cnn构成的语音特征抽象化处理部分、处理语音信号时序信息的残差卷积长短时记忆模型和将处理后的特征空间映射到输出层的深度神经网络dnn;

s4、构建语音识别损失函数,损失函数使用ctcloss;

s5、用训练集对步骤s3的改进型cldnn模型进行训练,利用adam算子优化步骤s4的目标函数;

s6、对步骤s5训练后的模型进项交叉验证,调整模型的超参数,得到最终网络模型。

进一步的,所述步骤2的预处理步骤包括:预加重、分帧、加窗、快速傅里叶变换、mel滤波及离散余弦变换。

进一步的,所述步骤s3中的残差卷积长短时记忆模型具体为:对全连接长短时记忆模型中的矩阵乘积替换为卷积运算得到卷积长短时记忆模型,对该模型使用残差网络结构得到残差卷积长短时记忆模型。

进一步的,所述残差网络结构用来构建深层网络,通过跳跃连接skipconnection直接连接浅层网络与深层网络,从而使得梯度能更好地传递到浅层,残差网络由多个残差块构成,由多个残差块组成的深度残差网络结构来代替传统cldnn模型中的多层lstm(长短时记忆模型)结构。

进一步的,所述步骤s4损失函数,损失函数使用ctcloss,具体包括:

假设标签元素表l的大小为k,给定输入序列x=(x1,x2,...,xt),对应输出标签序列y=(y1,y2,...,yu),ctc的任务是在给定的输入序列下,将损失值反馈给神经网络,通过调整神经网络内部参数使输出标签的对数概率最大化,即max(lnp(y|x)),ctc(连接时序分类)还引入了空标签blank来表示不属于标签元素表l的映射;

将最后一层dnn后的softmax层输出作为ctc的输入,softmax输出包含k+1个节点映射到l∪{blank}中的每个元素,整个ctc路径概率如下式所示:

其中zt为在t时刻,softmax得到输出向量,代表第k个标签对应的后验概率,为了解决softmax输出和标签序列之间的对齐问题,引入输入序列在帧层面上一一对应的ctc路径p=(p1,p2,...,pt),将标签序列y通过映射ф对应到ctc路径p上,由于此映射是一对多的映射,所以一个标签可以对应多个ctc路径,所以标签y的概率由所有对应此标签的ctc路径概率和表示为下式:

ctc的损失函数而被定义为每个训练样本正确标记的负对数之和,如下式:

进一步的,所述步骤s5利用adam算子优化步骤s4的目标函数;

计算t时间步的梯度:

首先,计算梯度的指数移动平均数,m0初始化为0。综合考虑之前时间步的梯度动量。β1系数为指数衰减率,控制权重分配(动量与当前梯度),通常取接近于1的值,默认为0.9

mt=β1mt-1+(1-β1)gt

第二,计算梯度平方的指数移动平均数,v0初始化为0。β2系数为指数衰减率,控制之前的梯度平方的影响情况,默认为0.999。

第三,由于m0初始化为0,会导致mt偏向于0,尤其在训练初期阶段。所以,此处需要对梯度均值mt进行偏差纠正,降低偏差对训练初期的影响。

第四,由于v0初始化为0导致训练初始阶段vt偏向0,对其进行纠正。

第五,更新参数,初始的学习率α乘以梯度均值与梯度方差的平方根之比。其中默认学习率α=0.001,ε=10^-8。

进一步的,所述步骤s6对步骤s5训练后的模型进行交叉验证,调整模型的超参数,得到最终网络模型,具体包括:

交叉验证步骤:

1、初始化权值,取权值为-0.5至0.5之间的随机数。

2、将学习样本空间c分为n份。

3、从学习数据文件中依规定顺序取出n-1份作为训练数据样本。剩下的第n份作为验证数据样本。完成步骤4到步骤7。

4、从训练数据样本中读入一个样本开始训练。

5、计算本样本输出误差总量度ep。修改两层权值直到ep<(为规定的误差量度),读入下一个训练样本。

6、直到n-1份训练样本中所有样本学习结束,产生一组权值,用此组权值计算验证样本,计算验证样本的验证成功率rate=(满足ep<的验证样本个数)/(总的验证样本个数)

7、如果验证样本成功率rate>rate(rate为规定的成功率),则结束此轮的学习。否则学习所有的验证样本。

超参数:

学习率:学习率是指在优化算法中更新网络权重的幅度大小。不同的优化算法决定不同的学习率。当学习率过大则可能导致模型不收敛,损失函数不断上下震荡;学习率过小则导致模型收敛速度偏慢,需要更长的时间训练。通常取值为0.01、0.001、0.0001。

批次大小:批次大小是每一次训练神经网络送入模型的样本数,在卷积神经网络中,大批次通常可使网络更快收敛,但由于内存资源的限制,批次过大可能会导致内存不够用或程序内核崩溃。通常取值为16、32、64、128。

迭代次数:迭代次数是指整个训练集输入到神经网络进行训练的次数,当验证错误率和训练错误率相差较小时,可认为当前迭代次数合适;当验证错误率先变小后变大时则说明迭代次数过大了,需要减小迭代次数,否则容易出现过拟合。

本发明的优点及有益效果如下:

本发明引入卷积长短时记忆模型(convolutionallongshort-termmemory,convlstm)来代替普通cldnn模型中的fc-lstm,改善了模型无法保持空间结构局部性和容易过拟合的问题。为了加深模型深度而不发生“退化”、梯度消失和梯度爆炸等问题,本发明还引入了残差网络(residualnetwork,resnet)。为了堆叠多层convlstm提高模型的性能而又不发生梯度消失、梯度爆炸和“退化”问题,本发明融合了convlstm和残差网络结构,残差convlstm块结构如图1所示。基于以上结构,本发明对传统cldnn结构提出了改进。针对传统cldnn模型中的全连接长短时记忆模型无法保持特征空间的结构局部性,并且容易过拟合的问题,使用由多个残差convlstm块组成的深度残差convlstm网络结构来代替传统cldnn模型中的多层lstm结构,使模型在处理语音特征中的时间关系上有更好的表现,并且不容易过拟合。改进后的cnn-resconvlstm-dnn模型能够通过叠加更多的残差convlstm来建立更深的模型而不发生梯度消失、梯度爆炸和“退化”问题,能在语音识别任务中发挥出更好的性能,其结构如图2所示。

附图说明

图1是本发明提供优选实施例残差卷积长短时记忆模型块结构;

图2为本发明提出的改进型cldnn模型结构;

图3为本发明的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。

本发明解决上述技术问题的技术方案是:

s1、对语音数据集进行划分,将数据集划分为训练集、交叉验证集和测试集;

s2、对所有数据进行预处理,进而得到语音信号的梅尔频率倒谱系数(mfcc),预处理步骤为:

预加重:对于因信号通过高通滤波器h(z)=1-μz-1

分帧:将整段语音信号分为每帧30ms,帧移10ms的小段。

加窗:为每一帧信号加汉明窗

s′(n)=s(n)*w(n)

快速傅里叶变换:每帧经过快速傅里叶变换以得到在频谱上的能量分布。

mel滤波:将能量谱通过一组mel滤波器组,单脚滤波器的频率响应定义为:

其中m为三角滤波器中心频率。

计算每个滤波器组输出的对数能量:

离散余弦变换:

s3、构建改进型cldnn网络模型,模型包括由卷积神经网络(cnn)构成的语音特征抽象化处理部分、处理语音信号时序信息的残差卷积长短时记忆模型(resconvlstm)部分和将处理后的特征空间映射到输出层的深度神经网络(dnn)部分;

卷积长短时记忆模型,是完全连接的长短时记忆模型的扩展,它在输入到状态和状态到状态转换中均具有卷积结构,这种结构相比普通cnn更能表现特征的时间关系,而相比全连接lstm更不容易过拟合,如下式:

it=σ(wxi*xt+whi*ht-1+bi)

ft=σ(wxf*xt+whf*ht-1+bi)

ot=σ(wxo*xt+who*ht-1+bo)

σ是sigmoid激活函数,it,ft,ot,ct,ht分别表示t时刻的输入门、遗忘门、输出门、单元输入激活和单元输出向量,表示向量的元素乘积,w表示连接不同门之间的权重矩阵,b代表相应的偏置向量。

残差网络结构来构建深层网络,通过跳跃连接(skipconnection)直接连接浅层网络与深层网络,从而使得梯度能更好地传递到浅层。残差网络由多个残差块(residualblock)构成,设残差块的输入为xl,输出为xl+1,则残差块的结构可表示为:

xl+1=xl+f(xl,wl)(9)

f(xl,wl)=wlσ(wl-1xl-1)(10)

其中σ为激活函数,所以,对于任意xl,有:

假设损失函数c,可以得到:

其中,保证了信息能够传回任意层xl,保证了网络不会出现梯度消失的现象。

为了堆叠多层卷积长短时记忆模型提高模型的性能而又不发生梯度消失、梯度爆炸和“退化”问题,本发明融合了卷积长短时记忆模型和残差网络结构,残差卷积长短时记忆模型块结构如图1所示。

基于以上结构,本发明对传统cldnn结构提出了改进。针对传统cldnn模型中的全连接长短时记忆模型无法保持特征空间的结构局部性,并且容易过拟合的问题,使用由多个残差convlstm块组成的深度残差convlstm网络结构来代替传统cldnn模型中的多层lstm结构,使模型在处理语音特征中的时间关系上有更好的表现,并且不容易过拟合。改进后的cnn-resconvlstm-dnn模型能够通过叠加更多的残差convlstm来建立更深的模型而不发生梯度消失、梯度爆炸和“退化”问题,能在语音识别任务中发挥出更好的性能,其结构如图2所示。

s4、构建目标函数,即语音识别单词错误率(wer%),损失函数使用ctcloss;

假设标签元素表l的大小为k。给定输入序列x=(x1,x2,...,xt),对应输出标签序列y=(y1,y2,...,yu)。ctc的任务是在给定的输入序列下,将损失值反馈给神经网络,通过调整神经网络内部参数使输出标签的对数概率最大化,即max(lnp(y|x))。ctc还引入了空标签blank来表示不属于标签元素表l的映射,比如停顿、咳嗽声等。

将最后一层dnn后的softmax层输出作为ctc的输入,softmax输出包含k+1个节点映射到l∪{blank}中的每个元素。整个ctc路径概率如下式所示:

其中zt为在t时刻,softmax得到输出向量,代表第k个标签对应的后验概率。为了解决softmax输出和标签序列之间的对齐问题,引入输入序列在帧层面上一一对应的ctc路径p=(p1,p2,...,pt)。将标签序列y通过映射ф对应到ctc路径p上,由于此映射是一对多的映射,所以一个标签可以对应多个ctc路径。所以标签y的概率由所有对应此标签的ctc路径概率和表示为下式:

ctc的损失函数而被定义为每个训练样本正确标记的负对数之和,如下式:

s5、用训练集对模型进行训练,利用adam算子优化目标函数;

s6、使用验证集对训练后的模型进项交叉验证,调整模型的超参数,得到最终网络模型;

以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1