毕业论文
您现在的位置: 语言识别 >> 语言识别前景 >> 正文 >> 正文

从声学模型算法总结2016年语音识别的重

来源:语言识别 时间:2022/9/17
白癜风精细化治疗 https://m-mip.39.net/news/mipso_5778256.html

雷锋网按:在过去的一年中,语音识别再次取得非常大的突破。IBM、微软等多家机构相继推出了自己的DeepCNN模型,提升了语音识别的准确率;Residual/Highway网络的提出使我们可以把神经网络训练的更加深。

而诸如CTC、LowFrameRate、Chain模型等粗粒度建模单元技术使得语音识别准确率得到提升的同时,解码速度也可以大大加快。

本期雷锋网硬创公开课特邀供职于阿里巴巴iDST的语音专家薛少飞博士,从学术的角度回顾过去一段时间里语音识别技术的发展状况。

嘉宾介绍:

薛少飞,阿里巴巴iDST语音识别专家,中国科学技术大学博士。现负责阿里声学模型研究与应用:包括语音识别声学建模和深度学习在业务场景中的应用。博士期间的研究方向为语音识别说话人自适应,提出基于SpeakerCode的模型域自适应方法,在语音相关的会议和期刊上发表论文十余篇。

本期雷锋网硬创公开课的分享主要包括三大部分:

深度神经网络声学模型发展回顾:简单回顾深度神经网络技术在语音识别声学模型中的应用历史;前沿声学模型技术进展:介绍近期几个比较有意思的声学模型技术进展,包括DeepCNN技术、Residual/Highway网络技术和粗粒度建模单元技术。当然这里并没有把所有的新技术进展都囊括进来,比如Attention技术。只是以这三条线路为例看看语音识别声学模型技术的进展和未来的发展趋势。介绍绍阿里巴巴的语音识别声学模型技术。

一、深度神经网络声学模型发展回顾

回顾语音识别技术的发展历史可以看到,自从上世纪90年代语音识别声学模型的区分性训练准则和模型自适应方法被提出以后,在很长一段内语音识别的发展是比较缓慢的,语音识别错误率的那条线一直没有明显的下降。直到年Hinton提出深度置信网络(DBN),促使了深度神经网络(DNN)研究的复苏。

年,Hinton将DNN应用于语音的声学建模,在TIMIT上获得了当时最好的结果。年底,微软研究院的俞栋、邓力两位老师又把DNN技术应用在了大词汇量连续语音识别任务上,大大降低了语音识别错误率。从此以后基于DNN声学模型技术的研究变得异常火热。微软去年10月发布的Switchboard语音识别测试中,更是取得了5.9%的词错误率,第一次实现了和人类一样的识别水平,这是一个历史性突破。

那么什么是DNN的?其实标准的DNN一点也不神秘,它和传统的人工神经(ANN)在结构上并没有本质的区别,只是ANN通常只包含一个隐层,而DNN则是通常包含至少3层以上的隐层,通过增加隐层数量来进行多层的非线性变换,大大的提升了模型的建模能力。

这是基于DNN的语音识别系统框架,相比传统的基于GMM-HMM的语音识别系统,其最大的改变是采用DNN替换GMM模型对语音的观察概率进行建模。

相比传统GMM模型我觉得有两点是非常重要的:

1.使用DNN不需要对语音数据分布进行假设。2.DNN的输入可以是将相邻语音帧拼接形成的包含时序结构信息的矢量。

当时训练DNN的普遍做法是先进行无监督的预训练,而后进行有监督的调整,后来人们发现当数据量非常大的时候无监督的预训练并不是必要的,当然这是后话了。

促使DNN的研究在那时重新兴起还有一个非常重要,并且我个人认为是最核心的因素,就是计算能力的提升。

以前要在CPU上训练DNN是非常慢的,做一个实验可能需要好几周甚至几个月,这是不能忍受的,随着GPU的出现这种情况发生了变化,GPU非常适合对矩阵运算进行加速,而DNN的训练最终都可以被拆解成对矩阵的操作,两者天然和谐。

而今随着GPU技术的不断发展和进步,我们能够训练数据量更大、网络更深、结构更复杂的模型,这才有了深度神经网络技术的迅速发展。

LSTM模型相信大家都不陌生,它一种特殊的循环神经网络(RNN)。语音识别本来就是一个时序建模问题,所以非常适合用RNN来进行建模。

但是简单的RNN受限于梯度爆炸和梯度消散问题,比较难以训练。而LSTM通过输入门、输出门和遗忘门可以更好的控制信息的流动和传递,具有长短时记忆能力,并在一定程度上缓解RNN的梯度消散和梯度爆炸问题。当然它也有不足之处,计算复杂度相比DNN大幅增加,并且由于递归连接的存在难以很好的并行。

BLSTM进一步提升了该类模型的建模能力,相比LSTM还考虑了反向时序信息的影响,也即“未来”对“现在”的影响,这在语音识别中也是非常重要的。

当然这种能力的代价就是模型计算复杂度进一步加大,并且通常需要整句进行训练:GPU显存消耗增大-并行度降低-模型训练更慢,另外在实际应用中还存在实时性问题。

CTC技术在过去的一段时间内也非常的火热,首先要说明的是CTC并不是模型的变化,而是优化的目标函数发生了改变,DNN、LSTM、CNN都可以和CTC相结合。

传统的深度神经网络声学模型的训练过程需要先对训练数据文本序列做Alignment得到分类的“硬判决”,之后以这种“硬判决”的分类为目标训练神经网络,网络优化的目标并不是最终要识别的结果。和传统的深度神经网络声学模型相比CTC的优化目标是一种所见即所得的优化目标,你要训练的目标就是你想要得到的结果。

传统的深度神经网络声学模型建模单元通常是state级的,而CTC的建模单元则是phone一级甚至是character的,state级反而不好,这种建模粒度的变化带来一个好处就是语音数据的冗余度增加了,相邻的语音帧本来就会很像并可能来自于同一个phone,那么现在就不需要这么多帧数据来建模一个句子。

通过拼帧降采样的方法可以降低数据的总帧数,在不影响识别准确率的情况下加快网络计算的速度。CTC的另一个非常重要的贡献是引入了“Blank”空白,空白的引入避免了易混淆帧的“强制”对齐。并且使得训练后的网络输出呈现“尖峰”状态,大段的Blank使得解码时通过beam的灵活调整,可以加快解码速度。

语音识别领域有非常多的开源工具,传统的语音识别开源工具像CMUSPHINX系统,是基于统计学原理开发的第一个“非特定人连续语音识别系统”;剑桥语音识别组推出的HTK工具包是GMM-HMM时代最为流行的语音识别工具,我刚接触语音识别就是从HTK开始的。

几年前推出的kaldi严格来讲并不十分“传统”,也是比较新并且在不断更新的开源工具,目前应该也是使用人数最多的语音识别开源工具。

近两年来许多深度学习开源框架涌现了出来,像Theano、CNTK、TensorFlow等,接下来我会对传统的语音识别工具和新的深度学习开源框架做一个对比,那么我就简单从几个我比较关心的维度来抛砖引玉看看kaldi、CNTK和TensorFlow的异同。

在拓扑基础方面,kaldi的nnet1和nnet2是以层设计为基础的,也即当你新增加一种神经网络层时需要自己定义它的结构,都有哪些变量,正向怎么算,反向误差怎么传播等等,并且过于复杂的连接方式很难支持。

而kaldi的nnet3和CNTK以及TensorFlow都是以图结构为基础的,通过配置文件实现对网络连接方式的定义,数据就像流水一样在你定义的网络图中游走,并自己实现误差的反向传播,它的优点是你可以专注网络拓扑结构的设计,而不用为网络计算的细节而费心,特别是误差的反向传播。

但这也带来一个问题,尤其是对初学者而言,会造成只是在设计网络长成什么样子,但并不清楚其中的实现细节。初学者最好多推推公式,对打下一个坚实的基础绝对有好处。

在语音识别其它工具支持方面,kaldi有全套的语音识别工具,包括解码器、建立决策树、GMM训练等等,而CNTK和TensorFlow在这方面并没有特别的支持,值得一提的是CNTK里提供了把kaldi数据处理成为CNTK数据格式的工具,使的用kaldi的人也可以很快上手CNTK,大家不妨试一下。

最后一个我比较关心的因素就是是否支持多机多卡,因为随着数据量和模型复杂度的不断攀升,仅仅用一个GPU很难满足模型训练的需要,必须使用多个GPU来加速训练。在这方面目前kaldi、CNTK、TensorFlow都已经支持。

最后我的建议是对于语音识别的初学者和低年级的研究生来讲,用kaldi入门学习算法和实践理论知识是比较好的选择,对于高年级研究生和具有一定年限的从业人员来讲,就看自己的喜好了,大家都是殊途同归,工具不是决定性的,数据、算法和模型才是。

二、前沿神学模型的技术进展

接下来介绍一下DeepCNN技术、Residual/Highway网络技术和粗粒度建模单元技术。去年有多家机构都推出了自己的DeepCNN模型,像IBM、微软等,我这里以IBM的DeepCNN为例,一起探讨一下到底哪些关键因素使得DeepCNN能够取得这么好的效果。

其实CNN被用在语音识别中已经不是一天两天了,在12、13年的时候OssamaAbdel-Hamid就将CNN引入了语音识别中。

那时候的卷积层和pooling层是交替出现的,并且卷积核的规模是比较大的,CNN的层数也不是特别的多,主要是用来对特征进行进一步的加工和处理,使其能更好的被用于DNN的分类。

后来随着CNN技术在图像领域的发展,情况慢慢出现了变化,人们在图像领域的研究中发现多层卷积之后再接pooling层,减小卷积核的尺寸可以使得我们能够训练更深的、效果更好的CNN模型。相应的方法被借鉴到了语音识别中,并根据语音识别的特点进行了进一步的优化。

IBM的研究人员在16年的ICASSP上发表文章,称使用3x3的小卷积核和多层卷积之后再接pooling的技术可以训练出14层(包含全连接)DeepCNN模型。

在Switchboard数据集上相比传统的CNN使用方法可以带来相对约10.6%WER下降。小尺寸的卷积核和多层卷积之后再接pooling的技术是使DeepCNN能够成功的关键点。

接下来介绍一下Residual/Highway网络以及它们目前在语音识别中的应用情况。

Residual网络会这么出名得益于MSRA的层让人“疯狂”的深度神经网络,凭借着它MSRA在ImageNet计算机识别挑战赛中以绝对优势获得图像分类、图像定位以及图像检测全部三个主要项目的冠军。

在公开的论文当中,作者详细解读了他们的“心路历程”。

研究人员发现在深度神经网训练过程中总是会出现”DegrationProblem”,即当网络深度达到一定程度以后,随着网络深度的增加trainingerror将不降反增,并且这不是由于过拟合引起的。

一般来讲我们认为一个浅层网络A叠加几层成为网络B,如果叠加的几层权重都是单位矩阵,那么B的性能至少不会比A差,但现实并非如此,网络自己很难学习到这种变换。

而相比与学习目标函数而言残差更容易学习,于是提出了一种residuallearning的结构,增加了一个越层的短连接。我的理解是这种短连接一方面避免了前向计算中非线性变换对数据的过度加工,另一方面在误差反向传播时通过直连通路,可以让误差有路径直接回传,抑制梯度消散。

大约稍早,Srivastava在arxiv上传了他的Highway网络工作,在Highway网络中一个隐层节点的输出不再单单是输入通过非线性变换后的数值,而是变成了通过Transformgate和Carrygate对非线性变换后的数值和输入进行加权得到的结果。Residual网络可以被看成是Highway网络的一种不额外增加参数量的特例。

Residual/Highway网络这么有效果,语音识别领域的研究人员当然也会

转载请注明:http://www.0431gb208.com/sjsbszl/1593.html